Chilkat Online Tools

Ruby / GP-API Collection / AUT_1.1 3DS2 Initiate

Back to Collection Items

require 'chilkat'

# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

http = Chilkat::CkHttp.new()

# Use this online tool to generate code from sample JSON: Generate Code to Create JSON

# The following JSON is sent in the request body.

# {
#   "three_ds": {
#     "source": "BROWSER",
#     "preference": "NO_PREFERENCE"
#   },
#   "account_name": "{{acc_name}}",
#   "channel": "CNP",
#   "amount": "5",
#   "currency": "EUR",
#   "country": "US",
#   "method_url_completion_status": "YES",
#   "payment_method": {
#     "id": "{{pmt_id}}"
#   },
#   "order": {
#     "time_created_reference": "2019-04-26T10:19:32.552327Z",
#     "amount": "1001",
#     "currency": "EUR",
#     "reference": "3400dd37-101d-4940-be15-3c963b6109b3",
#     "address_match_indicator": "false",
#     "shipping_address": {
#       "line1": "Apartment 852",
#       "line2": "Complex 741",
#       "line3": "House 963",
#       "city": "Chicago",
#       "postal_code": "50001",
#       "state": "IL",
#       "country": "840"
#     },
#     "gift_card_count": "01",
#     "gift_card_currency": "EUR",
#     "gift_card_amount": "25000",
#     "delivery_email": "james.mason@example.com",
#     "delivery_timeframe": "ELECTRONIC_DELIVERY",
#     "shipping_method": "ANOTHER_VERIFIED_ADDRESS",
#     "shipping_name_matches_cardholder_name": "true",
#     "preorder_indicator": "MERCHANDISE_AVAILABLE",
#     "preorder_availability_date:": "2019-04-18",
#     "reorder_indicator": "FIRST_TIME_ORDER",
#     "transaction_type": "GOODS_SERVICE_PURCHASE"
#   },
#   "payer": {
#     "reference": "6dcb24f5-74a0-4da3-98da-4f0aa0e88db3",
#     "account_age": "LESS_THAN_THIRTY_DAYS",
#     "account_creation_date": "2019-01-10",
#     "account_change_date": "2019-01-28",
#     "account_change_indicator": "THIS_TRANSACTION",
#     "account_password_change_date": "2019-01-15",
#     "account_password_change_indicator": "LESS_THAN_THIRTY_DAYS",
#     "home_phone": {
#       "country_code": "44",
#       "subscriber_number": "123456789"
#     },
#     "work_phone": {
#       "country_code": "44",
#       "subscriber_number": "1801555888"
#     },
#     "payment_account_creation_date": "2019-01-01",
#     "payment_account_age_indicator": "LESS_THAN_THIRTY_DAYS",
#     "suspicious_account_activity": "NO_SUSPICIOUS_ACTIVITY",
#     "purchases_last_6months_count": "03",
#     "transactions_last_24hours_count": "01",
#     "transaction_last_year_count": "05",
#     "provision_attempt_last_24hours_count": "01",
#     "shipping_address_time_created_reference": "2019-01-28",
#     "shipping_address_creation_indicator": "THIS_TRANSACTION"
#   },
#   "payer_prior_three_ds_authentication_data": {
#     "authentication_method": "FRICTIONLESS_AUTHENTICATION",
#     "acs_transaction_reference": "26c3f619-39a4-4040-bf1f-6fd433e6d615",
#     "authentication_timestamp": "2020-07-28T10:26:49.712Z",
#     "authentication_data": "secret123"
#   },
#   "recurring_authorization_data": {
#     "max_number_of_instalments": "05",
#     "frequency": "25",
#     "expiry_date": "2019-08-25"
#   },
#   "payer_login_data": {
#     "authentication_data": "secret123",
#     "authentication_timestamp": "2020-07-28T10:26:49.712Z",
#     "authentication_type": "MERCHANT_SYSTEM_AUTHENTICATION"
#   },
#   "browser_data": {
#     "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
#     "color_depth": "TWENTY_FOUR_BITS",
#     "ip": "123.123.123.123",
#     "java_enabled": "true",
#     "javascript_enabled": "true",
#     "language": "en-US",
#     "screen_height": "1080",
#     "screen_width": "1920",
#     "challenge_window_size": "FULL_SCREEN",
#     "timezone": "0",
#     "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
#   },
#   "merchant_contact_url": "https://enp4qhvjseljg.x.pipedream.net/"
# }

