To configure your notification URL, please send your endpoint address along with your merchant and store information to
technical.support@qfpay.com.- Payments (
"notify_type": "payment") - Refunds (
"notify_type": "refund")
Overview
When a payment or refund is completed, QFPay will POST a JSON-formatted notification to the merchant-defined callback URL.Notification Rules
- Only successful payments and refunds will trigger a notification.
- Please register your notification endpoint via email to
technical.support@qfpay.com. Our team will configure it for you. - Merchants must validate the notification using the signature verification process below. After successful verification, return:
- HTTP Status Code:
200 OK - Response Body:
SUCCESS
- HTTP Status Code:
- If the expected response is not received, QFPay will retry the callback at the following intervals:
- 2 minutes → 10 minutes → 10 minutes → 60 minutes → 2 hours → 6 hours → 15 hours
- Retry stops after receiving
200 OKandSUCCESS
- One
app_code+client_keypair can only be bound to one notification URL. Agents should use a shared endpoint for sub-merchants. - Method:
POST
Content-Type:application/json
Allowed Ports:80and443only (for security)
Signature Verification
The verification process differs from regular API requests.Steps
- Extract the value from the
X-QF-SIGNheader. - Concatenate the raw request body (JSON string) + your
client_key. - Generate an MD5 hash of this combined string.
- If the hash matches the
X-QF-SIGNvalue, the message is valid. Return200 OKwith bodySUCCESS.
Signature Example
Python
Notification Response Example
Response Field Reference
| Field | Required | Type | Description |
|---|---|---|---|
status | Yes | String | 1 = Payment Successful |
notify_type | Yes | String | payment or refund |
pay_type | Yes | String | QFPay payment code (see Payment Types) |
syssn | Yes | String | QFPay Transaction Number |
out_trade_no | Yes | String | Merchant Order Number |
txamt | Yes | String | Amount in cents. Suggest value > 200 |
txcurrcd | Yes | String | Transaction currency (see Currencies) |
txdtm | Yes | String | Merchant-side transaction time |
sysdtm | Yes | String | System transaction time (used for settlement cutoff) |
paydtm | Yes | String | Payment time |
cancel | Yes | String | Cancellation status (see definitions below) |
respcd | Yes | String | Always 0000 in async notifications |
mchid | No | String | QFPay Merchant ID |
goods_name | No | String | Product name |
goods_info | No | String | Product description |
exchange_rate | No | String | Currency exchange rate |
chnlsn | No | String | Channel transaction number |
chnlsn2 | No | String | Additional channel reference |
cardcd | No | String | Card number |
cash_fee | No | String | Actual paid amount |
cash_fee_type | No | String | Currency of cash_fee |
cash_refund_fee | No | String | Actual refund amount |
cash_refund_fee_type | No | String | Refund currency |
Cancel Field Definitions
| Value | Meaning |
|---|---|
| 0 | Not Cancelled |
| 1 | CPM: Reversed or Refunded |
| 2 | MPM: Cancelled |
| 3 | Refunded |
| 4 | Preauth order completed (Alipay) |
| 5 | Partially Refunded |
Notification IP Addresses
Ensure your server allows POST requests from:13.228.112.11518.138.115.4718.166.202.92
