For transactions that do not require funds-distribution, call the API directly to unfreeze all the transaction amount to the sponsor account (original transaction funds settlement account); After the funds-distribution interface is called, and when remaining funds need to be unfrozen, call the API to unfreeze all remaining funds to the sponsor.
Tips:
● The API is in asynchronous processing mode, that is, after receiving the merchant's request, it will be accepted first and then processed asynchronously, and the final funds-distribution result can be obtained through the Funds-distribution Result Query API;
● After the return of this API is successful, the amount of unfrozen funds outbound, together with the non-funds-distribution transaction amount, is subject to the net settlement. The regulations are consistent with the settlement period, starting point and other withdrawal rules in the settlement contract with the merchant;
● The sponsor refers to the merchant who has actually settled the funds and entered the funds into the account via Weixin Pay. It refers to a merchant in the overseas institution mode, and a sub-merchant in the service provider mode.
1. API Intro
Applicable object:Common modeInstitutional mode
API rules:https://apihk.mch.weixin.qq.com/v3/global/profit-sharing/orders/unfreeze
Request method:POST
Path parameter is a path parameter.
Query parameter needs to be passed in the request URL.
Body parameter needs to be passed in the request JSON.
2. Request Parameters
Name
Variable Name
Type
Required
Description
Sub-merchant ID
sub_mchid
string[1, 32]
No
Body Sub-merchant ID allocated by Weixin Pay. It needs to be consistent with the sub-merchant ID in the transaction of Weixin Pay. Note: Only for Institutional mode Example: 1900000109
Weixin Pay transaction ID
transaction_id
string[1, 32]
Yes
Body Weixin Pay transaction ID Example: 4208450740201411110007820472
Merchant order No.
out_order_no
string[1, 64]
Yes
Body The order No. in the merchant system, which is unique. It can only include numbers, capital letters and lowercase letters _-. Note: This order No. is used to identify different requests of funds-distribution commands (including funds-distribution request API/unfreezing remaining funds API) initiated from the merchant side. If the funds of one transaction is distributed multiple times, change the [merchant order No.] before requesting funds-distribution. Otherwise it will be considered as a repeated request. Example: P20150806125346
Funds-distribution description
description
string[1, 80]
Yes
Body Reason description of funds-distribution, to be reflected in the funds-distribution record Example: Unfreeze all remaining funds
Request Example
JSON
1{2"description":"Unfreeze all remaining funds",3"out_order_no":"P20150806125346",4"sub_mchid":"1900000109",5"transaction_id":"4208450740201411110007820472"6}
3. Response Parameters
Name
Variable Name
Type
Required
Description
Sub-merchant ID
sub_mchid
string[1, 32]
No
Merchant ID allocated by Weixin Pay Note: Only for Institutional mode Example: 1900000109
Weixin Pay order No.
transaction_id
string[1, 32]
Yes
Weixin Pay transaction ID Example: 4208450740201411110007820472
Merchant order No.
out_order_no
string[1, 64]
Yes
Merchant order No., same as the request parameter. Example: P20150806125346
Weixin order ID
order_id
string[1, 64]
Yes
Weixin order ID, the unique identifier returned by Weixin system. Example: 3008450740201411110007820472
Funds-distribution order state
state
string
Yes
Funds-distribution order state (see result field in receivers for funds-distribution results of each receiver). PROCESSING: Funds-distribution is processing, FINISHED: Funds-distribution is finished, Example: FINISHED
Receiver list
receivers
array[1,50]
Yes
Receiver list When a merchant initiates a funds-distribution request or a unfreeze the remaining funds request, the same transaction funds can be distributed to multiple receivers (including unfreezing funds to the sponsor). The funds-distribution detail describes each funds-distribution state of each receiver.
Receiver list
Name
Variable Name
Type
Required
Description
Distribution currency
currency
string[3, 3]
Yes
Distribution currency, same as the request parameter.
Example: CNY
Funds-distribution amount
amount
int
Yes
Funds-distribution amount, same as the request parameter.
Example: 100
Funds-distribution description
description
string[1, 80]
Yes
Merchant order No., same as the request parameter.
Example: Distribute to merchant 1900000110
Receiver type
type
string[1, 32]
Yes
Receiver type, same as the request parameter. MERCHANT_ID: Merchant ID, PERSONAL_OPENID: Personal OpenID, converted by merchant APPID PERSONAL_SUB_OPENID: Personal Sub_OpenID, converted by sub-merchant APPID
Example: MERCHANT_ID
Receiver account
account
string[1, 64]
Yes
Receiver account, same as the request parameter.
Example: 1900000109
The result of each funds-distribution detail.
result
string[1, 32]
Yes
The result of each funds-distribution detail. PENDING: Funds to be distributed, SUCCESS: Funds-distribution succeeded, CLOSED: Funds-distribution closed,
Example: SUCCESS
Funds-distribution detail fail reason
fail_reason
string[1, 64]
No
Funds-distribution detail fail reasons. Set only when funds-distribution detail result is "CLOSED." NO_RELATION: The funds-distribution relationship has been terminated. SUB_MERCHANT_FRONEN: The sub-merchant account is frozen, MCH_CONTRACT_SETTLE_OFF: The merchant settlement contract is in closed state. MCH_CONTRACT_FROZEN: The merchant settlement contract is frozen, ACCOUNT_ABNORMAL: The receiver account is abnormal, RECEIVER_HIGH_RISK: The receiver is at high risk, RECEIVER_REAL_NAME_NOT_VERIFIED: The receiver has not been real-name verified, NO_AUTH: The funds-distribution authorization has been canceled, DEFAULT_ERROR: Default error,
Example: ACCOUNT_ABNORMAL
Funds-distribution detail creation time
create_time
string[1, 64]
Yes
Funds-distribution detail creation time follows RFC3339 standard format
Example: 2015-05-20T13:29:35.120+08:00
Funds-distribution detail finish time
finish_time
string[1, 64]
No
Funds-distribution detail finish time follows RFC3339 standard format. Set only when the funds-distribution detail result is "SUCCESS" or "CLOSED".
Example: 2015-05-20T13:29:35.120+08:00
Weixin funds-distribution detail ID
detail_id
string[1, 64]
Yes
Weixin funds-distribution detail ID is the details ID of each funds-distribution business.
Example: 36011111111111111111111
Receiver type
detail_type
string[1, 32]
Yes
The funds-distribution details include two categories of funds: Funds distributed to other receivers and funds unfrozen to sponsor. These two categories can be distinguished by the field. If the detail type is UNFREEZE_TO_SPONSOR, the funds-distribution details will indicate settlement currency, settlement amount and exchange rate and other information. DISTRIBUTE_TO_OTHERS: Distribute funds to other receivers, UNFREEZE_TO_SPONSOR: Unfreeze funds to the sponsor outbound,
Example: DISTRIBUTE_TO_OTHERS
Settlement currency
settlement_currency
string[3, 3]
No
The field is set only when the detail type is UNFREEZE_TO_SPONSOR.
Example: HKD
Settled amount
settlement_amount
int
No
The funds amount is finally settled via exchange rate to the sponsor, using the minimum currency unit.
Example: 110
Exchange rate value
rate
int
No
The value is the exchange ratio between the distribution currency and the settlement currency multiplied by the 8th power of 10. If the distribution currency and settlement currency are both CNY, the exchange ratio is 1 and the exchange rate value is 100,000,000; If the settlement currency is USD, assuming that the ratio of USD to CNY is 6.5, the exchange rate value is 650,000,000.
Example: 81000000
Return Example
SUCCESS
1{2"order_id":"7100000751202203238029563456088",3"out_order_no":"P20150806125346",4"receivers":[5{6"account":"999952224",#sponsormerchantID7"amount":995,8"create_time":"2022-03-23T17:59:23+08:00",9"currency":"CNY",10"description":"Unfreeze all remaining funds",11"detail_id":"7200000751202203238029563456171",12"detail_type":"UNFREEZE_TO_SPONSOR",13"rate_value":83640300,14"result":"PENDING",15"settlement_amount":1189,16"settlement_currency":"HKD",17"type":"MERCHANT_ID"18}19],20"state":"PROCESSING",21"sub_mchid":"1900000109",22"transaction_id":"4208450740201411110007820472"23}
The merchant information in the request of funds-distribution is inconsistent with that in the original transaction
Carefully check whether the transaction ID is filled in correctly and whether the sub-merchant has been filled in or filled in incorrectly
400
INVALID_REQUEST
The transaction does not support funds-distribution
Check whether the Weixin Pay transaction ID is filled in incorrectly and confirm that the Funds-distribution Mark API is called successfully before calling the transaction API
403
NO_AUTH
The merchant has not signed the overseas funds-distribution product
Refer to the product process and access preparation, confirm that the merchant has funds-distribution authorization, and initiate the request again
403
NO_AUTH
The merchant has enabled the funds-distribution product and is waiting for it to take effect (Usually takes effect the next day)
The funds-distribution function cannot be initiated on the first day. Please initiate the request on the next day
403
NO_AUTH
The parent-child relationship of the merchant does not exist. Please use correct sub-merchant ID to initiate the request
Please check if the sub-merchant ID (sub_mchid) is filled in correctly
400
INVALID_REQUEST
The command (out_order_no) already exists when the merchant unfreezes the remaining funds and the details are not as expected
In case of different funds-distribution requests, change the command (out_order_no) before requesting funds-distribution
403
NOTENOUGH
The funds amount to be distributed is insufficient at the time of request
The freeze process of the transaction funds specified by the merchant when initiating funds-distribution request has not been completed. Try again later
After the user completes the payment, the fund freezing process for the transaction with funds-distribution will be triggered. It is recommended that the merchant try again after 3~5 mins