- Print
- DarkLight
- PDF
This message enables merchants to retrieve the applicable 3DS version for a given card and is intended for use by the following merchant types:
Merchants integrating PayOne Authentication services independently, such as Payment Service Providers (PSPs), who manage the authentication flow as a separate process.
Merchants utilizing PayOne Authorization services (API Payment or API PreAuth), who are required to determine the card’s 3DS version prior to submitting a request to SmartRoute. These merchants must invoke the Get Card 3DS Version API before initiating the payment or pre-authorization flow.
For merchants in the second category, the following process must be followed:
After collecting the card details (card number, expiry date, and cardholder name), and before calling the API Payment or API PreAuth endpoint, the merchant must invoke the Get Card 3DS Version API.
The merchant must evaluate the
Response.StatusCodereturned:If the status code indicates an error (i.e., not
00000), the payment flow cannot proceed. A new request to the Get Card 3DS Version API must be submitted.If the status code is successful (
00000) andResponse.MethodPostDatais empty or not present, the merchant may proceed by calling the API Payment or API PreAuth.If the status code is successful (
00000) andResponse.MethodPostDatais provided, the merchant must render an iframe to POST theResponse.MethodPostDatatoResponse.MethodDataURL. The iframe must not remain open for more than 10 seconds. If this duration is exceeded, the merchant should proceed with the subsequent API calls.
A sample JavaScript implementation is provided below to illustrate this behavior
var url = response["methodDataURL"]; // this is from the response of Get Card 3DS Version API call
var threeDSMethodData = response["methodPostData"];// this is from the response of Get Card 3DS Version API call
var ifrm = document.createElement('iframe');
ifrm.setAttribute('id', 'threeDSMethodDataIframe'); // assign an id
ifrm.setAttribute('name', 'threeDSMethodDataIframe'); // assign a name
ifrm.style.width = '0px';
ifrm.style.height = '0px';
ifrm.setAttribute('frameborder', '0');
ifrm.setAttribute('style', 'visibility: hidden; position: absolute; left: 0; top: 0; height:0; width:0; border: none;');
document.body.appendChild(ifrm); // to place at end of document
var html = "<form action = 'MethodDataURL' method='POST' id = 'threeDSMethodDataForm' name = 'threeDSMethodDataForm' target = 'threeDSMethodDataIframe'>";
html += "<input type = 'hidden' name = 'threeDSMethodData' value = '" + threeDSMethodData + "'/>";
html += "<input type = 'hidden' name = 'JWT' value = '" + threeDSMethodData + "'/>";
html += "</form>";
html += "<script>document.getElementById('threeDSMethodDataForm').submit();<\/script>";Request Parameters
| Parameter | Description |
|---|---|
| AuthenticationToken required | AuthenticationToken Value send in request Header.
|
MessageID required | Alphanumeric value representing the action to be called. 27 for Get 3DS Version
|
| MerchantID required | Alphanumeric value representing the unique ID of the merchant at SmartRoute, this value is provided by SmartRoute operation team upon merchant enrollment.
|
| TransactionID required | The Transaction ID generated by the Merchant, it represents a unique identifier for the transaction, and it is alphanumeric. It can’t include special characters neither space.
|
| Channel required | The Channel to be used by SmartRoute System. It could be one of the following:
|
| Version optional | A numeric value with (.) separator represents the command's version to be used. If this value is not provided, SmartRoute will consider its default value which is 1.0.
|
CurrencyISOCode required | The numeric ISO Code for the currency and not the character value.
Sample ISO Codes values:
|
| CardNumber required | The customer’s card number that will be used in the payment. This parameter is required if the sent PaymentMethod parameter is 1 (Card).
|
| Token required | The token is used in this request; to represent previously used card information. This parameter is a part of the tokenization parameters. For more information, see Tokenization
|
| ExpiryDateMonth required | The customer’s card expiry date month digits that will be used in the payment. The format of this parameter should be in the form (MM). This parameter is required if the sent PaymentMethodparameter is 1 (Card).
|
| ExpiryDateYear required | The customer’s card expiry date year digits that will be used in the payment. The format of this parameter should be in the form (YY). This parameter is required if the sent PaymentMethod parameter is 1 (Card)
|
| PaymentMethod optional | A numeric value to indicate which payment method will be used. Supported values are: 1 means a payment using Card. 9 means a payment using GooglePay If not sent then the default value is 1 (Card)
|
| googlePayResponse conditional | The googlePayResponse is used in the payment. This value should be URL encoded when it is entered into the secure hash generation process. If the sent PaymentMethod parameter is 9 (Google Pay), this parameter is required
|
| ItemID optional | The custom item ID for the merchant
|
| BrowserLanguage conditional | An alphabetic value representing the browser language preference present in the http header It is required in case of channel is 0 and 1
|
| BrowserScreenHeight conditional | Total height of the Cardholder's screen in pixels. Value is returned from the screen.height property. It is required in case of channel is 0 and 1
|
| BrowserScreenWidth conditional | Total width of the Cardholder's screen in pixels. Value is returned from the screen.width property. It is required in case of channel is 0 and 1
|
| BrowserScreenColorDepth conditional | Value representing the bit depth of the color palette for displaying images, in bits per pixel. Obtained from Cardholder browser using the screen.colorDepth property. The field values are:
|
| BrowserTimeZone conditional | Time difference between UTC time and the Cardholder browser local time, in minutes. The value is returned from the getTimezoneOffset() method. It is required in case of channel is 0 and 1
|
| BrowserUserAgent conditional | Exact content of the HTTP user-agent header. It is required in case of channel is 0 and 1
|
| BrowserJavaScriptEnabled conditional | Boolean that represents the ability of the cardholder browser to execute Java script. It is required in case of channel is 0 and 1
|
| BrowserJavaEnabled conditional | Boolean that represents the ability of the cardholder browser to execute Java. Value is returned from the navigator.javaEnabled property It is required in case of channel is 0 and 1
|
| BrowserAcceptHeader conditional | Exact content of the HTTP accept headers as sent to the 3DS Requestor from the Cardholder's browser. It is required in case of channel is 0 and 1
|
| ClientIPaddress conditional | An alphanumeric value that represents the client’s public IP Address. It is required in case of channel is 0 and 1
|
Response Parameters
| Parameter | Description |
|---|---|
Response.StatusCode required | An alphanumeric value that represents the response code that covers errors generated by the SmartRoute. Check API Payment Response Codes Appendix for descriptive details about Response Codes
|
| Response.StatusDescription required | An alphanumeric value that represents a message describing the response status received from SmartRoute. This parameter is filled only after a complete execution process using the language specified in the request.
|
| Response.MerchantID required | An alphanumeric value that represents the unique ID of the merchant at SmartRoute. The SmartRoute operation team provides this value upon merchant enrollment.
|
| Response.MessageID required | An alphanumeric value that represents the action for defined unique number: 27 for Get card 3ds version
|
| Response.ThreeDSVersion required | An alphanumeric value that represents the 3DS Version, the available values are:
|
| AuthenticationToken required | AuthenticationToken Value send in response Header
|
| Response.MethodDataURL conditional | ACS URL that should be used to POST MethodData. The value is URLEncoded It is required in case of channel is 0 and 1
|
| Response.MethodPostData conditional | Method Data they should be posted to MethodDataURL. The value is URLEncoded It is required in case of channel is 0 and 1
|
| Response.RedirectHtml conditional | This parameter contains a complete HTML document that must be rendered by the merchant’s browser. The returned HTML must be rendered exactly as received, without any modification. This parameter is returned only when 3DS Method execution is required. The merchant should inject this HTML into the page (for example, inside a container <div>). The merchant must wait for the 3DS Method execution to complete (using a timeout or browser messaging mechanism) before proceeding with the Authenticate Payer step. It is required in case of channel is 0 and 1
|