json = Chilkat::CkJsonObject.new()
json.UpdateString("three_ds.source","BROWSER")
json.UpdateString("three_ds.preference","NO_PREFERENCE")
json.UpdateString("account_name","{{acc_name}}")
json.UpdateString("channel","CNP")
json.UpdateString("amount","5")
json.UpdateString("currency","EUR")
json.UpdateString("country","US")
json.UpdateString("method_url_completion_status","YES")
json.UpdateString("payment_method.id","{{pmt_id}}")
json.UpdateString("order.time_created_reference","2019-04-26T10:19:32.552327Z")
json.UpdateString("order.amount","1001")
json.UpdateString("order.currency","EUR")
json.UpdateString("order.reference","3400dd37-101d-4940-be15-3c963b6109b3")
json.UpdateString("order.address_match_indicator","false")
json.UpdateString("order.shipping_address.line1","Apartment 852")
json.UpdateString("order.shipping_address.line2","Complex 741")
json.UpdateString("order.shipping_address.line3","House 963")
json.UpdateString("order.shipping_address.city","Chicago")
json.UpdateString("order.shipping_address.postal_code","50001")
json.UpdateString("order.shipping_address.state","IL")
json.UpdateString("order.shipping_address.country","840")
json.UpdateString("order.gift_card_count","01")
json.UpdateString("order.gift_card_currency","EUR")
json.UpdateString("order.gift_card_amount","25000")
json.UpdateString("order.delivery_email","james.mason@example.com")
json.UpdateString("order.delivery_timeframe","ELECTRONIC_DELIVERY")
json.UpdateString("order.shipping_method","ANOTHER_VERIFIED_ADDRESS")
json.UpdateString("order.shipping_name_matches_cardholder_name","true")
json.UpdateString("order.preorder_indicator","MERCHANDISE_AVAILABLE")
json.UpdateString("order.preorder_availability_date:","2019-04-18")
json.UpdateString("order.reorder_indicator","FIRST_TIME_ORDER")
json.UpdateString("order.transaction_type","GOODS_SERVICE_PURCHASE")
json.UpdateString("payer.reference","6dcb24f5-74a0-4da3-98da-4f0aa0e88db3")
json.UpdateString("payer.account_age","LESS_THAN_THIRTY_DAYS")
json.UpdateString("payer.account_creation_date","2019-01-10")
json.UpdateString("payer.account_change_date","2019-01-28")
json.UpdateString("payer.account_change_indicator","THIS_TRANSACTION")
json.UpdateString("payer.account_password_change_date","2019-01-15")
json.UpdateString("payer.account_password_change_indicator","LESS_THAN_THIRTY_DAYS")
json.UpdateString("payer.home_phone.country_code","44")
json.UpdateString("payer.home_phone.subscriber_number","123456789")
json.UpdateString("payer.work_phone.country_code","44")
json.UpdateString("payer.work_phone.subscriber_number","1801555888")
json.UpdateString("payer.payment_account_creation_date","2019-01-01")
json.UpdateString("payer.payment_account_age_indicator","LESS_THAN_THIRTY_DAYS")
json.UpdateString("payer.suspicious_account_activity","NO_SUSPICIOUS_ACTIVITY")
json.UpdateString("payer.purchases_last_6months_count","03")
json.UpdateString("payer.transactions_last_24hours_count","01")
json.UpdateString("payer.transaction_last_year_count","05")
json.UpdateString("payer.provision_attempt_last_24hours_count","01")
json.UpdateString("payer.shipping_address_time_created_reference","2019-01-28")
json.UpdateString("payer.shipping_address_creation_indicator","THIS_TRANSACTION")
json.UpdateString("payer_prior_three_ds_authentication_data.authentication_method","FRICTIONLESS_AUTHENTICATION")
json.UpdateString("payer_prior_three_ds_authentication_data.acs_transaction_reference","26c3f619-39a4-4040-bf1f-6fd433e6d615")
json.UpdateString("payer_prior_three_ds_authentication_data.authentication_timestamp","2020-07-28T10:26:49.712Z")
json.UpdateString("payer_prior_three_ds_authentication_data.authentication_data","secret123")
json.UpdateString("recurring_authorization_data.max_number_of_instalments","05")
json.UpdateString("recurring_authorization_data.frequency","25")
json.UpdateString("recurring_authorization_data.expiry_date","2019-08-25")
json.UpdateString("payer_login_data.authentication_data","secret123")
json.UpdateString("payer_login_data.authentication_timestamp","2020-07-28T10:26:49.712Z")
json.UpdateString("payer_login_data.authentication_type","MERCHANT_SYSTEM_AUTHENTICATION")
json.UpdateString("browser_data.accept_header","text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8")
json.UpdateString("browser_data.color_depth","TWENTY_FOUR_BITS")
json.UpdateString("browser_data.ip","123.123.123.123")
json.UpdateString("browser_data.java_enabled","true")
json.UpdateString("browser_data.javascript_enabled","true")
json.UpdateString("browser_data.language","en-US")
json.UpdateString("browser_data.screen_height","1080")
json.UpdateString("browser_data.screen_width","1920")
json.UpdateString("browser_data.challenge_window_size","FULL_SCREEN")
json.UpdateString("browser_data.timezone","0")
json.UpdateString("browser_data.user_agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36")
json.UpdateString("merchant_contact_url","https://enp4qhvjseljg.x.pipedream.net/")

