If the notifyUrl
parameter is provided during card application, the system will send asynchronous notifications to that address when card status changes occur.
Notification Types#
The system supports the following three types of card notifications:1.
Card Application Notification - Card application status change notification
2.
Card Status Change Notification - Card status change notification
3.
Card Transaction Notification - Card transaction result notification
Common Parameters#
All notifications include the following common parameters:Parameter | Type | Required | Description |
---|
notifyId | String | Yes | Notification Unique ID |
merApplyNo | string | Yes | Merchant application flow number |
applyOrderNo | string | Yes | Application order flow number |
cardNo | string | Yes | Card number |
notifyType | string | Yes | Notification type: card_apply , card_status_change , card_transaction |
timestamp | string | Yes | Notification timestamp (milliseconds) |
sign | string | Yes | Signature, MD5(parameters sorted alphabetically&key=merchant secret key) |
1. Card Application Notification#
When the card application status changes, the system sends a card application notification.Request Parameters#
Parameter | Type | Required | Description |
---|
notifyId | String | Yes | Notification Unique ID |
merApplyNo | string | Yes | Merchant application flow number |
applyOrderNo | string | Yes | Application order flow number |
cardNo | string | No | Card number (returned when card opening is successful) |
status | string | Yes | Application status code |
statusDesc | string | Yes | Status description |
notifyType | string | Yes | Notification type: card_apply |
timestamp | string | Yes | Notification timestamp (milliseconds) |
sign | string | Yes | Signature |
Status Codes#
Status Code | Description |
---|
0 | Under Review |
1 | Review Failed |
2 | Processing |
3 | Processing Failed |
4 | Processing Successful |
5 | Closed |
Example Request#
{
"notifyId": "NF123456",
"merApplyNo": "MER202312010001",
"applyOrderNo": "APP202312010001",
"cardNo": "411111****1111",
"status": "4",
"statusDesc": "Processing Successful",
"notifyType": "card_apply",
"timestamp": "1701234567890",
"sign": "A1B2C3D4E5F6G7H8I9J0"
}
2. Card Status Change Notification#
When the card status changes, the system sends a card status change notification.Request Parameters#
Parameter | Type | Required | Description |
---|
notifyId | String | Yes | Notification Unique ID |
merApplyNo | string | Yes | Merchant application flow number |
applyOrderNo | string | Yes | Application order flow number |
cardNo | string | Yes | Card number |
oldStatus | string | Yes | Previous status code |
newStatus | string | Yes | New status code |
statusDesc | string | Yes | New status description |
notifyType | string | Yes | Notification type: card_status_change |
timestamp | string | Yes | Notification timestamp (milliseconds) |
sign | string | Yes | Signature |
Card Status Codes#
Status Code | Description |
---|
0 | Pending Activation |
1 | Activated |
2 | Frozen |
3 | Freezing in Progress |
4 | Cancelling in Progress |
5 | Cancelled |
6 | Unfreezing in Progress |
7 | Uncancelling in Progress |
Example Request#
{
"notifyId": "NF123456",
"merApplyNo": "MER202312010001",
"applyOrderNo": "APP202312010001",
"cardNo": "411111****1111",
"oldStatus": "1",
"newStatus": "2",
"statusDesc": "Frozen",
"notifyType": "card_status_change",
"timestamp": "1701234567890",
"sign": "A1B2C3D4E5F6G7H8I9J0"
}
3. Card Transaction Notification#
When a card transaction is completed, the system sends a card transaction notification.Request Parameters#
Parameter | Type | Required | Description |
---|
notifyId | String | Yes | Notification Unique ID |
merOrderNo | string | Yes | Merchant application order number |
tradeNo | string | Yes | Application order number |
cardNo | string | Yes | Card number |
trxType | string | Yes | Transaction type |
settleAmount | string | Yes | Settlement amount |
settleCurrency | string | Yes | Settlement currency |
amount | string | Yes | transfer amount |
currency | string | Yes | transfer currency |
notifyType | string | Yes | Notification type: card_transaction |
status | string | yes | transfer status 0:Success 1:Failed 2:Preprocessing |
transactionDirection | string | yes | transfer direction 0:IN 1:OUT |
timestamp | string | Yes | Notification timestamp (milliseconds) |
sign | string | Yes | Signature |
Transaction Types#
Transaction Type | Description |
---|
0 | Deposit |
1 | Payment |
2 | Withdrawal |
3 | Refund |
4 | PaymentCancel |
5 | PerAuth |
Example Request#
{
"notifyId": "NF123456",
"merOrderNo": "MER123456789",
"tradeNo": "TRADE987654321",
"cardNo": "411111******1111",
"trxType": "1",
"settleAmount": "100.00",
"settleCurrency": "USD",
"amount": "100.00",
"currency": "USD",
"notifyType": "card_transaction",
"status": "0",
"transactionDirection": "0",
"timestamp": "1625097600000",
"sign": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
}
Signature Generation#
Signature Algorithm#
The signature is generated using MD5 algorithm with the following steps:1.
Sort all parameters alphabetically (excluding the sign
parameter)
2.
Concatenate parameters in the format: key1=value1&key2=value2&...
3.
Append the merchant secret key: &key=merchant_secret_key
4.
Calculate MD5 hash of the concatenated string
Signature Example#
Response Requirements#
Success Response#
The merchant should return SUCCESS
or 200
to acknowledge receipt of the notification.Failure Response#
If the merchant returns any other response, the system will retry the notification.Retry Mechanism#
Retry Policy#
The system implements an automatic retry mechanism for failed notifications:Retry intervals: 0 minutes, 1 minute, 5 minutes, 15 minutes, 30 minutes
Retry conditions: Network errors, timeout, or non-success responses
Retry Log#
Failed notifications are logged for monitoring and manual intervention if needed.Security Considerations#
HTTPS Requirement#
All notifications are sent via HTTPS to ensure data security.Signature Verification#
Merchants should verify the signature of each notification to ensure authenticity:1.
Extract all parameters except sign
2.
Generate signature using the same algorithm
3.
Compare with the received signature
4.
Reject notifications with invalid signatures