最新更新時(shí)間:2020.10.10 版本說明
當(dāng)商戶申請(qǐng)的退款有結(jié)果后(退款狀態(tài)為:退款成功、退款關(guān)閉、退款異常),微信會(huì)把相關(guān)支付結(jié)果及用戶信息通過數(shù)據(jù)流的形式發(fā)送給商戶,商戶需要接收處理,并按文檔規(guī)范返回應(yīng)答。
1、同樣的通知可能會(huì)多次發(fā)送給商戶系統(tǒng)。商戶系統(tǒng)必須能夠正確處理重復(fù)的通知。
推薦的做法是,當(dāng)收到通知進(jìn)行處理時(shí),首先檢查對(duì)應(yīng)業(yè)務(wù)數(shù)據(jù)的狀態(tài),判斷該通知是否已經(jīng)處理過,如果沒有處理過再進(jìn)行處理,如果處理過直接返回結(jié)果成功。在對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行狀態(tài)檢查和處理之前,要采用數(shù)據(jù)鎖進(jìn)行并發(fā)控制,以避免函數(shù)重入造成的數(shù)據(jù)混亂。
特別提醒:
1、退款結(jié)果對(duì)重要的數(shù)據(jù)進(jìn)行了加密,商戶需要用商戶秘鑰進(jìn)行解密后才能獲得結(jié)果通知的內(nèi)容
適用對(duì)象:直連商戶 服務(wù)商
請(qǐng)求URL: 該鏈接是通過【統(tǒng)一下單API】中提交的參數(shù)notify_url設(shè)置,如果鏈接無法訪問,商戶將無法接收到微信通知。 通知url必須為直接可訪問的url,不能攜帶參數(shù)。示例:notify_url:“http://www.tg885.com/wxpay/pay.action”
當(dāng)商戶申請(qǐng)的退款有結(jié)果后(退款狀態(tài)為:退款成功、退款關(guān)閉、退款異常),微信后臺(tái)會(huì)把相關(guān)確認(rèn)結(jié)果和訂單信息發(fā)送給商戶,商戶需要接收處理該消息,并返回應(yīng)答。
后臺(tái)通知交互時(shí),如果微信收到商戶的應(yīng)答不符合規(guī)范或超時(shí),微信會(huì)判定本次通知失敗,重新發(fā)送通知,直到成功為止(在通知一直不成功的情況下,微信總共會(huì)發(fā)起多次通知,通知頻率為15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 總計(jì) 24h4m),但微信不保證通知最終一定能成功。
參數(shù)名 | 變量 | 類型 | 必填 | 描述 |
---|---|---|---|---|
返回狀態(tài)碼 | return_code | string[1,16] | 是 | SUCCESS/FAIL 此字段是通信標(biāo)識(shí),非交易標(biāo)識(shí),退款是否成功需要查看refund_status來判斷 示例值:SUCCESS |
返回信息 | return_msg | string[1,128] | 否 | 返回信息,如非空,為錯(cuò)誤原因 簽名失敗 參數(shù)格式校驗(yàn)錯(cuò)誤 示例值:簽名失敗 |
返回狀態(tài)碼(return_code)為SUCCESS的時(shí)候,包含以下字段
參數(shù)名 | 變量 | 類型 | 必填 | 描述 |
---|---|---|---|---|
應(yīng)用ID | appid | string[1,32] | 是 | 微信分配的應(yīng)用ID 示例值:wx8888888888888888 |
商戶號(hào) | mch_id | string[1,32] | 是 | 微信支付分配的商戶號(hào) 示例值:1900000109 |
子商戶應(yīng)用ID | sub_appid | string[1,32] | 否 | 微信分配的子商戶應(yīng)用ID,如需在支付完成后獲取sub_openid則此參數(shù)必傳。 注意:僅適用于服務(wù)商模式 示例值:wx8888888888888888 |
子商戶號(hào) | sub_mch_id | string[1,32] | 是 | 微信支付分配的子商戶號(hào) 注意:僅適用于服務(wù)商模式 示例值:1900000109 |
隨機(jī)字符串 | nonce_str | string[1,32] | 是 | 隨機(jī)字符串,不長于32位。推薦隨機(jī)數(shù)生成算法 示例值:5K8264ILTKCH16CQ2502SI8ZNMTM67VS |
加密信息 | req_info | string[1,1024] | 是 | 加密信息請(qǐng)用商戶秘鑰進(jìn)行解密,詳見解密方式 示例值:T87GAHG17TGAHG1TGHAHAHA1Y1CIOA9UGJH1GAHV871HAGAGQYQQPOOJMXNBCXBVNMNMAJAA |
以下為解密后字段
參數(shù)名 | 變量 | 類型 | 必填 | 描述 |
---|---|---|---|---|
微信支付訂單號(hào) | transaction_id | string[1,32] | 是 | 微信支付訂單號(hào) 示例值:1217752501201407033233368018 |
商戶訂單號(hào) | out_trade_no | string[1,32] | 是 | 商戶系統(tǒng)內(nèi)部訂單號(hào),要求32個(gè)字符內(nèi),只能是數(shù)字、大小寫字母_-|*@ ,且在同一個(gè)商戶號(hào)下唯一。 示例值:1217752501201407033233368018 |
微信退款單號(hào) | refund_id | string[1,32] | 是 | 微信退款單號(hào) 示例值:1217752501201407033233368018 |
總金額 | total_fee | int | 是 | 訂單總金額,單位為分 示例值:100 |
應(yīng)結(jié)訂單金額 | settlement_total_fee | int | 否 | 當(dāng)訂單使用了免充值型優(yōu)惠券后返回該參數(shù),應(yīng)結(jié)訂單金額=訂單金額-免充值優(yōu)惠券金額。 示例值:100 |
申請(qǐng)退款金額 | refund_fee | int | 是 | 退款總金額,單位為分 示例值:100 |
退款金額 | settlement_refund_fee | int | 否 | 去掉非充值代金券退款金額后的退款金額,退款金額=申請(qǐng)退款金額-非充值代金券退款金額,退款金額<=申請(qǐng)退款金額 示例值:100 |
退款狀態(tài) | refund_status | string[1,16] | 是 | 退款狀態(tài): SUCCESS:退款成功 REFUNDCLOSE:退款關(guān)閉。 CHANGE:退款異常,退款到銀行發(fā)現(xiàn)用戶的卡作廢或者凍結(jié)了,導(dǎo)致原路退款銀行卡失敗,可前往商戶平臺(tái)(www.tg885.com)-交易中心,手動(dòng)處理此筆退款。 示例值:SUCCESS |
退款入賬賬戶 | refund_recv_accout | string[1,64] | 是 | 取當(dāng)前退款單的退款入賬方 1)退回銀行卡: {銀行名稱}{卡類型}{卡尾號(hào)} 2)退回支付用戶零錢: 支付用戶零錢 3)退還商戶: 商戶基本賬戶 商戶結(jié)算銀行賬戶 4)退回支付用戶零錢通: 支付用戶零錢通 示例值:招商銀行信用卡0403 |
退款成功時(shí)間 | refund_success_time | string[1,20] | 否 | 退款成功時(shí)間,當(dāng)退款狀態(tài)為退款成功時(shí)有返回。 示例值:2016-07-25 15:26:26 |
退款資金來源 | refund_account | string[1,30] | 是 | REFUND_SOURCE_RECHARGE_FUNDS:可用余額退款/基本賬戶 REFUND_SOURCE_UNSETTLED_FUNDS:未結(jié)算資金退款 示例值:REFUND_SOURCE_RECHARGE_FUNDS |
退款發(fā)起來源 | refund_request_source | string[1,30] | 是 | API:接口 VENDOR_PLATFORM:商戶平臺(tái) 示例值:API |
<xml>
<return_code>SUCCESS</return_code>
<appid><![CDATA[wx2421b1c4370ec43b]]></appid>
<mch_id><![CDATA[10000100]]></mch_id>
<nonce_str><![CDATA[TeqClE3i0mvn3DrK]]></nonce_str>
<req_info><![CDATA[T87GAHG17TGAHG1TGHAHAHA1Y1CIOA9UGJH1GAHV871HAGAGQYQQPOOJMXNBCXBVNMNMAJAA]]></req_info>
</xml>
req_info解密后示例
<root>
<out_refund_no><![CDATA[131811191610442717309]]></out_refund_no>
<out_trade_no><![CDATA[71106718111915575302817]]></out_trade_no>
<refund_account><![CDATA[REFUND_SOURCE_RECHARGE_FUNDS]]></refund_account>
<refund_fee><![CDATA[3960]]></refund_fee>
<refund_id><![CDATA[50000408942018111907145868882]]></refund_id>
<refund_recv_accout><![CDATA[支付用戶零錢]]></refund_recv_accout>
<refund_request_source><![CDATA[API]]></refund_request_source>
<refund_status><![CDATA[SUCCESS]]></refund_status>
<settlement_refund_fee><![CDATA[3960]]></settlement_refund_fee>
<settlement_total_fee><![CDATA[3960]]></settlement_total_fee>
<success_time><![CDATA[2018-11-19?16:24:13]]></success_time>
<total_fee><![CDATA[3960]]></total_fee>
<transaction_id><![CDATA[4200000215201811190261405420]]></transaction_id>
</root>
商戶處理后同步返回給微信參數(shù):
參數(shù)名 | 變量 | 類型 | 必填 | 描述 |
---|---|---|---|---|
返回狀態(tài)碼 | return_code | string[1,16] | 是 | SUCCESS/FAIL 此字段是通信標(biāo)識(shí),非交易標(biāo)識(shí),交易是否成功需要查看result_code來判斷 示例值:SUCCESS |
返回信息 | return_msg | string[1,128] | 否 | 返回信息,如非空,為錯(cuò)誤原因 簽名失敗 參數(shù)格式校驗(yàn)錯(cuò)誤 示例值:OK |
舉例如下:
<xml>?
??<return_code><![CDATA[SUCCESS]]></return_code>
??<return_msg><![CDATA[OK]]></return_msg>
</xml>