微信V2,用的是同样的MD5签名算法程序,使用普通商户发起【付款码支付】可以成功支付。但是,接口参数换成服务商模式的【付款码支付】总是签名错误。在【微信支付接口签名校验工具】中也是签名错误。不知道是什么原因。请微信支付技术人员指导,谢谢,谢谢。 设置参数如下:
参数设置:
appid =》 服务商商户的APPID
auth_code =》 XXXXXXXXXXXXXX
body =》 账户充值
mch_id =》 服务商商户的商户号
nonce_str =》 30a5a80afc17410181dc8a5268e72580
out_trade_no =》 XXXXXXXXXXXXXXX
spbill_create_ip =》 8.8.8.8
sub_mch_id =》 子商户号
total_fee =》 50
平台设置:
特约商户(子商户)已授权 【服务商付款码支付】。
签名密钥:
使用服务商的 商户号密钥。
请按照以下几点进行排查:
1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误
2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)
3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)
4、确认参数的大小写,参数名与接口文档一致
5、签名原串的参数值使用原始值,不需要encode
6、接口需要使用UTF-8编码
对参数按照key=value的格式,每个参数的key和value都检查。如果key和value的前后有空格,需要trim掉。否则会发生签名错误。