2.3商戶支付注意規則
2.3.1協議規則
2.3.2安全規范
1.簽名算法------(簽名校驗工具)
步驟:
第一步,設所有發送或者接收到的數據為集合M,將集合M內非空參數值的參數按照參數名ASCII碼從小到大排序(字典序),使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串stringA。 第二步,在stringA最后拼接上key得到stringSignTemp字符串,并對stringSignTemp進行` MD5運算` ,再將得到的字符串所有字符轉換為`大寫`,得到sign值signValue。 key設置路徑:微信商戶平臺(pay.weixin.qq.com)-->賬戶設置-->API安全-->密鑰設置
例子:
1. 假設傳送的參數如下:
-----------------------
appid: ???wxd930ea5d5a258f4f
mch_id: ???10000100
device_info: ???1000
body: ???test
nonce_str: ???ibuaiVcKdpRxkhJA
-----------------------
2. 對參數按照key=value的格式,并按照參數名ASCII字典序排序如下: -----------------------stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100&nonce_str=ibuaiVcKdpRxkhJA";
-----------------------
3. 第二步:拼接API密鑰: -----------------------stringSignTemp=stringA+"&key=192006250b4c09247ec02edce69f6a2d"sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7" -----------------------
4. 最終結果
=======================
wxd930ea5d5a258f4f
10000100
1000
test
ibuaiVcKdpRxkhJA 9A0A8659F005D6984697E2CA0A9CF3B7 =======================
注意事項:
◆ 參數名ASCII碼從小到大排序(字典序); ◆ 如果參數的值為空不參與簽名; ◆ 參數名區分大小寫; ◆ 驗證調用返回或微信主動通知簽名時,傳送的sign參數不參與簽名,將生成的簽名與該sign值作校驗。◆ 微信接口可能增加字段,驗證簽名時必須支持增加的擴展字段
2.3.3證書相關內容
當涉及資金回滾時,需要用到證書,比如退款、撤銷接口, 證書一共包含四個(pkcs12格式,CA證書(rootca.pem),證書pem格式(apiclient_cert.pem),證書密鑰pem格式(apiclient_key.pem)) 其中◆apiclient_cert.p12是商戶證書文件,除PHP外的開發均使用此證書文件。
我們關注的主要是apiclient_cert.p12是商戶證書文件,路徑下載:
微信商戶平臺(pay.weixin.qq.com)-->賬戶中心-->賬戶設置-->API安全-->證書下載。
2.4業務流程圖
四種支付,四種不同的流程圖,所以羅列下來吧
1.刷卡支付流程圖
2.公眾號支付流程圖
4.APP流程圖