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