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流程图