支付測(cè)試指引
閱讀對(duì)象
本文閱讀對(duì)象為:商戶自有系統(tǒng)(包括但不限于:在線購(gòu)物平臺(tái)、人工收銀系統(tǒng)、自動(dòng)化智能收銀系統(tǒng)、APP應(yīng)用等)負(fù)責(zé)微信支付功能測(cè)試的測(cè)試及開發(fā)人員。
測(cè)試說(shuō)明
一、概述
為保證商戶接入質(zhì)量,提升交易安全及用戶體驗(yàn),微信支付的合作服務(wù)商在正式上線交易前,建議先根據(jù)本文指引完成正常與異常情況的測(cè)試。
二、仿真測(cè)試系統(tǒng)
為降低商戶測(cè)試門檻,微信支付團(tuán)隊(duì)開發(fā)了一套獨(dú)立的仿真測(cè)試系統(tǒng)。該系統(tǒng)分為兩種用例類型:支付成功用例與支付異常用例。支付成功用例根據(jù)測(cè)試用例金額的不同返回不同的響應(yīng)報(bào)文,支付異常用例的識(shí)別將通過(guò) Http Header 中添加異常頭 Wechatpay-Negative-Test: {用例名} 識(shí)別。沙箱系統(tǒng)將通過(guò)識(shí)別用例名返回對(duì)應(yīng)的異常信息。
圖1 微信支付仿真測(cè)試系統(tǒng)
圖1為微信支付仿真測(cè)試系統(tǒng)(后簡(jiǎn)稱仿真系統(tǒng))的簡(jiǎn)化原理圖。仿真系統(tǒng)的API協(xié)議與正式API完全相同(API接口文檔)。商戶開發(fā)者只需將正式API的調(diào)用URL增加一層 xdc/apiv2sandbox 路徑,即可對(duì)接到仿真系統(tǒng)。
例如,付款碼支付URL:https://api.mch.weixin.qq.com/pay/micropay
變更為:https://api.mch.weixin.qq.com/xdc/apiv2sandbox/pay/micropay。
注意:目前只支持付款碼支付成功用例與付款碼支付異常用例中的接口調(diào)用,下單接口:https://api.mch.weixin.qq.com/pay/unifiedorder 等目前暫不支持使用
仿真系統(tǒng)與生產(chǎn)環(huán)境完全獨(dú)立,包括存儲(chǔ)層。商戶在仿真系統(tǒng)所做的所有交易(如下單、支付、查詢)均為無(wú)資金流的假數(shù)據(jù),即:用戶無(wú)需真實(shí)扣款,商戶也不會(huì)有資金入賬。代金券同理,沙箱環(huán)境中無(wú)需商戶真實(shí)制券與發(fā)券,亦不會(huì)出現(xiàn)真實(shí)扣券情況。測(cè)試仿真測(cè)試系統(tǒng)的API驗(yàn)簽密鑰需從API獲取:
獲取驗(yàn)簽秘鑰API:請(qǐng)求Url | https://api.mch.weixin.qq.com/xdc/apiv2getsignkey/sign/getsignkey |
---|---|
是否需要證書 | 否 |
請(qǐng)求方式 | POST |
字段名 | 字段 | 必填 | 示例值 | 類型 | 說(shuō)明 |
---|---|---|---|---|---|
商戶號(hào) | mch_id | 是 | 1305638280 | String(32) | 微信支付分配的微信商戶號(hào) |
隨機(jī)字符串 | nonce_str | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 隨機(jī)字符串,不長(zhǎng)于32位 |
簽名 | sign | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | String(32) | 簽名值 |
字段名 | 字段 | 必填 | 示例值 | 類型 | 說(shuō)明 |
---|---|---|---|---|---|
返回狀態(tài)碼 | return_code | 是 | SUCCESS | String(16) | SUCCESS/FAIL?此字段是通信標(biāo)識(shí),非交易標(biāo)識(shí) |
返回信息 | return_msg | 否 | 簽名失敗 | String(128) | 返回信息,如非空,為錯(cuò)誤原因?,簽名失敗?,參數(shù)格式校驗(yàn)錯(cuò)誤 |
以下字段在return_code 為SUCCESS的時(shí)有返回。
字段名 | 字段 | 必填 | 示例值 | 類型 | 說(shuō)明 |
---|---|---|---|---|---|
商戶號(hào) | mch_id | 是 | 1305638280 | String(32) | 微信支付分配的微信商戶號(hào) |
沙箱密鑰 | sandbox_signkey | 否 | 013467007045764 | String(32) | 返回的沙箱密鑰 |
商戶接入仿真系統(tǒng)的交互流程示例:
1. 商戶發(fā)起付款碼支付請(qǐng)求,使用POST方式調(diào)用 https://api.mch.weixin.qq.com/xdc/apiv2sandbox/pay/micropay
2. 帶xdc/apiv2sandbox的https請(qǐng)求會(huì)被nginx路由到仿真系統(tǒng)。仿真系統(tǒng)根據(jù)對(duì)應(yīng)用例返回預(yù)期報(bào)文給商戶。同時(shí),落地該筆請(qǐng)求數(shù)據(jù);
3. 商戶發(fā)起查單,調(diào)用 https://api.mch.weixin.qq.com/xdc/apiv2sandbox/pay/orderquery,帶上微信訂單號(hào)(transaction_id)或商戶內(nèi)部單號(hào)(out_trade_no);
4. 仿真系統(tǒng)收到查單請(qǐng)求后,根據(jù)單號(hào)及金額返回預(yù)期的查單結(jié)果給商戶
三、測(cè)試流程
圖2 商戶接入測(cè)試流程
如圖2,商戶在收到微信支付審核通過(guò)的郵件后,即可用郵件中提供的開發(fā)者信息,啟動(dòng)測(cè)試測(cè)試工作。測(cè)試開始后,測(cè)試負(fù)責(zé)人可按照下表步驟操作:
步驟 | 準(zhǔn)備項(xiàng) | 說(shuō)明 |
---|---|---|
1 |
商戶通過(guò)審核,收到審核通過(guò)的郵件。 郵件中包含了商戶的MCHID、APPID及密碼等開發(fā)者信息。 |
/ |
2 |
測(cè)試硬件全部到位,且被測(cè)的APP已被成功安裝在硬件。 |
1、付款碼支付:被測(cè)app已被安裝至收銀臺(tái)平板,機(jī)具或掃碼槍功能正常 |
3 |
按照本文下方測(cè)試用例進(jìn)行測(cè)試 |
/ |
4 |
修改代碼或配置中所有微信支付api的鏈接,對(duì)接仿真系統(tǒng)。 |
例如:付款碼支付現(xiàn)網(wǎng)的api https://api.mch.weixin.qq.com/pay/micropay 變更為: https://api.mch.weixin.qq.com/xdc/apiv2sandbox/pay/micropay |
5 |
嚴(yán)格按照用例的順序、金額執(zhí)行用例,確保用例的檢查點(diǎn)完全符合預(yù)期。 |
/ |