klover2 / wechatpay-node-v3-ts

微信支付v3
MIT License
575 stars 88 forks source link

请问是否能够开发支持成功支付以后的签名验证? #7

Closed vikingmute closed 2 years ago

vikingmute commented 3 years ago

非常好的库,希望能够添加支付以后签名验证的功能。这也是支付过程中官方文档中推荐的必要流程。 具体流程请见: https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/qian-ming-yan-zheng

klover2 commented 3 years ago

非常好的库,希望能够添加支付以后签名验证的功能。这也是支付过程中官方文档中推荐的必要流程。 具体流程请见: https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/qian-ming-yan-zheng

有的,请参考 回调解密 https://github.com/klover2/wechatpay-node-v3-ts/blob/master/docs/transactions_h5.md

vikingmute commented 3 years ago

@klover2 谢谢回复 你说的回调解密 应该对应的文档是这个:https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/zheng-shu-he-hui-tiao-bao-wen-jie-mi
而签名验证是从 http 头部中提供的信息 结合平台的证书进行验证,验证发送方是否来自微信支付。官方文档如下:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml

klover2 commented 3 years ago

@klover2 谢谢回复 你说的回调解密 应该对应的文档是这个:https://wechatpay-api.gitbook.io/wechatpay-api-v3/qian-ming-zhi-nan-1/zheng-shu-he-hui-tiao-bao-wen-jie-mi 而签名验证是从 http 头部中提供的信息 结合平台的证书进行验证,验证发送方是否来自微信支付。官方文档如下:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_1.shtml

不好意思没有注意看,正常只需验证回调就行;但是你想要验证的话,1. 验证微信支付平台证书的序列号一致,你可以调getSN()方法获取你正式的序列号进行比较 2. 参数验证 由于我现在没有可以用的商户号进行测试,所以我新开了一个分支wechatpay_verify-20210613,在这个分支里面我新增了一个方法wechatpay_verify进行验证,如果可以的话,你可以进行测试并修改,我可以给你这个分支的提交权限,希望你也能加入,我的邮箱49420645@qq.com,非常感谢!!!

ekoooo commented 2 years ago

@klover2 你好,验签使用的证书是平台证书API证书 是不能用于验签。获取 平台证书 接口文档 https://pay.weixin.qq.com/wiki/doc/apiv3/apis/wechatpay5_1.shtml

如果自行实现验证平台签名逻辑的话,需要注意以下事项:

程序实现定期更新平台证书的逻辑,不要硬编码验证应答消息签名的平台证书
定期调用该接口,间隔时间小于12 小时
加密请求消息中的敏感信息时,使用最新的平台证书(即:证书启用时间较晚的证书)
klover2 commented 2 years ago

平台证书暂时自己维护