最新更新時間:2020.04.17 版本說明
簽約、解約成功后(包含用戶主動解約),微信會把相關(guān)簽約、解約信息異步通知給商戶。
1、同樣的通知可能會多次發(fā)送給商戶系統(tǒng)。商戶系統(tǒng)必須能夠正確處理重復的通知。
推薦的做法是:當商戶系統(tǒng)收到通知進行處理時,先檢查對應(yīng)業(yè)務(wù)數(shù)據(jù)的狀態(tài),并判斷該通知是否已經(jīng)處理。如果未處理,則再進行處理;如果已處理,則直接返回結(jié)果成功。在對業(yè)務(wù)數(shù)據(jù)進行狀態(tài)檢查和處理之前,要采用數(shù)據(jù)鎖進行并發(fā)控制,以避免函數(shù)重入造成的數(shù)據(jù)混亂。
2、如果在所有通知頻率(0/10/10/10/30/30/30/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300(單位:秒))后沒有收到微信側(cè)回調(diào),商戶應(yīng)調(diào)用查詢訂單接口確認訂單狀態(tài)。
特別提醒:
1、商戶系統(tǒng)對于簽約、解約結(jié)果通知的內(nèi)容一定要做簽名驗證,并校驗返回的商戶協(xié)議號和用戶openid信息是否一致,防止數(shù)據(jù)泄露導致出現(xiàn)“假通知”,造成損失。
2、當收到通知進行處理時,首先檢查對應(yīng)業(yè)務(wù)數(shù)據(jù)的狀態(tài),判斷該通知是否已經(jīng)處理過,如果沒有處理過再進行處理,如果處理過直接返回結(jié)果成功。在對業(yè)務(wù)數(shù)據(jù)進行狀態(tài)檢查和處理之前,要采用數(shù)據(jù)鎖進行并發(fā)控制,以避免函數(shù)重入造成的數(shù)據(jù)混亂。
適用對象:直連商戶
請求URL:簽約結(jié)果通知路徑為簽約接口商戶上傳的notify_url字段,解約結(jié)果通知路徑為商戶配置委托扣款模板ID時填寫的解約回調(diào)地址,必須為https協(xié)議。
如果鏈接無法訪問,商戶將無法接收到微信通知。
通知url必須為直接可訪問的url,不能攜帶參數(shù)。示例: “http://www.tg885.com/wxpay/pay.action”
簽約、解約成功后,微信會把相關(guān)支付結(jié)果和訂單信息發(fā)送給商戶,商戶需要接收處理該消息,并返回應(yīng)答。
對后臺通知交互時,如果微信收到商戶的應(yīng)答不符合規(guī)范或超時,微信認為通知失敗,微信會通過一定的策略定期重新發(fā)起通知,盡可能提高通知的成功率,但微信不保證通知最終能成功。 (通知頻率為:0/10/10/10/30/30/30/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300/300(單位:秒) )
參數(shù)名 | 變量 | 類型 | 必填 | 描述 |
---|---|---|---|---|
返回狀態(tài)碼 | return_code | string[1,16] | 是 | SUCCESS/FAIL 此字段是通信標識,非交易標識,交易是否成功需要查看result_code來判斷 示例值:SUCCESS |
返回信息 | return_msg | string[1,128] | 否 | 返回信息,如非空,為錯誤原因 如:簽名失敗 等。 示例值:簽名失敗 |
以下字段在return_code為SUCCESS的時候有返回
參數(shù)名 | 變量 | 類型 | 必填 | 描述 |
---|---|---|---|---|
業(yè)務(wù)結(jié)果 | result_code | string[1,16] | 是 | SUCCESS/FAIL 示例值:SUCCESS |
以下字段在return_code 和result_code都為SUCCESS的時候有返回
參數(shù)名 | 變量 | 類型[長度限制] | 必填 | 描述 |
---|---|---|---|---|
商戶號 | mch_id | string[1,32] | 是 | 微信支付分配的商戶號 示例值:10000098 |
簽約協(xié)議號 | contract_code | string[1,128] | 是 | 商戶側(cè)的簽約協(xié)議號,由商戶生成,只能是數(shù)字、大小寫字母的描述。 示例值:100000 |
模板id | plan_id | string[1,28] | 是 | 協(xié)議模板id,設(shè)置路徑見開發(fā)步驟。 示例值:12535 |
用戶標識 | openid | string[1,32] | 是 | 同一個Appid下,用戶的唯一標識(注意:商戶記錄的簽約用戶的 openid ,需以微信側(cè)回調(diào)通知的openid為準,不建議商戶使用自行記錄的openid,避免扣款用戶和簽約用戶對不上) 示例值:onqOjjmM1tad-3ROpncN-yUfa6ua |
簽名 | sign | string[1,32] | 是 | 詳見簽名生成算法 |
變更類型 | change_type | string[1,32] | 是 | 枚舉值: ADD:簽約 DELETE:解約 商戶可通過該字段判斷是簽約回調(diào)還是解約回調(diào) 示例值:ADD |
操作時間 | operate_time | string[1, 32] | 是 | 操作時間 示例值:2015-07-01 10:00:00 |
委托代扣協(xié)議id | contract_id | string[1,32] | 是 | 簽約成功后,微信返回的委托代扣協(xié)議id 示例值:Wx15463511252015071056489715 |
協(xié)議到期時間 | contract_expired_time | string[1, 32] | 否 | 協(xié)議到期時間,當change_type為ADD時有返回(目前協(xié)議時間為長期有效,可以忽略該字段) 示例值:2016-07-01 10:00:00 |
協(xié)議解約方式 | contract_termination_mode | int | 否 | 當change_type為DELETE時有返回 1:有效期過自動解約(預留功能) 2:用戶主動解約 3:商戶API解約 4:商戶平臺解約 5:注銷(用戶微信賬戶注銷) 7:用戶聯(lián)系客服發(fā)起的解約 示例值:3 |
請求序列號 | request_serial | int64 | 是 | 商戶請求簽約時的序列號,要求唯一性。禁止使用0開頭,序列號主要用于排序,不作為查詢條件,純數(shù)字,范圍不能超過int64的范圍(9223372036854775807)。 示例值:1695 |
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<result_code><![CDATA[SUCCESS]]></result_code>
<sign><![CDATA[C380BEC2BFD727A4B6845133519F3AD6]]></sign>
<mch_id>10010404</mch_id>
<contract_code>100001256</contract_code>
<openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6ua]]></openid>
<plan_id><![CDATA[123]]></plan_id>
<change_type><![CDATA[ADD]]></change_type>
<operate_time><![CDATA[2015-07-01 10:00:00]]></operate_time>
<contract_id><![CDATA[Wx15463511252015071056489715]]></contract_id>
</xml>
如果商戶側(cè)未返回正確的內(nèi)容,微信會多次通知,為了避免給商戶服務(wù)器造成過大的壓力,請在得到微信簽約結(jié)果通知之后,返回以下內(nèi)容。(請求方式:post)
注意:當商戶后臺應(yīng)答失敗時,微信支付將記錄下應(yīng)答的報文,建議商戶按照以下格式返回。
參數(shù)名 | 變量 | 類型 | 必填 | 描述 |
---|---|---|---|---|
返回狀態(tài)碼 | return_code | string[1,16] | 是 | SUCCESS/FAIL 非簽約結(jié)果標識,簽約發(fā)起是否成功需要查看result_code來判斷。 示例值:SUCCESS |
返回信息 | return_msg | string[1,128] | 否 | 返回信息,如非空,為錯誤原因 如:簽名失敗 等。 示例值:簽名失敗 |
<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>
微信支付簽約、解約通知出口IP列表
如果商戶側(cè)配置了防火墻,需要對商戶回調(diào)通知功能開通下面白名單網(wǎng)段:
101.226.233.128/25