# Adds the "Authorization: Bearer <access_token>" header.
http.put_AuthToken("<access_token>")
http.SetRequestHeader("X-GP-Version","{{version}}")

# resp is a CkHttpResponse
resp = http.PostJson3("https://{{url}}/ucp/authentications/{{aut_id}}/initiate","application/json",json)
if (http.get_LastMethodSuccess() == false)
    print http.lastErrorText() + "\n";
    exit
end

print resp.get_StatusCode().to_s() + "\n";
print resp.bodyStr() + "\n";

Curl Command

curl -X POST
	-H "Authorization: Bearer <access_token>"
	-H "X-GP-Version: {{version}}"
	-d '{
    "three_ds": {
        "source": "BROWSER",
        "preference": "NO_PREFERENCE"
    },
    "account_name": "{{acc_name}}",
    "channel": "CNP",
    "amount": "5",
    "currency": "EUR",
    "country": "US",
    "method_url_completion_status": "YES",
    "payment_method": {
        "id": "{{pmt_id}}"
    },
    "order": {
        "time_created_reference": "2019-04-26T10:19:32.552327Z",
        "amount": "1001",
        "currency": "EUR",
        "reference": "3400dd37-101d-4940-be15-3c963b6109b3",
        "address_match_indicator": "false",
        "shipping_address": {
            "line1": "Apartment 852",
            "line2": "Complex 741",
            "line3": "House 963",
            "city": "Chicago",
            "postal_code": "50001",
            "state": "IL",
            "country": "840"
        },
        "gift_card_count": "01",
        "gift_card_currency": "EUR",
        "gift_card_amount": "25000",
        "delivery_email": "james.mason@example.com",
        "delivery_timeframe": "ELECTRONIC_DELIVERY",
        "shipping_method": "ANOTHER_VERIFIED_ADDRESS",
        "shipping_name_matches_cardholder_name": "true",
        "preorder_indicator": "MERCHANDISE_AVAILABLE",
        "preorder_availability_date:": "2019-04-18",
        "reorder_indicator": "FIRST_TIME_ORDER",
        "transaction_type": "GOODS_SERVICE_PURCHASE"
    },
    "payer": {
        "reference": "6dcb24f5-74a0-4da3-98da-4f0aa0e88db3",
        "account_age": "LESS_THAN_THIRTY_DAYS",
        "account_creation_date": "2019-01-10",
        "account_change_date": "2019-01-28",
        "account_change_indicator": "THIS_TRANSACTION",
        "account_password_change_date": "2019-01-15",
        "account_password_change_indicator": "LESS_THAN_THIRTY_DAYS",
        "home_phone": {
            "country_code": "44",
            "subscriber_number": "123456789"
        },
        "work_phone": {
            "country_code": "44",
            "subscriber_number": "1801555888"
        },
        "payment_account_creation_date": "2019-01-01",
        "payment_account_age_indicator": "LESS_THAN_THIRTY_DAYS",
        "suspicious_account_activity": "NO_SUSPICIOUS_ACTIVITY",
        "purchases_last_6months_count": "03",
        "transactions_last_24hours_count": "01",
        "transaction_last_year_count": "05",
        "provision_attempt_last_24hours_count": "01",
        "shipping_address_time_created_reference": "2019-01-28",
        "shipping_address_creation_indicator": "THIS_TRANSACTION"
    },
    "payer_prior_three_ds_authentication_data": {
        "authentication_method": "FRICTIONLESS_AUTHENTICATION",
        "acs_transaction_reference": "26c3f619-39a4-4040-bf1f-6fd433e6d615",
        "authentication_timestamp": "2020-07-28T10:26:49.712Z",
        "authentication_data": "secret123"
    },
    "recurring_authorization_data": {
        "max_number_of_instalments": "05",
        "frequency": "25",
        "expiry_date": "2019-08-25"
    },
    "payer_login_data": {
        "authentication_data": "secret123",
        "authentication_timestamp": "2020-07-28T10:26:49.712Z",
        "authentication_type": "MERCHANT_SYSTEM_AUTHENTICATION"
    },
    "browser_data": {
        "accept_header": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        "color_depth": "TWENTY_FOUR_BITS",
        "ip": "123.123.123.123",
        "java_enabled": "true",
        "javascript_enabled": "true",
        "language": "en-US",
        "screen_height": "1080",
        "screen_width": "1920",
        "challenge_window_size": "FULL_SCREEN",
        "timezone": "0",
        "user_agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36"
    },
    "merchant_contact_url": "https://enp4qhvjseljg.x.pipedream.net/"
}'
https://{{url}}/ucp/authentications/{{aut_id}}/initiate

