收藏
回答

微信支付服务商模式 jsapi支付 wx.chooseWXPay 支付验证签名失败 ?

----2020/05/11更新流程

统一下单xml

<xml><appid><![CDATA[wxb1dddad0350dabfe]]></appid><attach><![CDATA[物业费]]></attach><body><![CDATA[物业费-201912,202001,202002,202003]]></body><device_info><![CDATA[WEB]]></device_info><mch_id><![CDATA[1580178811]]></mch_id><nonce_str><![CDATA[3812196814]]></nonce_str><notify_url><![CDATA[链接]]></notify_url><openid><![CDATA[]]></openid><out_trade_no><![CDATA[PMF_2005111434133051823]]></out_trade_no><sign><![CDATA[95727D0C376D8DE384C7AC03BBF7DFF5]]></sign><sign_type><![CDATA[MD5]]></sign_type><spbill_create_ip><![CDATA[0.0.0.0]]></spbill_create_ip><sub_appid><![CDATA[wx7255f1881841f157]]></sub_appid><sub_mch_id><![CDATA[1585215461]]></sub_mch_id><sub_openid><![CDATA[oJ4e3wI05arRm0Lhm8sj_x-kUjQw]]></sub_openid><time_expire><![CDATA[20200511144413]]></time_expire><time_start><![CDATA[20200511143413]]></time_start><total_fee>400</total_fee><trade_type><![CDATA[JSAPI]]></trade_type></xml>

统一下单,验证如下图

二次验证

前端用的 chooseWXPay jsSDK注册时用的appId 是 wx7255f1881841f157

下面是前端请求的参数值,参数大小写对照过是对的


-----原内容

前言:之前的业务是 普通商户,整个模式是走通了的,现在换成服务商户模式,出现如标题所示问题,烦请大神们帮忙看看啊啊 啊啊啊

目前做过的努力:

1.认为jssdk注册时使用的是子商户的appId,认为是这个appId出现了问题,无效

2.wx.chooseWXPay中的参数少了sub_appId,又增加了 sub_appId 无效

3.尝试重置API密钥多次 无效

目前可以肯定的是:

1.加密方式一致都是MD5

2.二次验证的参数 和后台验证的参数是一致的。

跪求大神给个思路帮助,心态崩了 香菇

下图为 后端返给前端的数据,前端chooseWXPay是直接使用的这个数据

PS:JSSDK注册时 使用的是 服务商号的appId 这里返回的appId是子商户的appId

最后一次编辑于  2020-05-11
回答关注问题邀请回答
收藏

3 个回答

  • 微信支付技术助手8
    微信支付技术助手8
    2020-05-09

    服务商模式下,调用支付你用的秘钥是哪个?你把你完整的调用过程还有参数都发出来看看。

    另外,按照一下几点排查一下。

    1、使用签名检查工具(https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误

    2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)

    3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)

    4、确认参数的大小写,参数名与接口文档一致

    5、签名原串的参数值使用原始值,不需要encode

    6、接口需要使用UTF-8编码

    2020-05-09
    有用
    回复 2
  • Daniel
    Daniel
    01-29

    https://blog.csdn.net/wyhhxd/article/details/95320361

    01-29
    有用
    回复
  • 朱曉傻💤
    朱曉傻💤
    2020-05-08

    确认原因是因为二次验证得时候key错误了,大家如果发现这个问题,不要过度依赖官方验证页面,可能它本身验证也有问题(我的猜测)

    总结:所有得不可思议得问题,都是小问题,重新review代码慢慢排查,(我就是一开始没有安静下来排查,后来实在没办法,夜深人静得时候花了30分钟review了代码,终于发现了错误原因)

    最后祝愿所有得小伙伴,以后开发微信支付都顺利一次过

    2020-05-08
    有用
    回复 1
    • 龙
      2020-10-01
      请问二次验证你是用的子商户的私钥还是服务商的?
      2020-10-01
      回复
登录 后发表内容
问题标签