Payment API
Tips
- All requests are
Postrequests, and the data format isjson
Brief Description
- None
Request URL
/v1/paypro/payIn
Request Method
- POST
Header
| Header | Required | Type | Description |
|---|---|---|---|
| merchantNo | Yes | string | - |
Body
| Parameter Name | Required | Type | Description |
|---|---|---|---|
| sign | Yes | string | Except for the sign, concatenate the remaining fields in alphabetical order to form key1=value1key2=value2, then use the app secret as salt to perform MD5 encryption. The sign should be in lowercase letters. Use the new field name name (not username) when generating the signature. |
| timestamp | Yes | long | Timestamp (e.g., 1715941383720) |
| amount | Yes | string | Payment amount |
| name | yes | string | User Name |
| mobile | yes | string | User's mobile phone number |
| yes | string | email account | |
| channelCode | yes | string | channelCode๏ผEWALLETใVA๏ผ |
| wayCode | no | string | wayCode โข channelCode๏ผEWALLET๏ผwayCode๏ผPALMPAY โข channelCode๏ผVA๏ผwayCode๏ผVA |
| tradeNo | Yes | string | Transaction number (should be unique; suggested format: YYYYMMDDHHMMSS + random number) |
| remark | Yes | string | Remarks; this field will be returned as is |
| notifyUrl | Yes | string | Asynchronous callback URL (e.g., https://www.abc.com/); if not provided, the system will redirect to the default success page |
| returnUrl | No | string | Redirect page after successful payment |
Request Parameter Example
{
"sign": "f5b02d1e945897f194b32d9ef9773a6e",
"timestamp": 1748247671673,
"tradeNo": "pSPqrzJJ3MHkdyzS",
"amount": "500",
"mobile": "15875595997",
"email": "kevin@gmail.com",
"name": "kevin",
"channelCode": "EWALLET",
"wayCode": "PALMPAY",
"notifyUrl": "http://www.google.com",
"returnUrl": "http://www.google.com",
"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 paypro transaction number |
| data.payInfo | Yes | Object | Payment information. For VA (Virtual Account) payments, returns bankName, virtualAccountNumber, virtualAccountHolder, and expirationTimestamp; for wallet payments such as OPay/PalmPay, returns paymentUrl. The actual fields depend on the payment method. |
| data.payInfo.bankName | Conditional | String | Bank associated with the VA. Returned only for VA payments. |
| data.payInfo.virtualAccountNumber | Conditional | String | VA account number. Returned only for VA payments. |
| data.payInfo.virtualAccountHolder | Conditional | String | VA account holder name. Returned only for VA payments. |
| data.payInfo.expirationTimestamp | Conditional | String | VA expiration time. Returned only for VA payments. |
| data.payInfo.paymentUrl | Conditional | String | Payment redirect URL. Returned only for wallet payments such as OPay/PalmPay. |
| 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 | The remark value from the request, returned unchanged. |
Successful Response Example
{
"msg": "success",
"code": "0000",
"timestamp": 1748247675703,
"success": true,
"data": {
"tradeNo": "pSPqrzJJ3MHkdyzS",
"platFormTradeNo": "7gwtljttc64lu4e2",
"status": "0015",
"message": "PAYING",
"payInfo": {
"paymentUrl": "https://checkout-daily.palmpay.com/h5-checkout/"
},
"remark": "test"
}
}
