Pay with Stored Card – Subsequent Payments
When the Cardholder is logged in to the merchant’s e-shop, a ‘One click Payment’ button is presented for easy payment with just one click.
The Card token is detokenized, and the one click payment context is validated before the transaction is presented to IPS with a reference to the initial transaction. This allows the authentication flow to be bypassed.
How it works
To perform a payment with 3DS authorization, first create the order as detailed in API Integration Guide.
Note that you should include the additional OneClick and Tokenization parameters to the Order / Checkout Request, as shown below:
Location
Data Element
Type
Condition
Description
Request Body
tokenInfo
TokenInfo
Optional
Token Information.
Request Body.tokenisation.paymentTokens.paymentTokenItem
tokenType
string
Optional
Token Type.
Possible values are (“Card”, “Email”, “MobilePhone”)
Request Body.tokenisation.paymentTokens.paymentTokenItem
value
string
Optional
Token value.
Request Example:
{
"merchant": {
"terminalId": {{TerminalID}},
"channel": "web",
"merchantTransactionId": "Order Id: r7cxvi0saj"
},
"transaction": {
"transactionTimestamp": "{{trxDatetime}}",
"description": "Transaction for order number 4908 terminalId 100886",
"moto": false,
"paymentType": "PURS",
"amount": {
"value": 50.50,
"currency": "PLN"
},
"paymentMethod": [
"CARD"
]
},
"tokenisation": {
"paymentTokens": [{
"tokenType": "Card",
"value": "{{purchaseTokenValue}}"
}
]
}
}
After completing the Order Creation, you may proceed to Make the Payment.
Note that the following request needs an Authorization Header with the transactionSignature returned from payment order operation.
In this purchase request, include the additional DeviceInfo , OneClick and TokenInfo parameters, as shown below.
Location
Data Element
Type
Condition
Description
Request Body.info
deviceInfo
DeviceInfo
Mandatory
Object that defines the customer device information.
Request Body.info.deviceInfo
browserAcceptHeader
string
Optional
Browser Accept Header
Request Body.info.deviceInfo
browserJavaEnabled
string
Optional
Browser Java Enabled
Request Body.info.deviceInfo
browserJavascriptEnabled
string
Optional
Browser Javascript Enabled
Request Body.info.deviceInfo
browserLanguage
string
Optional
Browser Language
Request Body.info.deviceInfo
browserColorDepth
string
Optional
Browser Color Depth
Request Body.info.deviceInfo
browserScreenHeight
string
Optional
Browser Screen Height
Request Body.info.deviceInfo
browserScreenWidth
string
Optional
Browser Screen Width
Request Body.info.deviceInfo
browserTZ
string
Optional
Browser Time Zone
Request Body.info.deviceInfo
browserUserAgent
string
Optional
Browser User Agent
Request Body.info.deviceInfo
systemFamily
string
Optional
System Family
Request Body.info.deviceInfo
systemVersion
string
Optional
System Version
Request Body.info.deviceInfo
systemArchitecture
string
Optional
System Architecture
Request Body.info.deviceInfo
deviceManufacturer
string
Optional
Device Manufacturer
Request Body.info.deviceInfo
deviceModel
string
Optional
Device Model
Request Body.info.deviceInfo
deviceID
string
Optional
Device Unique Identification
Request Body.info.deviceInfo
applicationName
string
Optional
Application Name
Request Body.info.deviceInfo
applicationVersion
string
Optional
Application Version
Request Body.info.deviceInfo
geoLocalization
string
Optional
Geolocation
Request Body.info.deviceInfo
ipAddress
string
Optional
IP Address
Request Body
oneClick
oneClick
Optional
Object that defines a One Click Payment.
Request Body.oneClick
oneClickApplication
boolean
Mandatory
For use of already created One Click. Indicates if a One Click Payment is requested to be applied. The absence indicates the value ‘False’.
Request Body
tokenInfo
TokenInfo
Optional
Token Information.
Response Body.tokenList
tokenType
string
Optional
Token Type
Possible values are:
– Email
– MobilePhone
– QRCodeMBWAY1
– Card
default: Card
Response Body.tokenList
value
string
Mandatory
Token Value
Request Example:
{
"info": {
"deviceInfo": {
"browserAcceptHeader": "application/json, text/plain, */*",
"browserJavaEnabled": "false",
"browserLanguage": "en",
"browserColorDepth": "24",
"browserScreenHeight": "1080",
"browserScreenWidth": "1920",
"browserTZ": "-60",
"browserUserAgent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36",
"geoLocalization": "Lat: 38.7350528 | Long: -9.2143616",
"systemFamily": "Windows",
"systemVersion": "Windows",
"deviceID": "498bfd4c3a3645b38667a7037b616c18",
"applicationName": "Chrome",
"applicationVersion": "106"
},
"customerInfo": [
{
"key": "customerName",
"value": "User X
},
{
"key": "customerEmail",
"value": "testingemail@gmail.com"
}
]
},
"tokenInfo": {
"value": "{{purchaseTokenValue}}",
"tokenType": "Card"
},
"oneClick": {
"oneClickApplication": true
}
}
Expected response:
You will receive a response comprising a paymentStatus in the message. It informs whether the transaction was accepted, declined, still pending a final result, or requires additional action.
- Success: The purchase has been processed successfully and the customer has been debited.
- Declined: The purchase has been declined.
- Pending: The final result of the purchase is not yet known. You will need to inquiry on the status of this transaction until it reaches a final state, or you decide to cancel it.
- Partial: The purchase is partially accepted, but requires additional actions to the completed (e.g. 3D-Secure authentication). The actionResponse element is provided for instructions on how to proceed.
Perform a Get Status
After the payment has been fully processed, you can check the status of your transaction by sending a GET request.
Ensure that the Authorization HTTP header is set to the same Bearer token that was used in the initial Payment Order.
Request URL:
https://stargate-cer.qly.site1.sibs.pt/api/v1/payments/{transactionID}/status
Request Headers:
Authorization: ‘Bearer <AuthToken>’
X-IBM-Client-Id: ‘<ClientId>’
Content-Type: application/json