4.1 Payment Result Callback Notification (Online/Dynamic QR)
Processing Flow:#
Brief Description:#
When the payment QR code has been paid and the transaction changes to a final status (such as failure or success), the system will send an order result notification to the URL provided at the time of transaction creation. Description: When the order in the payment is reversed to success, wallyt will actively call back the final state result. The notification URL is the parameter notifyUrl submitted in the authorization card repayment interface. The callback message is in the form of an array, and each callback contains only one transaction. Note: Due to the repeated sending of background notifications, the same notification may be sent to the merchant system multiple times, and the merchant system must be able to correctly handle the repeated notifications.The recommended approach is to first check the state of the corresponding business data to determine whether it has been processed when the notification is received for processing, if it has not been processed, then proceed with the processing, and if it has been processed, return the result directly. Before the state check and processing of the business data, the concurrency control of the data should be used to avoid data confusion caused by function reentry.Callback Example (Success):#
{
"msgId": "1164806705893105666",
"orderNo": "1164806712444612610",
"type": "purchase",
"trxState": "paid",
"trxAmount": "226.5",
"message": "Transaction successful",
"signature":"ce85ac3fc2002bcfb6ceda7ac636aa23"
}
Important note:#
The callback is in JSON format. If your endpoint returns an invalid response format, you may not receive future callbacks. You must return the string "success" (without quotes) after processing.Callback Parameters:#
| Parameter | Description | Format | Type |
|---|
| msgId | Merchant order number. | e.g., 1164806705893105 | String |
| orderNo | Open API Order Number / System Reference ID. | e.g., 18235435435435435 | String |
| type | Type of the payment. | purchase (online) or payqr (dynamic QR) | String |
| trxState | Final status of the payment. | paid / unpaid / failed | String |
| trxAmount | Transaction amount. | e.g., 26.50 USD | String |
| message | Description. | (String) | String |
| signature | Signature calculated using MD5 algorithm for data integrity and authentication. | MD5(payTradeNo + outTradeNo + totalAmount + first_16_chars_of_merchant_secret) | String |
Construction Formula:
MD5(payTradeNo + outTradeNo + totalAmount + first_16_chars_of_merchant_secret)
Source String Example:
200560078466037350625920251229192417320146.22F50E217D0D7447DC
Resulting Signature:
ce85ac3fc2002bcfb6ceda7ac636aa23
Modified at 2026-03-11 09:08:47