Chilkat Online Tools

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

Back to Collection Items

func chilkatTest() {
    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    let http = CkoHttp()
    var success: Bool

    // 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/"
    // }

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

    // Adds the "Authorization: Bearer <access_token>" header.
    http.AuthToken = "<access_token>"
    http.SetRequestHeader("X-GP-Version", value: "{{version}}")

    var resp: CkoHttpResponse? = http.PostJson3("https://{{url}}/ucp/authentications/{{aut_id}}/initiate", contentType: "application/json", json: json)
    if http.LastMethodSuccess == false {
        print("\(http.LastErrorText)")
        return
    }

    print("\(resp!.StatusCode.intValue)")
    print("\(resp!.BodyStr)")
    resp = nil

}

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 acs_challenge_request_url = jsonData.three_ds.acs_challenge_request_url; ",
          "",
          "//console.log(pareq);",
          "pm.test(\"set  html\",function(){",
          "    var template='<!DOCTYPE html> <html> <head> <title>Sample 3DSecure Page</title> </head> <body><form action='+acs_challenge_request_url+' method=\"POST\">  <input type=\"hidden\" name=\"creq\" 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": [
  ]
}