External 3DS for 3DS2.0 - Developer Centre
Introduction
You can pass the External 3D Secure Authentication object to Payments API to process online CNP purchase requests. You will use your own integration with 3DS provider such as Cardinal Commerce to get Authentication details. You will run Liability shift rules at your end to decide whether to proceed with the transaction and accordingly you will pass the Authentication object to Payments API.
Steps in External 3D Secure
APIs to use: Payment Handles + Payments
Do the following:
- Create a Payment Handle. You have to pass the "authentication" object in the payment handle request.
- For 3DS2.0, below is the "authentication" object structure
3DS2.0 authenticaton object structure
"authentication": { "eci": 6, "cavv": "Y2FyZGluYWxjb21tZXJjZWF1dGg=", "threeDResult": "A", "threeDSecureVersion": "2.1.0", "directoryServerTransactionId": "faf2069e-d630-4625-948a-e0479c278af1" }
- For 3DS1.0 Fallback cases in 3DS2.0, below is the "authentication" object structure
3DS1.0 Fallback cases in 3DS2.0 object stricture
"authentication": { "eci": "5", "cavv": "AAABAWFlmQAAAABjRWWZEEFgFz8=", "xid": "Smg5UFcyYWF6TkowUlRsaUxvNTA=", "threeDResult": "Y", "signatureStatus": "Y", "threeDSecureVersion": "1.0.2" }
- Below is paymenthandle request.
paymenthandle request
{ "merchantRefNum": "c2aff8e6-6265-4631-b186-1fcd2abd7978", "transactionType": "PAYMENT", "accountId": "1009688230", "authentication": { "eci": 6, "cavv": "Y2FyZGluYWxjb21tZXJjZWF1dGg=", "threeDResult": "A", "threeDSecureVersion": "2.1.0", "directoryServerTransactionId": "faf2069e-d630-4625-948a-e0479c278af1" }, "card": { "cardNum": "4037112233000001", "cardExpiry": { "month": 12, "year": 2025 }, "cvv": "111", "holderName": "Dilip" }, "paymentType": "CARD", "amount": 900, "currencyCode": "USD", "customerIp": "172.0.0.1", "billingDetails": { "nickName": "Home", "street": "100 Queen", "street2": "Unit 201", "city": "Toronto", "zip": "M5H 2N2", "country": "CA" }, "merchantDescriptor": { "dynamicDescriptor": "OnlineStore", "phone": "12345678" }, "returnLinks": [ { "rel": "on_completed", "href": "https://usgaminggamblig.com/payment/return/success", "method": "GET" }, { "rel": "on_failed", "href": "https://usgaminggamblig.com/payment/return/failed", "method": "GET" }, { "rel": "default", "href": "https://api.qa.paysafe.com/checkout/v2/pages/redirect-success.html", "method": "GET" } ] }
- For 3DS2.0, below is the "authentication" object structure
- In Paymenthandle API response, you will get "paymentHandleToken" which will be in Payable state.
- Use the paymentHandleToken to process the Payment request via Payments API using the private key. You must initiate a POST request to the endpoint:
- Post:paymenthub/v1/payments
- A Payment Handle can be used in a payment request only if it has the status of PAYABLE.