Issuer Token 3DS

The 3DS issuer token object

Use this route to get the 3DS issuer token after creating a charge using a transaction token with the payment type card or when creating a recurring transaction token.

Conditions for triggering 3DS
3DS can only be triggered only if your merchant account has the required configuration. If you are unsure whether your account has 3DS configured, please contact the support team.

Transaction Tokens
1. Transaction token type is recurring
2. data.three_ds.enabled is true and data.three_ds.status is pending in the transaction token create response
3. Poll the transaction token object every 1s exponentially until data.three_ds.status is awaiting.
4. Fetch the 3DS issuer token object

Charges
1. Transaction token payment_type is card
2. three_ds_mode in charge create response is either normal or force
3. Poll the charge object every 1s exponentially until status is awaiting.
4. Fetch the 3DS issuer token object

After retrieving the data, please either redirect the client or open an iframe with the URL specified in issuer_token with the HTTP method specified in call_method, including in the body the contents of payload formatted with the defined content_type.

When redirecting the client, ensure that the relevant redirect endpoint is registered in the transaction token (data.three_ds.redirect_endpoint) or charge create request (redirect_three_ds.endpoint). Confirm upon receiving the response that the data.three_ds.redirect_id/redirect_three_ds.redirect_id is populated to ensure your redirect has been registered. Please ensure that when the client is redirected back, that a mechanism exists for identifying the correct transaction being processed on your application. The id of the transaction token or charge will be included, along with the metadata to the redirect endpoint.

When opening an iframe, continue to poll the transaction token/charge object in the background every 3s until the status reaches a terminal state: successful, failed, error. The iframe may be closed once the condition is met and subsequent payment flow may be executed.

Fields
payment_typestring
See payment methods.
Currently only supports card.
issuer_tokenstring
The 3DS authentication URL for execution by the client.
payloadobject
Contains a UTF-8 encoded JSON object that includes the necessary data to be sent in the body of POST requests. Please convert the JSON object into the correct content type and charset expected by the issuer endpoint.
content_typestring
The content type of the payload expected by the issuer endpoint.

E.g. Given a payload
{"foo": "bar", "space": "cats"}

For: application/x-www-form-urlencoded
foo=bar&space=cats
call_methodstring
The execution method by the client.
Currently only supports http_post

Request (Transaction Token)

GET https://api.univapay.com/stores/{storeId}/tokens/{tokenId}/three_ds/issuer_token

Request (Charge)

GET https://api.univapay.com/stores/{storeId}/charges/{chargeId}/three_ds/issuer_token

Headers:

Content-Type: application/json
Authorization: Bearer {jwt}

Response

Code: 200

Headers:

Content-Type: application/json

Body (online):

{
  "issuer_token": "http://test.com/action",
  "call_method": "http_post",
  "payload": { 
     "test_parameter": "test_value"
  }
  "payment_type": "card",
  "content_type": "application/x-www-form-urlencoded; charset=UTF-8"
}

Response data for the given example could be used to create an HTML form like:

<FORM METHOD="POST" ACTION="http://test.com/action">
  <INPUT TYPE="HIDDEN" NAME="test_parameter" VALUE="test_value">
</FORM>