Postman Collection Item JSON

{
  "name": "AUT_1.1 3DS2 Initiate",
  "event": [
    {
      "listen": "test",
      "script": {
        "exec": [
          "//Json Parse",
          "",
          "var jsonData = JSON.parse(responseBody);",
          "var creq = jsonData.three_ds.challenge_value; ",
          "var redirect_url = jsonData.three_ds.redirect_url; ",
          "",
          "//console.log(pareq);",
          "pm.test(\"set  html\",function(){",
          "    var template='<!DOCTYPE html> <html> <head> <title>Sample 3DSecure Page</title> </head> <body><form action='+redirect_url+' method=\"POST\">  <input type=\"hidden\" name=\"challenge_value\" value= '+creq+' /> <input type=\"submit\" value=\"Submit\"> </form> </body> </html>'     // save your html in the template and then     ",
          "    pm.visualizer.set(template);     // set that template to pm.visualizer",
          "})",
          ""
        ],
        "type": "text/javascript"
      }
    }
  ],
  "request": {
    "auth": {
      "type": "oauth2",
      "oauth2": [
        {
          "key": "accessToken",
          "value": "{{token}}",
          "type": "string"
        },
        {
          "key": "addTokenTo",
          "value": "header",
          "type": "string"
        }
      ]
    },
    "method": "POST",
    "header": [
      {
        "key": "X-GP-Version",
        "type": "text",
        "value": "{{version}}"
      }
    ],
    "body": {
      "mode": "raw",
      "raw": "{\n    \"three_ds\": {\n        \"source\": \"BROWSER\",\n        \"preference\": \"NO_PREFERENCE\"\n    },\n    \"account_name\": \"{{acc_name}}\",\n    \"channel\": \"CNP\",\n    \"amount\": \"5\",\n    \"currency\": \"EUR\",\n    \"country\": \"US\",\n    \"method_url_completion_status\": \"YES\",\n    \"payment_method\": {\n        \"id\": \"{{pmt_id}}\"\n    },\n    \"order\": {\n        \"time_created_reference\": \"2019-04-26T10:19:32.552327Z\",\n        \"amount\": \"1001\",\n        \"currency\": \"EUR\",\n        \"reference\": \"3400dd37-101d-4940-be15-3c963b6109b3\",\n        \"address_match_indicator\": \"false\",\n        \"shipping_address\": {\n            \"line1\": \"Apartment 852\",\n            \"line2\": \"Complex 741\",\n            \"line3\": \"House 963\",\n            \"city\": \"Chicago\",\n            \"postal_code\": \"50001\",\n            \"state\": \"IL\",\n            \"country\": \"840\"\n        },\n        \"gift_card_count\": \"01\",\n        \"gift_card_currency\": \"EUR\",\n        \"gift_card_amount\": \"25000\",\n        \"delivery_email\": \"james.mason@example.com\",\n        \"delivery_timeframe\": \"ELECTRONIC_DELIVERY\",\n        \"shipping_method\": \"ANOTHER_VERIFIED_ADDRESS\",\n        \"shipping_name_matches_cardholder_name\": \"true\",\n        \"preorder_indicator\": \"MERCHANDISE_AVAILABLE\",\n        \"preorder_availability_date:\": \"2019-04-18\",\n        \"reorder_indicator\": \"FIRST_TIME_ORDER\",\n        \"transaction_type\": \"GOODS_SERVICE_PURCHASE\"\n    },\n    \"payer\": {\n        \"reference\": \"6dcb24f5-74a0-4da3-98da-4f0aa0e88db3\",\n        \"account_age\": \"LESS_THAN_THIRTY_DAYS\",\n        \"account_creation_date\": \"2019-01-10\",\n        \"account_change_date\": \"2019-01-28\",\n        \"account_change_indicator\": \"THIS_TRANSACTION\",\n        \"account_password_change_date\": \"2019-01-15\",\n        \"account_password_change_indicator\": \"LESS_THAN_THIRTY_DAYS\",\n        \"home_phone\": {\n            \"country_code\": \"44\",\n            \"subscriber_number\": \"123456789\"\n        },\n        \"work_phone\": {\n            \"country_code\": \"44\",\n            \"subscriber_number\": \"1801555888\"\n        },\n        \"payment_account_creation_date\": \"2019-01-01\",\n        \"payment_account_age_indicator\": \"LESS_THAN_THIRTY_DAYS\",\n        \"suspicious_account_activity\": \"NO_SUSPICIOUS_ACTIVITY\",\n        \"purchases_last_6months_count\": \"03\",\n        \"transactions_last_24hours_count\": \"01\",\n        \"transaction_last_year_count\": \"05\",\n        \"provision_attempt_last_24hours_count\": \"01\",\n        \"shipping_address_time_created_reference\": \"2019-01-28\",\n        \"shipping_address_creation_indicator\": \"THIS_TRANSACTION\"\n    },\n    \"payer_prior_three_ds_authentication_data\": {\n        \"authentication_method\": \"FRICTIONLESS_AUTHENTICATION\",\n        \"acs_transaction_reference\": \"26c3f619-39a4-4040-bf1f-6fd433e6d615\",\n        \"authentication_timestamp\": \"2020-07-28T10:26:49.712Z\",\n        \"authentication_data\": \"secret123\"\n    },\n    \"recurring_authorization_data\": {\n        \"max_number_of_instalments\": \"05\",\n        \"frequency\": \"25\",\n        \"expiry_date\": \"2019-08-25\"\n    },\n    \"payer_login_data\": {\n        \"authentication_data\": \"secret123\",\n        \"authentication_timestamp\": \"2020-07-28T10:26:49.712Z\",\n        \"authentication_type\": \"MERCHANT_SYSTEM_AUTHENTICATION\"\n    },\n    \"browser_data\": {\n        \"accept_header\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\",\n        \"color_depth\": \"TWENTY_FOUR_BITS\",\n        \"ip\": \"123.123.123.123\",\n        \"java_enabled\": \"true\",\n        \"javascript_enabled\": \"true\",\n        \"language\": \"en-US\",\n        \"screen_height\": \"1080\",\n        \"screen_width\": \"1920\",\n        \"challenge_window_size\": \"FULL_SCREEN\",\n        \"timezone\": \"0\",\n        \"user_agent\": \"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36\"\n    },\n    \"merchant_contact_url\": \"https://enp4qhvjseljg.x.pipedream.net/\"\n}",
      "options": {
        "raw": {
          "language": "json"
        }
      }
    },
    "url": {
      "raw": "https://{{url}}/ucp/authentications/{{aut_id}}/initiate",
      "protocol": "https",
      "host": [
        "{{url}}"
      ],
      "path": [
        "ucp",
        "authentications",
        "{{aut_id}}",
        "initiate"
      ]
    },
    "description": "This request follows the 'Check Version' request in the 3DS2 flow. The merchant must submit data including the billing and shipping details of the payer, at least one phone number, the device data, transaction details, outcome from the ACS Method URL if it took place and a link to the merchant's About or Contact page.\r\n\r\nFor more information on the 3DS2 Initate step, please visit: https://developer.globalpay.com/api/3d-secure-two and https://developer.globalpay.com/api/authentications#/Initiate/initiate3DS"
  },
  "response": [
  ]
}