yansongda/pay升级避雷记录

负责的一个项目前端是微信小程序,用到了支付功能,后端使用的是yansongda/pay(Pay)这个支付框架,起初,版本用的是v2.3,最近,业务需要做分账功能,yansongda/pay框架只有3.x版本里面才有分账插件,实在不想自己再造一个轮子,只好选择版本升级,不可避免,开始了一次踩坑之旅。

yansongda/pay 的文档写得简洁明了,遇到问题可以借助日志进行分析,追踪日志,最后会到微信支付v3相关API上面。

微信支付v3相关得API又是特别神奇,看似文档写得非常全面,但是在一些新手特别容易出问题得地方又一笔带过,集成或升级时搞得一头雾水,最后不得不面向Google编程。

遇到的问题

Prepay Response Error: Missing PrepayId(yansongda 文档FAQ中有写)

解决方案:调微信支付接口时的参数有误,一般在日志中会有明确说明是哪个参数的问题,只要正确传递即可解决。

支付成功回调中验签时,总返回false,导致代码报错

TypeError: json_decode() expects parameter 1 to be string, bool given in /www/wwwroot/plus-php/vendor/yansongda/pay/src/Functions.php:330

解决方案:

找了很多参考资料,微信开放社区(微信支付API-V3,SIGN_ERROR,验签失败,请检查签名,仍未解决,请求大大们帮助,感谢? | 微信开放社区

最终定位为 配置参数错误导致,统一支付接口中,应该使用apiv3密钥,我配置成了API密钥,将商户密钥配置改成 apiv3密钥即可解决问题。

至此,微信支付v3 集成到了项目当中。

工具:

  • 获取微信平台证书

GitHub - wechatpay-apiv3/CertificateDownloader: Java 微信支付 APIv3 平台证书的命令行下载工具

这个工具可以从 https://api.mch.weixin.qq.com/v3/certificates 接口获取商户可用证书,并使用 APIv3 密钥 和 AES_256_GCM 算法进行解密,并把解密后证书下载到指定位置。

  • 通过工具测试验签

微信支付API-V3,SIGN_ERROR,验签失败,请检查签名,仍未解决,请求大大们帮助,感谢? | 微信开放社区

  • API证书下载工具

什么是API证书?如何获取API证书?

总结

  • 先搞懂微信支付API v3中的几种证书、密钥(按提示规则设定,避免掉坑)、以及参数的含义
  • 先将第三方支付框架的文档看几遍,分析一下当前项目升级需要动哪些点?(升级前做好版本管理,升级废了可以回滚)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值