API REFERENCE
Get Token (Direct Integration)
Applies to: PCI DSS certified merchants and institutions
Use this API to complete an end-to-end payment (3DS verification is mandatory). YabandPay converts sensitive cardholder data into a random string (a Token) to remove identifying information. The Token can be used for the following payments:
- Users can pay with one click on the checkout page without entering credit card details.
- Merchants can use this Token for recurring payments, subscription charges, and similar purposes.
[!TIP|style:flat] Workflow
- Enable Token payments. Contact your account manager to activate the Token payment feature.
- Obtain user consent. When enabling express payments (Token payments) for consumers, you must clearly inform users and obtain their consent to avoid potential disputes.
- Get a Token. First, initiate a standard credit card transaction. YabandPay returns a url. After the user completes 3DS verification through that url, YabandPay returns the Token in an asynchronous notification using the payment_token_object parameter.
- Initiate a Token payment. Include the Token in the payment_token_object variable. If Token validation succeeds, YabandPay processes the Token payment. If validation fails, YabandPay returns an error. In that case, we recommend repeating this transaction flow to obtain a Token and then initiating payment again.
| Parameter | Type | Description | Required |
|---|---|---|---|
| user | String | Cashier account UID | Required |
| sign | String | Signature | Required |
| method | String | v3.CreateCardPayments | Required |
| time | Long | Timestamp | Required |
- Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| pay_method | String | online | Required |
| sub_pay_method | String | Card | Required |
| operation | String | 10.Create Token only; 11.Token for sales; 12.Token for authorisation | Required |
| order_id | String | Merchant order ID | Required |
| 3ds_initiate | String | 3ds settings. 01. 3ds verification must be enabled; | Required |
| cardinfo | String | Card information | Treat the value of cardinfo as a string (fields within cardinfo do not need to be included in sorting) |
| cardinfo.card_holder | string | Cardholder name | Required |
| cardinfo.card_number | string | Card number | Required |
| cardinfo.expiration_month | string | Card expiration month, MM | Required |
| cardinfo.expiration_year | string | Card expiration year, YYYY | Required |
| cardinfo.cvc | string | CVC (storing the CVC in any form violates PCI DSS requirements) | Required |
| amount | String | Numeric amount. For example, € 24.99 must be written as 24.99. If operation is 10, set amount=0 | Required |
| currency | String | ISO 4217 currency code, for example EUR or CHF | Required |
| description | String | Order description | Required |
| string | Cardholder email | Required | |
| demo | String | Custom field | Optional |
| timeout | String | Expiration time in minutes (0-1440) | Required |
| redirect_url | String | Redirect URL after payment | Optional |
| notify_url | String | Asynchronous notification URL after payment | Required |
| request_id | String | Unique request ID; a combination of digits and letters at least 24 characters is recommended | Required |
Signature example:
Sorted parameters concatenated into a URL-style query string
"3ds_initiate=01&amount=0.1&cardinfo={"card_holder":"John Smith","email":"JohnSmith@gmail.com","card_number":"4356789012345670","expiration_month":"01","expiration_year":"2023","cvc":"123"}¤cy=EUR&description=test&method=v3.CreateCardPayments¬ify_url=https://www.yabandpay.com/notify&operation=11&order_id=1756878556&pay_method=online&redirect_url=https://www.yabandpay.com/redirect_url&request_id=a7z1lox4l6z6mdx1udgn5gtezasze1x0&sca_exemption=LowValue&sub_pay_method=Card&time=1756878556&timeout=0&user=YOUR_CASHIER_UID"
Sign stringA using secret_key
The resulting signature is:
"YOUR_SIGNATURE"
Request example:
{
"user": "YOUR_CASHIER_UID",
"sign": "YOUR_SIGNATURE",
"method": "v3.CreateCardPayments",
"time": 1756878556,
"data": {
"description": "test",
"3ds_initiate": "01",
"timeout": "0",
"pay_method": "online",
"sub_pay_method": "Card",
"operation": "11",
"order_id": 1756878556,
"cardinfo": "{\"card_holder\":\"John Smith\",\"card_number\":\"4356789012345670\",\"expiration_month\":\"01\",\"expiration_year\":\"2023\",\"cvc\":\"123\"}",
"sca_exemption": "LowValue",
"amount": "0.1",
"currency": "EUR",
"email": "JohnSmith@gmail.com",
"redirect_url": "https://www.yabandpay.com/redirect_url",
"notify_url": "https://www.yabandpay.com/notify",
"request_id": "a7z1lox4l6z6mdx1udgn5gtezasze1x0"
}
}
Response example:
{
"status": true,
"code": "200",
"data": {
"order_id": "YOUR_ORDER_ID",
"trade_id": "2b2aa1af-6e97-4c01-8c52-86200bf66c82",
"amount": "0.1",
"currency": "EUR",
"url": "https://pay.yabandpay.com/pay_method/Y3JlZGl0Y2FyZA==/MmIyYWExYWYtNmU5Ny00YzAxLThjNTItODYyMDBiZjY2Yzgy",
"state": "processing"
},
"message": "",
"response_id": "202409091749500451314672"
}
Additional information:
MIT & CIT :
MIT = Merchant Initiated subsequent transactions. Token payments initiated by the merchant.
CIT = Cardholder Initiated Subsequent transactions. Token payments involving the customer. When activating payments, specify whether you need MIT or CIT so the appropriate mode can be configured.
Payment result:
-
A successful request returns "status": true.
-
A failed request returns "status": false.
Redirect the customer to the returned url. After entering card details and completing payment at this url, the customer is redirected to redirect_url. We strongly recommend using both Query Order and Asynchronous Notifications to keep payment statuses accurate and up to date.
Returned Token:
-
After the customer grants authorization and the payment succeeds, YabandPay returns payment_token_object through an asynchronous notification.
-
If the customer does not grant authorization or does not complete payment, the asynchronous notification does not return payment_token_object.
3DS low-value exemption:
Transactions within the following limits may qualify as low-value transactions. If the order amount is less than or equal to the applicable amount below, transaction code 02 (low-value exemption) may be used with approval.
| # | Currency | Amount |
|---|---|---|
| 1 | EUR | 30 |
| 2 | DKK | 225 |
| 3 | GBP | 27 |
| 4 | SEK | 310 |
| 5 | ISK | 5000 |
| 6 | NOK | 325 |
| 7 | CHF | 32 |
| 8 | PLN | 135 |
| 9 | USD | 36 |
Response codes:
| Status | Code | Message |
|---|---|---|
| true | 200 | |
| false | -1000 | Internal error |
| false | -403 | The signature Error |
| false | -2001 | The user not exist |
| false | -3001 | Required field is missing |
| false | -4118 | Incorrect request ID |
| false | -4120 | No operational permissions |
