Login expired. Please log in again.

Feedback

0/300

Feedback

Submitted successfully

ok

Feedback

Network exception, please try again later

ok

Signing and Termination Result Callback API

Latest update time:2022.08.04 Release notes

Tips:

● The same notification may be sent to the merchant system multiple times. The merchant system must be able to process duplicate notifications properly. First check the status of the corresponding business data when receiving a notification for processing, and determine whether the notification has been processed. If not, the notification should be processed; if it has been processed, the success result should be returned. Before status checking and processing of the business data, a data lock should be used to implement concurrency control and avoid data confusion caused by function reentry.

● The merchant system must perform signature verification for the content of the notification, and verify whether the data fields of the notification are consistent with those of the merchant side, thus preventing a "false notification" caused by data leakage and capital loss.

1. API Intro

Applicable object: Common mode Institutional mode

Request URL: The notification path of the signing result is the success_notify_url field uploaded by the signing interface merchant; the termination result notification path is the termination callback address provided by the merchant when applying for the deduction permission and deduction template ID. The address must be an HTTPS protocol address. If the link cannot be accessed, the merchant will not receive the notification from WeChat. The notification URL must be a URL that is directly accessible and cannot carry parameters. For example: notify_url: http://pay.weixin.qq.com/wxpay/123456789

Request method: POST


2. Notification Rules

When the contract is signed or terminated successfully (no notification is sent if it fails), WeChat will asynchronously notify the merchant of the relevant contract signing and termination information. The merchant needs to receive and handle the notification and return a response. The notification result data will be encrypted to ensure security. The merchant needs to decrypt the notification data before getting the result data.

When interacting with the background notification, if the response received by WeChat from the merchant is not success or timed out, WeChat thinks the notification fails. WeChat will periodically resend the notification according to the specified policy to maximize the success rate of the notification, but WeChat does not guarantee final success of the notification. (The notification frequency is 15/15/30/180/1800/1800/1800/1800/3600 seconds.)


3. Notification Message

The notifications of contract signing and termination results access the notification URL set by the merchant using the POST method, and the notification data is transmitted through the request body (BODY) in the JSON format. The data in the notification includes the details about the encrypted payment result.

The procedure of how to decrypt the notification data is described as follows.

1、Obtain the merchant's notification key from the merchant platform and record it as key.
2、For the algorithm described in `resource.algorithm` (which is AEAD_AES_256_GCM), obtain the corresponding `parameters nonce` and `associated_data`.
3、Decrypt the `resource.ciphertext` with `key`, `nonce`, and `associated_data` to obtain the resource object in JSON form.

Note: A For the information on the API of the algorithm `AEAD_AES_256_GCM`, see rfc5116. The length of the `key` used for WeChat Pay is 32 bytes, the length of the random string `nonce` is 12 bytes, and the length of the `associated_data` is less than 16 bytes or may be empty ero.


4. Request Parameters

Name Variable Name Type Required Description
Notification ID id string[1,32] Yes The unique notification ID
Example: EV-2018022511223320873
Notification creation time create_time string[1,64] Yes Notification creation time, in RFC3339 format. For example, 2018-06-08T10:34:56+08:00 represents BJT 10:34:56 June 8, 2018.
Example: 2018-06-08T10:34:56+08:00
Notification type event_type string[1,32] Yes Type of the notification, which is PAPAY.SIGN for the signing success notification, and PAPAY.TERMINATE for the terminating success notification.
Example: PAPAY.TERMINATE
Notification data type resource_type string[1,32] Yes The type of the notification resource data. The type of resource data for a successful payment notification is encrypt-resource.
Example: encrypt-resource
Notification data resource object Yes Resource data of a notification
Name Variable Name Type Required Description
Encryption algorithm type algorithm string[1,32] Yes The algorithm that encrypts the payment result data. Only AEAD_AES_256_GCM is supported.
Example: AEAD_AES_256_GCM
Data ciphertext ciphertext string[1,1048576] Yes The ciphertext of the payment result encoded with Base64
Additional data associated_data string[1,16] No Additional data used for encryption
Random string nonce string[1,32] Yes The random string used for encryption

5. Notification Signature

Encryption does not guarantee that the notification request comes from wechat pay. Wechat pay will sign the notification sent to the merchant and put the signature value in the Wechatpay-Signature of Notification's HTTP header. The merchant should verify the signature to confirm that the request is from wechat pay, not other third parties. For the algorithm of signature verification, please refer to 【Wechat Pay API V3 Signature Scheme


