Checkout
Tip
- All requests are
Post requests, and the data format is json
Brief Description
This section introduces the API endpoint for creating a payment link.
Request URL
Request Method
- Method: POST
- Content-Type: application/json
| 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 (integer only, unit: yuan) |
| mobile |
Yes |
String |
Payer's actual mobile number (10โdigit number starting with 0, without country code, e.g., 09XXXXXXXX). 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: Bank payment โ NET_BANKING; Retail store โ STORE; Eโwallet โ EWALLET |
| wayCode |
Yes |
String |
Payment channel (see WayCode appendix for details) |
| ipAddress |
Yes |
String |
Payer's IP address (must be real). Each IP is limited to 10 transactions per day, with a maximum of 3 successful transactions. |
| postcode |
No |
String |
Payer's postal code. Required when channelCode is STORE. |
| address |
No |
String |
Payer's address. Required when channelCode is STORE. |
| bankNumber |
No |
String |
Payer's account number(s). Incoming funds will be matched against the payment source; if not matched, funds will be refunded. Multiple accounts can be provided, e.g., "bank code 1โaccount 1, bank code 2โaccount 2; 808โ0358988888888,013โ0458988888888888". Required when channelCode is NET_BANKING. |
| 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
NET_BANKING
{
"sign": "f53ee692f15d0329a1461373b67ff25a",
"timestamp": "1724142041682",
"tradeNo": "00000007",
"amount": "300",
"mobile": "0912345678",
"firstname": "abc",
"lastname": "efg",
"email": "123@gmail.com",
"channelCode": "NET_BANKING",
"wayCode": "BANK_TRANSFER",
"ipAddress": "192.168.0.1",
"bankNumber": "808-0368988888888",
"notifyUrl": "https://google.com",
"returnUrl": "http://abc.com/callback_page",
"remark": "000000"
}
STORE
{
"sign": "f53ee692f15d0329a1461373b67ff25a",
"timestamp": "1724142041682",
"tradeNo": "00000007",
"amount": "300",
"channelCode": "STORE",
"wayCode": "711",
"ipAddress": "192.168.0.1",
"mobile": "0912345678",
"firstname": "abc",
"lastname": "efg",
"postcode":"123",
"address":"123",
"email": "123@gmail.com",
"notifyUrl": "https://google.com",
"returnUrl": "http://abc.com/callback_page",
"remark": "000000"
}
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 |
String |
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.desc |
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": 1728609277476,
"success": true,
"data": {
"tradeNo": "428c430ce59b47138674c971ff07a711",
"platFormTradeNo": "c167o1itir0fypid",
"status": "0015",
"desc": "Paying",
"remark": "11111",
"paymentUrl": "https://ccutest.dj70000.com/?data=0ae849a17a57ad6fa6edfa42c208b042ae54e83ef3997c36271eddd0434c24f54a6e71a8b536da873167746c263f47772849fffc0a9829bc0f5ba99a24719c548f75a78b1205574c15aaca8fd3de67e97963afc5d9fcfa4ef559f59326bd91d0e1bc0fb9600a7bd893c688b301928d7dd69d79d0d4e3489f5711658c3302810b37520b20ecd22816e10a4d3b1cbc1754b0417a0f446462bfa357595a048430e7489fcba303d0ff5f6da6b06eb53c7cf63967b3a36686bffd757db669f7a293dffc97661c17ae21bec4386f321cd6953ee222edd0afcc64f2af4a0b00ad67738345ba446e04950b12a1b560973498eecdf1c2d406340d9941c880482509fccf21dbffb19164a47d2d089bbe75548af19eaaba93b9e70f780ef7ba50c081e453f5"
}
}