快速上手
- 什么是“被掃支付”、“刷卡支付”
- 刷卡支付是用戶展示微信錢包內的“刷卡條碼/二維碼”給商戶系統掃描后直接完成支付的模式。主要應用線下面對面收銀的場景。
什么是“被掃支付”
- “被掃支付”是用戶展示微信上“我的刷卡條碼/二維碼”給商戶系統掃描后直接完成支付的模式,主要應用線下面對面收銀的場景。
- 具體的場景如下:
- 第一步用戶選擇被掃支付付款并打開微信,進入“我”->“錢包”->“刷卡”條碼界面;(如圖5.1所示)
- 第二步收銀員在商戶系統操作生成支付訂單,用戶確認支付金額;
- 第三步商戶收銀員用掃碼設備掃描用戶的條碼/二維碼,商戶收銀系統提交支付;
-
第四步微信支付后臺系統收到支付請求,根據驗證密碼規則判斷是否驗證用戶的支付密碼,不需要驗證密碼的交易直接發起扣款,需要驗證密碼的交易會彈出密碼輸入框(如圖5.2所示)。支付成功后微信端會彈出成功頁面(如圖5.3所示),支付失敗會彈出錯誤提示。
img
一張圖看懂整個SDK的結構:

img
SDK層級詳解:
1)通用層

img
這里封裝了很多非常基礎的組件,供上層服務調用,其中包括以下組件:
- 基礎配置組件(
Configure
)- 該組件用來從
wxpay.properties
里面獲取到跟商戶相關的幾個關鍵配置信息。
- 該組件用來從
- HTTPS請求器(
HttpsRequest
)- 發HTTPS請求的底層封裝。
- 隨機數生成器(
RandomStringGenerator
)- 用來生成指定長度的隨機數。
- MD5加密算法(MD5)
-
XMLParser
(XML解析器)- 由于API返回的數據是XML格式,所以SDK這里也提供了對返回的XML數據進行解析成Java對象的能力,方便大家可以快速處理API返回的數據。
- 簽名(
Signature
)- 為了防止數據在傳輸過程中被篡改,所以這里要對字段做簽名運算。
- 基礎工具(Util)
- 開發過程中用到的一些基礎工具類函數。
- 日志上報
- 這里會將SDK里面的模塊調用情況,程序執行流程給打好詳細日志,Log系統用的是SLF4J這套通用解決方案,方便對接商戶系統自己的日志邏輯。
- 性能上報
- 這里用的是微信支付統一的API性能上報接口進行上報,可以實現將每次調用支付API的耗時、返回碼等相關數據進行上報。
(以上講了這么多,只要使用了這個SDK,這些東西都幫大家解決掉了_,這就是我們為啥需要有一個SDK~)
- 這里用的是微信支付統一的API性能上報接口進行上報,可以實現將每次調用支付API的耗時、返回碼等相關數據進行上報。
2)協議層

img
這里跟API文檔定義的字段進行一一對應,協議層這里分為兩部分:
- 第一部分是“請求數據”,這里定義了每一個API請求時需要傳過去的具體數據字段;
- 第二部分是“返回數據”,這里定義了每一個API返回時會傳的具體數據字段;
以上協議在“服務層”提供的各種服務里面已經幫忙封裝好,直接使用服務即可。
3)服務層

img
這里已經根據API文檔封裝好具體服務,供開發者直接調用。
例如,以下代碼直接調用PayService.request提交支付請求,商戶只需要從自己的系統生成該服務提交協議里面要求的數據項即可:
payServiceResponseString = PayService.request(
authCode,//auth_code:這個是掃碼終端設備從用戶手機上掃取到的支付授權號,這個號是跟用戶用來支付的銀行卡綁定的,有效期是1分鐘
body,//body:要支付的商品的描述信息,用戶會在支付成功頁面里看到這個信息
attach, //attach:支付訂單里面可以填的附加數據,API會將提交的這個附加數據原樣返回,有助于商戶自己可以注明該筆消費的具體內容,方便后續的運營和記錄
outTradeNo,//out_trade_no:商戶系統內部的訂單號,32個字符內可包含字母, [確保在商戶系統唯一]
totalFee,//total_fee:訂單總金額,單位為“分”,只能整數
deviceInfo,//device_info:商戶自己定義的掃碼支付終端設備號,方便追溯這筆交易發生在哪臺終端設備上
spBillCreateIP,//spBillCreateIP:訂單生成的機器IP
timeStart,//time_start:訂單生成時間
timeEnd,//time_end:訂單失效時間
goodsTag//goods_tag:商品標記,微信平臺配置的商品標記,用于優惠券或者滿減使用
);
4)業務層

img
- 業務層是比服務更加高級的封裝。業務層通過服務層向API提交請求,拿到API的返回數據之后會對返回數據做一些數據解析、簽名校驗、出錯判斷等操作。
- 對于像“被掃支付”這種比較復雜和常用的業務,這里特別封裝了官方建議的最佳實踐流程。里面涵蓋了“支付”、“支付查詢”、“撤銷”等幾個服務和建議的流程、輪詢次數、輪詢間隔等。商戶開發可以直接使用,也可以通過修改里面的配置來自定義自己的流程。
如何使用該SDK:
請直接下載demo,demo那邊也有詳細的指引,商戶用demo中完善的代碼進行補充流程處理就可以了。點此獲取demo