微信支付服务商模式签名错误小坑

一开始对接是非服务商模式,后面发现服务商模式税率更低,所以改为服务商模式

微信支付服务商模式签名错误小坑_第1张图片

微信支付服务商模式签名错误小坑_第2张图片

通过对比文档发现两种模式的区别主要在于服务商模式增加了参数sub_appid、sub_mch_id,其中sub_appid非必传,只有在trade_type=JSAPI才有必要,然而当我把sub_mch_id添加进去之后调用api却提示签名错误

 

签名生成算法都是跳转到同一个地址,因此签名是同一个计算规则

签名计算文档:https://pay.weixin.qq.com/wiki/doc/api/native_sl.php?chapter=4_3

 

利用微信提供的签名校验工具跟我算出来sign结果是一致的

签名校验工具https://pay.weixin.qq.com/wiki/doc/api/native_sl.php?chapter=20_1

 

签名校验工具下方有指出一些常见的签名错误原因

微信支付服务商模式签名错误小坑_第3张图片

但此处步骤三是有问题的

根据签名计算文档(https://pay.weixin.qq.com/wiki/doc/api/native_sl.php?chapter=4_3)得知第二步需要拼接密钥(&key=密钥)

微信支付服务商模式签名错误小坑_第4张图片

 

签名校验工具常见问题的步骤三给出的密钥设置路径为:微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全-->密钥设置,实际上这是针对非服务商模式的密钥

而服务商模式的密钥设置路径为:微信服务商平台(pay.weixin.qq.com用服务商账号登录会自动跳转过去)-->账户中心-->账户设置-->API安全-->密钥设置,服务商模式的密钥使用的则是此处设置的密钥

 

总结:服务商模式计算签名的密钥需要在微信服务商平台(pay.weixin.qq.com用服务商账号登录会自动跳转过去)-->账户中心-->账户设置-->API安全-->密钥设置得到

你可能感兴趣的:(java,微信支付,java,微信支付)