收藏
回答

服务商模式下采用sha256签名请求API接口正常,API接口返回的数据校验不正常。

服务商模式下,调用支付接口,采用MD5算法签名,下订单、支付、回调都正常。

但是采用SHA256的算法进行签名,API接口返回的数据包中的sign却无法通过签名校验。

我debug了一下,无论是用MD5的结果来比对还是用SHA256的结果来比对,都跟API接口传回来的sign不一样。

API接口返回的数据看起来很正常。只有签名算出来不对。 难道这个时候参与签名使用的商户Key是需要子商户的吗?

有大神可以指点一下吗?

回答关注问题邀请回答
收藏

1 个回答

  • Javen
    Javen
    2019-12-16

    回调中的签名方式需与统一下单的签名类型一致,服务商模式下「商户Key」 是使用服务商的。签名错误建议对比一下回调中的 appId 对应的商户 Key 是否有误。


    2019-12-16
    有用 1
    回复 1
    • 小蒋哥
      小蒋哥
      2019-12-19
      多谢多谢,我也发现了:下单时候用的什么算法签名,API返回的数据就是用什么方法签名。包括回调通知的数据也是用此签名算法。
      另外这个问题已经解决:我用的C#,文档提供的SDK里面WxPayData类自带的SHA算法里面用的编码是( var enc = Encoding.Default;)后来我改成(enc = Encoding.UTF8;),签名校验正确了。可能是因为服务器上的默认编码不是UTF8所导致的。
      但是又带来的新的疑问:为什么我用Default算出的签名,下单时API端并未返回签名错误的消息,而是下单成功了?
      2019-12-19
      回复
登录 后发表内容
问题标签