?. 背景
- 微信開(kāi)發(fā)中,既然涉及到了微信支付,對(duì)于合理的購(gòu)物網(wǎng)站,必定會(huì)有用戶退款請(qǐng)求
- 當(dāng)然,一種方式是登錄 微信商戶平臺(tái),在
交易列表中進(jìn)行微信退款操作 - 但是,如果業(yè)務(wù)量龐大,作為友好交互,自然需要進(jìn)行代碼實(shí)現(xiàn) 微信退款 操作咯
稍作一提,這是針對(duì)
小程序退款申請(qǐng)的方法指導(dǎo)(目測(cè)跟公眾號(hào)退款沒(méi)啥區(qū)別)
理論上,請(qǐng)對(duì)應(yīng)參考文章:小程序微信支付 實(shí)例配置詳解
編程語(yǔ)言:PHP
使用框架:ThinkPHP3.2.3 (我也覺(jué)得過(guò)時(shí)了,算了,框架啥的只是個(gè)殼子而已!)
?. 前期準(zhǔn)備
- 工欲善其事, 必先利其器
?.文檔閱讀
- 畢竟都是人家微信平臺(tái)的東西,使用起來(lái)不去閱讀,總感覺(jué)是對(duì)開(kāi)發(fā)人員的不尊重
- 況且,萬(wàn)一官方不定時(shí)地進(jìn)行了更新,后面的道友們不去閱讀很可能會(huì)遇到更多的阻礙哦
- 此處不多贅述,提取著重注意的要點(diǎn):
a. 請(qǐng)求需要雙向證書(shū) 詳見(jiàn) 證書(shū)使用 【可根據(jù)提示,直接下載參考微信支付提供的 Demo(PHP)】
b. 對(duì)于請(qǐng)求參數(shù),可以只填寫(xiě)必選項(xiàng)

?. 資源準(zhǔn)備
- 首先,小程序的
appid,和微信支付所需的mch_id缺一不可 - 其次,提前將獲得的雙向證書(shū)放置于自己的項(xiàng)目中,并記錄其訪問(wèn)的
絕對(duì)路徑 - 再者,需要獲取訂單進(jìn)行支付時(shí)所保存的回調(diào)數(shù)據(jù),其
json字符串形式如下:
{
"appid":"wx81111223333444bc0",
"bank_type":"CFT",
"fee_type":"CNY",
"is_subscribe":"N",
"nonce_str":"t8wcdduity6f6k5acng33wzv5z56o7sh",
"openid":"okxsf5YWzAzEPNoV31IRqft-fa1c",
"out_trade_no":"20180000011119M15362284007942",
"return_code":"SUCCESS",
"time_end":"20180906180644",
"trade_type":"JSAPI",
"transaction_id":"4200000171201809060657362048"
}
? 上面的
json字符串是極為重要的,不然無(wú)法追索微信支付訂單信息
? 前提是在實(shí)現(xiàn)微信支付時(shí)就已經(jīng)做了回調(diào)保存
? 未做處理的,可參考我之前整理的文章 :小程序微信支付 實(shí)例配置詳解
▓. 代碼實(shí)現(xiàn)
- 如果你的前期準(zhǔn)備已經(jīng)完成,可直接參考源碼
wxMini-PayDemo\Server-PHP\PayController.class.php - 其實(shí),核心方法只有兩個(gè),介紹如下:
?. payRefund() 方法
- 請(qǐng)使用
post請(qǐng)求方式,傳參訂單號(hào)和退款金額,請(qǐng)認(rèn)真閱讀注釋信息,畢竟每個(gè)人的業(yè)務(wù)邏輯都不同 - 重要的就是獲取
array 數(shù)組形式的$wxPayResultJsonRes

?. curl_post_ssl_refund() 方法
-
具體的使用,請(qǐng)閱讀我的注釋代碼就好
附錄:
?. 實(shí)現(xiàn)效果

?.Github 源碼下載 >>>
- 強(qiáng)調(diào):如果你的前期準(zhǔn)備已經(jīng)完成,可只需參考源碼
wxMini-PayDemo\Server-PHP\PayController.class.php
