微信小程序退款申請開發(fā)的步驟
微信小程序退款申請開發(fā)的步驟相對微信支付來說比較簡單。
值得注意的有以下兩點(diǎn):
1.向微信退款接口請求退款后,根據(jù)得到的響應(yīng)是可以直接確定退款是否完成的。不再需要設(shè)置專門的回調(diào)接口等待微信通知。當(dāng)然如果需要也是可以在微信商戶平臺設(shè)置回調(diào)接口接受從而接受微信回調(diào)的,但并不是必須的。
2.退款請求需要在請求服務(wù)器安裝微信提供的安全證書,也就是說,發(fā)起退款請求相比較支付請求在請求時(shí)請求方法不能復(fù)用,因?yàn)槲⑿磐丝钚枰獢y帶證書的請求,此證書可在申請微信商戶號成功后從微信商戶平臺自行下載,Linux下的PHP開發(fā)環(huán)境的證書只需要放在網(wǎng)站根目錄的cert文件夾中即可。其他開發(fā)環(huán)境可能需要導(dǎo)入操作。
下面講解一下退款的具體步驟
一. 用戶發(fā)起退款請求
用戶在前端發(fā)起退款請求,后端接收到退款請求,將相應(yīng)訂單標(biāo)記為申請退款,展示在后臺.商戶查看后,如果同意退款再進(jìn)行相應(yīng)操作.此后才進(jìn)入真正的退款流程.
二. 商戶發(fā)起退款請求
商戶同意退款后,后端即向微信提供的退款 API 發(fā)起請求.
同請求微信支付API一樣.退款請求也需要將需要的參數(shù)進(jìn)行簽名后以XML發(fā)送到微信的退款A(yù)PI [https://api.mch.weixin.qq.com/pay/refund](https://api.mch.weixin.qq.com/pay/refund)
退款請求需要的參數(shù)如下(多個(gè)參數(shù)在支付API請求時(shí)也有使用):
小程序 appid。
商戶號 mch_id 。申請開通微信支付商戶認(rèn)證成功后微信發(fā)給你的郵件里有
商戶訂單號 out_trade_no 。退款訂單在支付時(shí)生成的訂單號
退款訂單號 out_refund_no 。由后端生成的退款單號,需要保證唯一,因?yàn)槎鄠€(gè)同樣的退款單號只會退款一次。
總金額 total_fee 。訂單總金額,單位為分。
退款金額 refund_fee 需要退款的金額,單位同樣為分
操作員 op_user_id .與商戶號相同即可
隨機(jī)字符串 nonce_str 。同支付請求
簽名 sign 。使用上面的所有參數(shù)進(jìn)行相應(yīng)處理加密生成簽名。(具體處理方式與支付相同,可直接復(fù)用。)
三. 退款完成
在發(fā)起退款請求后,就可以直接根據(jù)請求的響應(yīng)XML中的 result_code字段來判斷退款是否成功,從而對訂單狀態(tài)進(jìn)行處理和后續(xù)操作。不需要像支付那樣等待另一個(gè)接口的通知來確定請求狀態(tài)。當(dāng)然如上文所說,如果需要微信服務(wù)器發(fā)送通知到后端的話,可以到微信商戶平臺進(jìn)行設(shè)置。
退款因?yàn)榱鞒膛c支付大同小異,因此退款的PHP類我選擇了直接繼承支付類,
代碼如下,注意區(qū)分退款請求方法postXmlSSLCurl和支付請求方法postXmlCurl的區(qū)別,這也就是上文提到的退款需要的雙向證書的使用。
第二部分:如何開通一個(gè)小商店