收藏
回答

微信代金劵核销事件回调,为什么header没有签名?(四)

问题api:https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/marketing/convention/chapter4_1.shtml

相似问题:https://developers.weixin.qq.com/community/develop/doc/0004209903c9009c278af00e351c00?_at=1595376433090

问题描述:请求头中没有签名字段,没有Wechatpay-Signature等信息。经过排查,我方已经确定获取平台证书、发放代金劵、设置回调通知地址等功能已经实现,现在可以正常发劵,可以对请求和响应进行加密解密。但在核销事件上,我们可以接收到回调事件,回调请求的请求体也是正常的,包含了文档中的应有数据,只是请求头中一直没有Wechatpay-Signature等字段,求解决方案,非常感谢。

先给大家道个歉,我也不想刷屏,主要是没有回应,卡在这,什么也做不了,在线求一个说法。

看到社区有很多类似的情况,也都没有得到回应,姑且帮大家发一下吧。

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

2 个回答

  • 本王今年八岁
    本王今年八岁
    2020-07-22

    你好,感谢您的回复。

    关于resource.ciphertext 的AES对称加密范畴解密我是做好了的,这一步在发劵的response中就被证实是正常工作的。

    我这边提的问题是核销事件的request的header中没有签名信息,无法通过签名验证。微信支付,在文档中特意声明让去校验签名,却没有给出签名,是开发进度卡在这块了,故有此一问。

    2020-07-22
    有用
    回复 3
    • 北望沣渭
      北望沣渭
      发表于移动端
      2020-07-22
      我想起来了,以nginx为例,proxypass可能会漏掉Wechatpay-Sinature这几个头,可能的原因是,你家的webserver把支付的这几个头给过滤掉了,没透传给应用侧;你需要排查一下你们的webserver设置。
      2020-07-22
      回复
    • 本王今年八岁
      本王今年八岁
      2020-07-22回复北望沣渭
      不是哦,我从两个方向验证了,一个是将微信回调解析到一个纯ip上,仍然没有签名,还有就是使用postman模拟回调,带上签名,逻辑可以正常进行。另外是这个问题在社区出现了4次,应该挺常见。
      2020-07-22
      回复
    • 北望沣渭
      北望沣渭
      2020-07-22
      嗯,这个问题一般不好定位,抛出问题很正常。按我们之前的既往经验来看,微信支付通知的这4个头,不是标准HTTP头,很有可能被webserver或者前置负载均衡器给屏蔽忽略掉了,我们之前有在CDN加速场景遇到过类似情况,最后定位是在前置ELB上给调整才获取到非标准HTTP头的。
      2020-07-22
      回复
  • 北望沣渭
    北望沣渭
    2020-07-22

    回调通知属于AES对称加密范畴,和主动请求API头上的RSA非对称加密不是一回事。

    回调通知里的内容对业务数据做了加密,存在 resource.ciphertext 字段内,需要读取这个字段,按文档解密就好,就能拿到所需业务数据JSON串。

    2020-07-22
    有用
    回复 1
    • 本王今年八岁
      本王今年八岁
      2020-07-22
      你好,感谢您的回复。

      关于resource.ciphertext 的AES对称加密范畴解密我是做好了的,这一步在发劵的response中就被证实是正常工作的。

      我这边提的问题是核销事件的request的header中没有签名信息,无法通过签名验证。微信支付,在文档中特意声明让去校验签名,却没有给出签名,是开发进度卡在这块了,故有此一问。
      2020-07-22
      回复
登录 后发表内容
问题标签