Callback
The async notification structure is mostly the same for deposit and withdraw, but the meaning of sts differs: deposit notifications are usually sent only on success, while withdraw notifications may report success or failure.
Notification Parameters
| Field | Key | Type | Description |
|---|---|---|---|
| Merchant code | mcode | string | Merchant code |
| Platform order no. | sn | string | Platform order number |
| Merchant order no. | tno | string | Merchant order number |
| Amount | amt | string | Order amount |
| Status | sts | string | Deposit only notifies success with status DS_SUCCESSWithdraw may be WS_SUCCESS or WS_FAIL |
| Create time | ctm | string | Order creation time |
| Extra data | extra | string | Original passthrough data |
| Notify URL | ntf_url | string | Notification URL |
| Extend data | extend | string | Withdraw failure reason, or payer info for collections — a JSON string when present |
| Signature | sign | string | Callback signature |
extend Extension Data
- For a failed withdrawal, the reason is returned as a plain string if one is available.
- For KYC collections, the payer information is returned as a JSON string:
"extend": "{\"acct\":\"test\",\"bank\":\"BANK\",\"number\":\"account12345\",\"remark\":\"Remark\"}",The corresponding JSON format is as follows:
{
"acct": "test",
"number": "account12345",
"bank": "BANK",
"remark": "Remark"
}Signing
Callbacks use the same HMAC-SHA256 + JCS (RFC 8785) algorithm described in Signature:
Upon receipt, first remove the sign field from the JSON, run JCS canonicalization on the remainder, compute Base64(HMAC-SHA256(key=secretKey, msg=signingBytes)), and compare against the received sign.
Response
After successful signature verification, return the plain text success with HTTP 200.
Example:
Content-Type: text/plain; charset=utf-8
successRetry and Failure Determination
- The response does not successfully return HTTP status code
200with the contentsuccess. - No response is received within the push timeout of 3000ms (3 seconds).
The above conditions trigger the retry mechanism, with a maximum of 3 retries.
If your callback response logic still fails after 3 retries, you can contact customer service to request a re-callback. However, if your response logic consistently fails to respond with success, the order push status will under no circumstances be changed to "success".