PaymentPage API
Tip
- All requests are
Post requests, and the data format is json
Brief Description
Request URL
Request Method
- Method: POST
- Content-Type: application/json
| Header |
Required |
Type |
Description |
| merchantNo |
Yes |
String |
- |
Body
| Parameter Name |
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 |
Transaction number (must be unique, recommended format: YYYYMMDDHHMMSS + random digits; max 32 characters) |
| amount |
Yes |
String |
Transaction amount (integer only, in yuan) |
| mobile |
Yes |
String |
Payer's actual mobile number (11-digit number starting with 0, without country code; e.g., 09XXXXXXXXX). Note: The mobile number and payer information in the request must match the actual payer information. |
| firstname |
Yes |
String |
Payer's actual first name. Note: The mobile number and payer information in the request must match the actual payer information. |
| lastname |
Yes |
String |
Payer's actual last name. Note: The mobile number and payer information in the request must match the actual payer information. |
| email |
Yes |
String |
Payer's email address |
| channelCode |
Yes |
String |
Payment method (currently only e-wallet is supported: EWALLET) |
| wayCode |
Yes |
String |
Payment channel (see WayCode appendix for details) |
| ipAddress |
Yes |
String |
Payer's IP address (must be the real IP). Each IP is limited to 10 transactions per day, with a maximum of 3 successful transactions. |
| 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 Parameter Example
{
"sign": "363b4674a1c1772e8a50295dc19d6727",
"timestamp": "1732988442913",
"tradeNo": "0b4ece82fa9749e8b8e57fa64931b7f8",
"amount": 1000000,
"mobile": "01012459077",
"firstname": "abc",
"lastname": "efg",
"email": "123@gmail.com",
"channelCode": "NET_BANKING",
"wayCode": "BANK_TRANSFER",
"ipAddress": "192.168.0.1",
"notifyUrl": "http://abc.com/callback_page",
"returnUrl": "http://abc.com/callback_page",
"remark": "test"
}
Response Result
| Parameter Name |
Required |
Type |
Description |
| msg |
Yes |
String |
Request result (Returning "success" only indicates the request was successful; it should not be used for merchant-side logic) |
| code |
Yes |
String |
Request response code (Returning "0000" only indicates the request was successful; it should not be used for merchant-side logic) |
| timestamp |
Yes |
String |
Transaction time |
| success |
Yes |
String |
Transaction result |
| data |
Yes |
Object |
Response object |
| data.tradeNo |
Yes |
String |
Merchant transaction number returned |
| data.platFormTradeNo |
Yes |
String |
Unique vexora transaction number |
| data.payInfo |
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 (returned as is) |
Successful Response Example
{
"msg": "success",
"code": "0000",
"timestamp": 1748247675703,
"success": true,
"data": {
"tradeNo": "pSPqrzJJ3MHkdyzS",
"platFormTradeNo": "7gwtljttc64lu4e2",
"status": "0015",
"message": "PAYING",
"payInfo": "https://sandbox-casher-sk.vexora.com/sk/f024b03c653aa1b3d7c257cf37d9ae92",
"remark": "test"
}
}