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