wechatpay-apiv3 / wechatpay-php

微信支付 APIv3 的官方 PHP Library,同时也支持 APIv2
Apache License 2.0
475 stars 98 forks source link

支付回调验签失败 #123

Closed tashuo closed 10 months ago

tashuo commented 11 months ago

运行环境

- OS: CentOS 7.9.2009
- PHP: 7.4.5
- Laravel: 8.12
- wechatpay-php: 1.4.8

描述你的问题现象

  1. 依照文档示例中"回调通知"章节写了一个支付回调的接口
  2. $inBody = file_get_contents('php://input') body使用的这个方式获取
  3. 现在验签$verifiedStatus一直通过不了,试着将相关的资源配置及请求数据打印出来,未看到明显的异常,请问该如何调试?
tashuo commented 11 months ago

但是后面的aes可以正常解密,是不是微信支付证书不匹配的问题

TheNorthMemory commented 11 months ago

https://github.com/wechatpay-apiv3/wechatpay-php/blob/fbe8d7c2b3b367e42bf98caa0cce582b3205d427/README.md?plain=1#L372-L412

验签需要从头上取Wechatpay-Serial,其就是平台证书序列号,需要加载先行下载的平台证书并加载验签名。请试着理解这段样本代码先。

tashuo commented 11 months ago

https://github.com/wechatpay-apiv3/wechatpay-php/blob/fbe8d7c2b3b367e42bf98caa0cce582b3205d427/README.md?plain=1#L372-L412

验签需要从头上取Wechatpay-Serial,其就是平台证书序列号,需要加载先行下载的平台证书并加载验签名。请试着理解这段样本代码先。

这个逻辑有处理的,目前的平台证书用的固定一个(同下单逻辑),回调请求中的Wechatpay-Serial跟固定使用的那个平台证书序号也一致

tashuo commented 11 months ago

暂时去掉了验签逻辑,因为回调数据解密后还会请求查询订单接口验证状态,所以暂时影响也不大

TheNorthMemory commented 11 months ago

暂时去掉了验签逻辑,因为回调数据解密后还会请求查询订单接口验证状态,所以暂时影响也不大

程序代码都已经为你甄别出来了问题,有问题就去解决掉;回避问题抑或延后处理都不是严谨的处事方式,尤其在支付领域。

TheNorthMemory commented 10 months ago

Good luck dude.