Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Process Apple Pay

Note

Please ensure you have followed the steps outlined in Domain Verification for Apple Pay before implementing Apple Pay.

Anchor
apple-pay-post
apple-pay-post
POST /pay/v1/applepay

 

Headers

Content-Typestring
Content type.

Authorizationstring
Access token generated from create token request.

User-Agentstring
User agent.

Acceptstring
Accept

Accept-Encodingstring
Accept encoding.

Accept-Charsetstring
Accept charset.

 

Attributes

payment_intentstring
Payment intent token.

paymentTokenstring
Payment token generated from Create apple Payment Token request.

typestring (optional)
Type 1 is ECOM payment and type 2 is MOTO. For Apple Pay, the value must be 1.

resourcestring
The resource value for apple pay must be “applepay”.

amountfloat (optional)
Payment amount. If not present, it will fetch value from Intent resource.

customer_emailstring (optional)
Customer email. If not present, it will fetch value from Intent resource.

customer_namestring (optional)
Customer name. If not present, it will fetch value from Intent resource.

customer_addressstring (optional)
User’s address details. If not present, it will fetch value from Intent resource.

customer_postcodestring (optional)
User’s postcode. If not present, it will fetch value from Intent resource.

transaction_uniquestring
Transaction unique.

device_timezoneinteger
Device timezone value which can be fetched using javascript and assigned to the respective hosted input field. This value is required in 3DS.

device_capabilitiesstring
Device capabilities which can be fetched using javascript and assigned to the respective hosted input field. This value is required in 3DS.

device_accept_languagestring
Device accept language which can be fetched using javascript and assigned to the respective hosted input field. This value is required in 3DS.

device_screen_resolutionstring
Device accept language which can be fetched using javascript and assigned to the respective hosted input field. This value is required in 3DS.

remote_addressstring
Remote address which can be fetched using javascript and assigned to the respective hosted input field. This value is required in 3DS.

merchant_data json (optional)
The merchant can add custom key value pairs in JSON format, for example:

Code Block
{
  "my_order_id": 123,
  "fancy_note": "Order complete",
  "card_discount": false
}

Request

Code Block
POST https://secure.blinkpayment.co.uk/api/pay/v1/applepay HTTP/1.1
Content-Type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbG...
User-Agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36",
Accept: "*/*"
Accept-Encoding: "gzip, deflate, br"
Accept-Charset: ""

{
    "payment_intent": "pi_Swhc84aSLtUGppvPARX...",
    "paymentToken": "eyJwYXltZW50VG9rZW4iOns...",
    "type": 1,
    "amount": 1.1,
    "resource": "applepay",
    "customer_email": "random@email.com",
    "customer_name": "A Smith",
    "transaction_unique": "PHnRNzjUw...",
    "device_timezone" : "-330",
    "device_capabilities" : "javascript",
    "device_accept_language" : "en-GB",
    "device_screen_resolution" : "1366x768x24",
    "remote_address" : "123.123.123.123",
    "merchant_data": "{\"my_order_id\": \"cc-12345678\"}"
}

Response

Code Block
HTTP/1.1 200 OK
Content-Type: application/json

{
   "acsform": "<form id="form3ds22" method="post" action="https://acs.********"><input type="hidden" name="creq" value="********">
     <input type="hidden" name="threeDSPageSessions[427**************][bfreq]" value="*******">
     <input type="hidden" name="threeDSPageSessions[427**************][threeDSRef]" value="****">
     <input id="btnSubmit" type="submit" class="button expanded btn btn-primary" value="Process Payment">
     </form>"
}

HTML Page

Code Block
<!DOCTYPE html>
<html>
<head>
  <script>
    onload = () => document.forms[0].submit();
  </script>
</head>

<body>
  <form id="form3ds22" method="post" action="https://acs.********"><input type="hidden" name="creq" value="********">
    <input type="hidden" name="threeDSPageSessions[427**************][bfreq]" value="*******">
    <input type="hidden" name="threeDSPageSessions[427**************][threeDSRef]" value="****">
    <input id="btnSubmit" type="submit" class="button expanded btn btn-primary" value="Process Payment">
  </form>
</body>
</html>

Response

Code Block
HTTP/1.1 200 OK
Content-Type: application/json

{
    "url": "https://demo-app.blinkpayment.co.uk/return?transaction_id=BL-MYU12345&status=captured&note=Payment%2BSuccessful&merchant_data=%257B%2522order_id%2522%253A%2522cc-12345678%2522%257D"
}