摘要:本文是淺析微信支付系列文章的第十篇,主要講解如何使用沙箱環(huán)境來測試微信支付。圖為微信支付仿真測試系統(tǒng)后簡稱仿真系統(tǒng)的簡化原理圖。沙箱說明微信支付沙箱環(huán)境,是提供給微信支付商戶的開發(fā)者,用于模擬支付及回調(diào)通知。
本文是【淺析微信支付】系列文章的第十篇,主要講解如何使用沙箱環(huán)境來測試微信支付。
淺析微信支付系列已經(jīng)更新十篇了喲~,沒有看過的朋友們可以看一下。
淺析微信支付:下載對賬單和資金賬單
淺析微信支付:申請退款、退款回調(diào)接口、查詢退款
淺析微信支付:查詢訂單和關(guān)閉訂單
淺析微信支付:支付結(jié)果通知
在實際開發(fā)中,通常我們都是在開發(fā)環(huán)境中開發(fā),本地環(huán)境也有很多限制,比如:微信支付無法調(diào)起、H5鏈接需要鑒權(quán)、支付結(jié)果通知需要外網(wǎng)等。
面對以上的問題,微信官方給出了解決的方法,就是咋們這篇文章的 沙箱環(huán)境,也就是微信支付的官方測試環(huán)境,這個環(huán)境能做些什么呢?我覺得最重要的一點就是我們可以實時根據(jù)官方的例子調(diào)用對應(yīng)的接口,并且接口會馬上返回結(jié)果,拿微信支付預(yù)支付單接口來說,調(diào)用以后會實時返回我們支付的相關(guān)信息,這樣就免于開發(fā)時不知道返回結(jié)果而苦惱。
仿真測試系統(tǒng)為降低商戶測試門檻,微信支付團隊開發(fā)了一套獨立的仿真測試系統(tǒng)。該系統(tǒng)根據(jù)驗收用例金額的不同返回不同的響應(yīng)報文,以滿足商戶正常功能測試、安全/異常測試及性能測試的需求。
圖1為微信支付仿真測試系統(tǒng)(后簡稱仿真系統(tǒng))的簡化原理圖。仿真系統(tǒng)的API協(xié)議與正式API完全相同(API接口文檔)。商戶開發(fā)者只需將正式API的調(diào)用URL增加一層sandboxnew路徑,即可對接到仿真系統(tǒng)。
例如,刷卡支付URL:https://api.mch.weixin.qq.com...
變更為:https://api.mch.weixin.qq.com...。
仿真系統(tǒng)與生產(chǎn)環(huán)境完全獨立,包括存儲層。商戶在仿真系統(tǒng)所做的所有交易(如下單、支付、查詢)均為無資金流的假數(shù)據(jù),即:用戶無需真實扣款,商戶也不會有資金入賬。代金券同理,沙箱環(huán)境中無需商戶真實制券與發(fā)券,亦不會出現(xiàn)真實扣券情況。驗收仿真測試系統(tǒng)的API驗簽密鑰需從API獲取:
源碼&交互過程以下為微信官方的仿真測試系統(tǒng)文檔:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1
上面說明具體的交互過程和相關(guān)的仿真測試系統(tǒng)的API驗證簽名,為什么需要這個簽名接口呢?這是因為使用 沙箱環(huán)境 時使用的是真實的商戶號、小程序/公眾號APP_ID,但是 API密鑰這個參數(shù)必須使用 沙箱環(huán)境 的 sandbox_signkey,此接口主要是取得這個參數(shù)。
注:仿真測試環(huán)境中的商戶號(父子商戶號)需使用真實商戶號。
下面為取得 sandbox_signkey的示例:
/** * 獲取沙盒 sandbox_signkey * * @author yclimb * @date 2018/9/18 */ private void doGetSandboxSignKey() throws Exception { WXPayConfigImpl config = WXPayConfigImpl.getInstance(); HashMapdata = new HashMap (); // 商戶號 data.put("mch_id", config.getMchID()); // 獲取隨機字符串 data.put("nonce_str", WXPayUtil.generateNonceStr()); // 生成簽名 String sign = WXPayUtil.generateSignature(data, config.getKey()); data.put("sign", sign); // 得到 sandbox_signkey WXPay wxPay = new WXPay(config); String result = wxPay.requestWithoutCert("/sandboxnew/pay/getsignkey", data, 10000, 10000); System.out.println(result); }
小伙伴可以根據(jù) result 來獲取具體的返回數(shù)據(jù),解析之后獲取 sandbox_signkey參數(shù)。
商戶接入仿真系統(tǒng)的交互流程示例:
商戶發(fā)起刷卡支付請求,使用POST方式調(diào)用 https://api.mch.weixin.qq.com...
帶sandboxnew 的https請求會被nginx路由到仿真系統(tǒng)。仿真系統(tǒng)根據(jù)支付金額(total_fee字段)返回預(yù)期報文給商戶。同時,落地該筆請求數(shù)據(jù);
商戶發(fā)起查單,調(diào)用 https://api.mch.weixin.qq.com...,帶上微信訂單號(transaction_id)或商戶內(nèi)部單號(out_trade_no);
仿真系統(tǒng)收到查單請求后,根據(jù)單號及金額返回預(yù)期的查單結(jié)果給商戶;
商戶下載對賬單,調(diào)用 https://api.mch.weixin.qq.com... ,仿真系統(tǒng)返回固定的賬單格式給商戶。注:賬單內(nèi)容不一定與商戶在仿真系統(tǒng)產(chǎn)生的交易完全相同。
沙箱說明:sandbox/sandboxnew
微信支付沙箱環(huán)境,是提供給微信支付商戶的開發(fā)者,用于模擬支付及回調(diào)通知。以驗證商戶是否理解回調(diào)通知、賬單格式,以及是否對異常做了正確的處理。
◆ 如何對接沙箱環(huán)境?
1、修改商戶自有程序或配置中,微信支付api的鏈接,如:被掃支付官網(wǎng)的url為:https://api.mch.weixin.qq.com... 增加sandboxnew路徑,變更為https://api.mch.weixin.qq.com... , 即可接入沙箱驗收環(huán)境,其它接口類似;
2、在微信支付開發(fā)調(diào)試站點(站點鏈接:http://mch.weixin.qq.com/wiki... ),按接口文檔填入正確的支付參數(shù),發(fā)起微信支付請求,完成支付;
3、驗收完成后,修改程序或配置中的api鏈接(重要!),去掉sandboxnew路徑。對接現(xiàn)網(wǎng)環(huán)境。
說明地址:
https://pay.weixin.qq.com/wik...
https://pay.weixin.qq.com/wik...
其實 沙箱環(huán)境主要是為了方便在開發(fā)時及時獲得接口返回值和進行 商戶支付驗收使用,本文講了如何獲取 sandbox_signkey參數(shù),然后如何進行模擬對接,在實際接口URL后增加 sandboxnew 即可,接口會實時返回結(jié)果參數(shù),此點于正式環(huán)境不同(正式環(huán)境支付后是異步調(diào)用,沙箱環(huán)境是實時返回)。
注意:有的接口沙箱環(huán)境的接口并不只是在鏈接中增加 sandboxnew,整個鏈接都會改變,在實際操作中我們應(yīng)該查看官方文檔一一對照,如支付退款接口,正式線接口為:/secapi/pay/refund,而沙箱環(huán)境接口為:/sandboxnew/pay/refund,在沙箱環(huán)境中去掉了 secapi 這一路徑,請小伙伴一定要注意。
預(yù)告:為了更好的驗證微信支付安全性,我們需要接入微信的 驗收測試,下一篇文章 支付驗收示例和驗收指引 為大家講解,敬請期待?。。?/p>
?如果想要提前一覽源碼的小伙伴,可以先看看我的 github,地址如下:
?
?`
?https://github.com/YClimb/wxp...
?`
加作者私人微信,作者微信號如下 yclimb,標(biāo)明 微信支付 可拉入微信支付討論群與小伙伴一起探討哦,一定要標(biāo)明 微信支付 哦~
到此本文就結(jié)束了,關(guān)注公眾號查看更多推送?。?!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72145.html
摘要:本文是淺析微信支付系列文章的第十一篇,主要講解支付驗收示例和驗收指引。為保證商戶接入質(zhì)量,提升交易安全及用戶體驗,微信支付的合作服務(wù)商在正式上線交易前,必須先根據(jù)本文指引完成驗收。 本文是【淺析微信支付】系列文章的第十一篇,主要講解支付驗收示例和驗收指引。 淺析微信支付系列已經(jīng)更新十一篇了喲~,沒有看過的朋友們可以看一下。 淺析微信支付:如何使用沙箱環(huán)境測試 淺析微信支付:下載對賬單...
摘要:本文是淺析微信支付系列文章的第十五篇,主要講解如何開通免充值產(chǎn)品功能流程和其中的注意事項,對于接口升級會重要講解,避免爬坑。 本文是【淺析微信支付】系列文章的第十五篇,主要講解如何開通免充值產(chǎn)品功能流程和其中的注意事項,對于接口升級會重要講解,避免爬坑。 淺析微信支付系列已經(jīng)更新十五篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:商戶平臺代金券或立減優(yōu)惠開通、指定用戶代金券發(fā)...
摘要:淺析微信支付前篇大綱本文是淺析微信支付系列文章的第一篇,主要會介紹一下為何寫下這個系列以及對于微信支付的一點小經(jīng)驗,與君共勉。下面講一下我是如何去學(xué)習(xí)微信支付的。 淺析微信支付:前篇大綱 本文是【淺析微信支付】系列文章的第一篇,主要會介紹一下為何寫下這個系列以及對于微信支付的一點小經(jīng)驗,與君共勉。 以下會分幾個步驟講一下我學(xué)習(xí)微信支付的過程,也是一部辛酸史,也是希望朋友們不要再次跌進...
摘要:本文是淺析微信支付系列文章的第九篇,主要講解商戶下載對賬單接口和資金賬單接口的實現(xiàn)和一些注意事項。注意微信側(cè)未成功下單的交易不會出現(xiàn)在對賬單中。 本文是【淺析微信支付】系列文章的第九篇,主要講解商戶下載對賬單接口和資金賬單接口的實現(xiàn)和一些注意事項。 淺析微信支付系列已經(jīng)更新九篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支付:申請退款、退款回調(diào)接口、查詢退款 淺析微信支付:查詢訂...
摘要:本文是淺析微信支付系列文章的第十二篇,主要講解在商戶存在的提現(xiàn)商戶付款到微信用戶零錢或者銀行卡需求。應(yīng)用場景微信支付已上線企業(yè)付款至銀行卡功能。企業(yè)付款到銀行卡發(fā)票與交易手續(xù)費發(fā)票為拆分單獨開具。 本文是【淺析微信支付】系列文章的第十二篇,主要講解在商戶存在的提現(xiàn)、商戶付款到微信用戶零錢或者銀行卡需求。 淺析微信支付系列已經(jīng)更新十二篇了喲~,沒有看過的朋友們可以看一下哦。 淺析微信支...
閱讀 2452·2021-11-22 09:34
閱讀 3063·2021-10-25 09:43
閱讀 1975·2021-10-11 10:59
閱讀 3361·2021-09-22 15:13
閱讀 2323·2021-09-04 16:40
閱讀 418·2019-08-30 15:53
閱讀 3186·2019-08-30 11:13
閱讀 2602·2019-08-29 17:30