{
    "id":"EV-2018022511223320873",
    "create_time":"20180225112233",
    "resource_type":"encrypt-resource",
    "event_type":"PAPAY.TERMINATE",
    "resource" : {
        "algorithm":"AEAD_AES_256_GCM",
        "ciphertext": "...",
        "nonce": "...",
        "associated_data": ""
    }
}
    

List of decrypted resource objects:


{
	"mchid": "10000091",
	"out_contract_code": "100001256",
	"plan_id": 123,
	"contract_id": "Wx15463511252015071056489715",
	"appid": "wxcbda96de0b165486",
	"openid": "ouFhd5X9s9WteC3eWRjXV3lea123",
	"contract_termination_mode": "USER",
	"operate_time ": "2015-09-01T10:00:00+08:00 "
}
    

{
	"sp_mchid": "10000091",
	"sub_mchid": "10000097",
	"out_contract_code": "100001256",
	"plan_id": 123,
	"contract_id": "Wx15463511252015071056489715",
	"sp_appid": "wxcbda96de0b165486",
	"openid": "ouFhd5X9s9WteC3eWRjXV3lea123",
	"contract_termination_mode": "USER",
	"operate_time": "2015-09-01T10:00:00+08:00"
}
  

6. Signing and Termination Result Parameters

Name Variable Name Type Required Description
Merchant ID mchid string[1,32] Yes Merchant ID assigned by WeChat Pay
Note: Only forCommon mode
Example: 1900000109
APPID appid string[1,32] Yes APPID corresponding to the mobile app applied for by the merchant on the WeChat Open Platform
Note: Only forCommon mode
Example: wx8888888888888888
Merchant ID of the service provider sp_mchid string[1,32] Yes The institution's merchant ID allocated by WeChat Pay
Note: Only forInstitutional mode
Example: 10000098
Sub-merchant ID sub_mchid string[1,32] Yes Sub-merchant ID allocated by WeChat Pay
Note: Only forInstitutional mode
Example: 10000097
Organization APPID sp_appid string[1,32] Yes APPID corresponding to the Service Account applied for by the institution on the WeChat Official Accounts Platform
Note: Only forInstitutional mode
Example: wxcbda96de0b165486
Contracted merchant APPID sub_appid string[1,32] No APPID corresponding to the mobile app applied for by the sub-merchant on the WeChat Open Platform
Note: Only forInstitutional mode
Example: wxcbda96de0b165484
Signed contract No. out_contract_code string[1,32] Yes Signed contract No.
Example: 100001256
Template ID plan_id int Yes When a merchant applies for deduction permission to WeChat Pay, WeChat Pay will allocate a unique deduction template ID to the merchant
Example: 123
Auto-debit contract ID contract_id string[1,32] Yes Auto-debit contract ID returned by WeChat after successful signing
Example: Wx15463511252015071056489715
User ID under the merchant’s appid openid string[1,16] Yes Openid of the user under the merchant’s appid
Example: ouFhd5X9s9WteC3eWRjXV3lea123
Time of operation operate_time string[1,16] Yes Time of operation
Example: 2015-09-01T10:00:00+08:00
Time of contract expiration contract_expire_time string[1,64]

No

Time of contract expiration
Example: 2015-09-01T10:00:00+08:00
Termination mode of the contract termination_mode string[1,16] No When state is TERMINATED, the value indicates the termination mode of the contract  
USER-Terminated by the user
MERCHANT-Terminated by the merchant API 
PLATFORM-Terminated by the merchant platform 
Example: USER

7. Response Result

After the merchant's backend has properly processed the notification, HTTP status code 200 or 204 needs to be returned. No specific content is required for 204.If other HTTP status codes are returned, WeChat Pay will deem the notification as a failure, and will send the notification regularly by following the aforesaid policies.

Note:If the merchant's backend fails to process a response, WeChat Pay will record the response message. It is recommended to return in the following format.

Name Variable Name Type Required Description
Returned status code code string[1,32] Yes For more information, see the returned status code description below.
Example: SUCCESS
Returned message message string[1,256] No Returned message, which presents the cause of the error.
Example: ERROR_DESCRIPTION



200
{
	"code": "SUCCESS",
	"message": "OK"
}
    

{
    "code": "SYSTEM_ERROR",
    "message": "ERROR"
}
  
    Page navigation

Release notes

close
V1.0
2021.12.08
1. JSAPI Signing – To Be Determined API released online

About  WeChat  Pay

Powered By Tencent & Tenpay Copyright©

2005-2024 Tenpay All Rights Reserved.

Contact Us
Wechat Pay Global

WeChat Pay Global

置顶