评论

APP调起支付签名报错排查指引

APP调起支付签名报错排查指引

APP调起支付需要通过opensdk来调起(iOS相关资源Android相关资源

V2版接口和V3版接口规则差异说明:

- 参数格式:V2接口为XML,V3接口为JSON

- 签名方式:V2接口为MD5或HMAC-SHA256,V3接口为非对称密钥SHA256-RSA

- 回调加密:V2接口无需加密,V3接口为AES-256-GCM加密


本文章主要协助开发者定位APP调起支付返回签名验证失败报错的问题,大家可根据以下步骤逐步排查。

V2版本排查步骤:

步骤一、签名类型与下单时的签名类型不一致

检查调起支付的签名类型是否与下单一致,比如下单是HMAC-SHA256,而调起支付用的是MD5


步骤二、生成签名原串的参数和实际请求参数不一致

检查生成签名串的参数与实际发起请求的参数是否一致


步骤三、调起支付时的请求参数名大小写不正确

检查客户端调用时的传参是否正确


步骤四、使用的API版本不一致

检查下单和调起支付时使用的API版本是否一致,比如下单用的V2版本的API,而调起支付又使用的是V3的API来实现。


步骤五、使用的商户号不一致

检查下单和调起支付时使用的商户号是否一致,比如下单用的是A商户号,而调起支付又使用的是B商户号信息生成签名

步骤六、使用的key不正确

需要用APIv2密钥生成签名, key设置路径:微信商户平台(pay.weixin.qq.com)-->账户中心-->账户设置-->API安全-->设置API密钥

步骤七、没有重新生成签名

调起支付的签名需要重新按照调起支付文档中规定的参数和要求生成,而不能直接使用统一下单接口的签名值(sign)


V3版本排查步骤:

步骤一、生成签名原串的参数和实际请求参数不一致

检查生成签名串的参数值与客户端实际发起请求的参数值是否一致


步骤二、调起支付时构造签名串的字段和格式不正确

检查调起支付时构造签名串格式是否正确,参与签名字段及格式应是:


步骤三、调起支付时的大小写不正确

检查客户端调用时的传参是否正确


步骤四、使用的API版本不一致

检查下单和调起支付时使用的API版本是否一致,比如调起支付参考的V3的API规则实现,而下单用的V2统一下单。


步骤五、使用的商户号不一致

检查下单和调起支付时使用的商户号是否一致,比如下单用的是A商户号,而调起支付又使用的是B商户号信息生成签名

步骤六、没有重新生成sign

调起支付的签名(paySign)需要重新按照调起支付文档中规定的参数和要求生成,而不能直接使用下单接口的签名值(signature


如通过以上步骤仍然无法解决你的问题,可以在帖子提供关键信息(比如签名工具中的截图和通过postman请求报错)并留言,记得对敏感信息打码,比如key,mch_id,appid等

附录

1、SDK与相关API规则介绍

2、服务端签名报错排查指引

3、客户端签名报错排查指引


最后一次编辑于  2023-10-25  
点赞 1
收藏
评论

6 个评论

  • 飘扬
    飘扬
    06-30

    就不能把顺序理一下吗?搞的乱七八糟的,我JSAPI能正常支付,App 死活付不了,一直提示我签名错误,气死了,你们公司那么多人,就不能让一个人专门做个demo? 不做事的开除算了,写那一堆乱七八糟的浪费别人时间,原本几分钟就能好的事,非要别人把所有文档看一遍,而且前后顺序也不理一下,简单的东西偏偏要复杂化,sb一样的,签名工具也报错,换几台电脑都打不开,垃圾公司。你直接第一步干嘛,第二步干嘛,弄个顺序多清楚,然后app和其他签名方式是不同还是一样,在app 那标注一下噻

    06-30
    赞同
    回复
  • V
    V
    05-11

    这签名,就拿appId来说,一会是大写(appId)一会是小写(appid),能不能规范点啊。

    05-11
    赞同
    回复
  • 侯云松
    侯云松
    2023-12-08

    2023-12-08
    赞同
    回复
  • 侯云松
    侯云松
    2023-12-08

    包名我检查了是对的啊

    2023-12-08
    赞同
    回复
  • 侯云松
    侯云松
    2023-12-08

    就在这里报错了

    2023-12-08
    赞同
    回复
  • 侯云松
    侯云松
    2023-12-08

    调起微信支付异常

    2023-12-08
    赞同
    回复 2
    • H、
      H、
      2023-12-11
      可以再排查确认下代码中引用的 APPID 是否与开放平台上对应应用的APPID是否一致,尤其是有多个应用的情况下,确认清楚应用所使用的APPID、应用包名、应用签名是否与开放平台上登录的信息是否完全一致,如自查后,还有问题,提供复现时间点,微信号,应用AppId,包名,签名以及接入的opensdk版本信息去社区小程序目录下发个帖子,他们看到会协助你排查问题。
      2023-12-11
      回复
    • BOLT.Q
      BOLT.Q
      2023-12-13
      我想问一下,因为是支付商户平台的appid和应用的appid是两个不同的,他们之间做了关联,然后在app支付统一下单,还有调起支付,还有加密,这三个appid用的是哪个?
      2023-12-13
      回复
登录 后发表内容