Checkout¶
Tip
- All requests are
Postrequests, and the data format isjson
Brief Description¶
This section introduces the cashier checkout interface for creating a payment link.
Current Availability
Thailand collection supports both cashier checkout and Direct Deposit.
At this stage, QR is supported and BANK_TRANSFER is currently not supported.
Payment Methods¶
| ChannelCode | wayCode | Description |
|---|---|---|
| QR | QR | PromptPay QR code payment |
| BANK_TRANSFER | BANK_TRANSFER | Bank transfer (currently not supported) |
Request URL¶
/v1/vexora/checkout
Request Method¶
- Method: POST
- Content-Type: application/json
Headers¶
| Header | Required | Type | Description |
|---|---|---|---|
| merchantNo | Yes | String | Merchant number |
Body¶
| Parameter | Required | Type | Description |
|---|---|---|---|
| sign | Yes | String | The sign field is generated by sorting all fields except sign in alphabetical order and concatenating them as key1=value1key2=value2. Use app secret as salt for MD5 encryption. The sign field should be in lowercase. |
| timestamp | Yes | String | Timestamp (e.g. 1715941383720) |
| tradeNo | Yes | String | Unique transaction number (recommended format: yyyymmddhhmmss + random number) |
| amount | Yes | String | Transaction amount (supports up to two decimal places, unit: THB) |
| mobile | Yes | String | Payer's mobile number. Must be a 9-digit number starting with 9. |
| name | Yes | String | Payer's full name. |
| Yes | String | Payer's email address | |
| channelCode | Yes | String | Payment method(see WayCode appendix for details) |
| wayCode | Yes | String | Payment channel (see WayCode appendix for details) |
| bankNumber | No | String | Bank account number used for the transaction |
| bankCode | No | String | Bank code. Refer to the "Bank List" section |
| notifyUrl | Yes | String | Asynchronous callback URL |
| returnUrl | Yes | String | URL to redirect the customer after successful authorization |
| remark | No | String | Remarks (this field will be returned asโis) |
Request Body Example¶
{
"sign": "9d5ed678fe57bcca610140957afab571",
"timestamp": "1719876543210",
"tradeNo": "VX20260331002345",
"amount": "300",
"mobile": "912345678",
"name": "Somchai Prasert",
"email": "somchai.prasert@example.com",
"channelCode": "QR",
"wayCode": "QR",
"notifyUrl": "https://api.merchant.com/vexora/payment/notify",
"returnUrl": "https://merchant.com/payment/result",
"remark": "order_vx_02345"
}
Response¶
| Parameter | Required | Type | Description |
|---|---|---|---|
| msg | Yes | String | Request result (success only indicates successful request, not for merchant logic judgment) |
| code | Yes | String | Request response code (0000 indicates successful request, not for merchant logic judgment). For specific error codes, refer to the business error code enumeration |
| timestamp | Yes | String | Transaction time |
| success | Yes | Boolean | Transaction result |
| data | Yes | Object | Response object |
| data.tradeNo | Yes | String | Merchant transaction number |
| data.platFormTradeNo | Yes | String | Unique transaction number |
| data.status | Yes | String | Transaction results,Merchants can process subsequent workflows based on the returned status in the transaction result. For details, please refer to the status code reference table. |
| data.message | Yes | String | Error description |
| data.remark | Yes | String | Returned content of the request (as is) |
| data.paymentLink | Yes | String | Cashier URL |
Successful Response Example¶
{
"msg": "success",
"code": "0000",
"timestamp": 1719876543210,
"success": true,
"data": {
"tradeNo": "VX20260331005678",
"platFormTradeNo": "vx7k2m9d3pl0q8f1a",
"status": "0015",
"message": "Processing",
"remark": "order_vx_05678",
"paymentLink": "https://checkout.vexora.com/pay?token=vx7k2m9d3pl0q8f1a9bc45de7812fg90"
}
}