微信H5支付 验签失败 问题

现在的微信H5支付貌似都是“APIv3接口规则”,所有请求需要使用证书签名。
在安装官方文档说明操作后,验证签名总是失败,一直找不到解决办法,发到这里,希望路过大神指点一下!

情况如下:

在按官方文档要求的,安装下载证书、设置商户“APIv3密钥”后,参照官方的文档的 开发指南–签名生成,最终生成如下签名验证参数:
(地址:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay4_0.shtml):
微信H5支付 验签失败 问题

使用的postman来测试,返回验签失败:

微信H5支付 验签失败 问题

简单说明下官方的签名步骤

1、首先构造的请求签名串如下(请求方法是GET,url也是固定的,时间戳,随机字串,body为空):
微信H5支付 验签失败 问题

2、使用证书签名(官方文档的命令行实现如下):
微信H5支付 验签失败 问题
官方也给出了执行签名操作的php的代码片段
微信H5支付 验签失败 问题
总结一下就是:将上面的构造的签名串使用openssl_sign(签名串,返回值,密钥,加密方式)进行加密,返回给$raw_sign变量,然后再使用base64_encode进行编码后就是$sign了。

3、验证签名:构造签名信息如下(其中签名值signature就是上面编码后的$sign,其他都直接配置):
微信H5支付 验签失败 问题
按照上面的参数配置好,按照固定格式,发送到接口地址https://api.mch.weixin.qq.com/v3/certificates进行验证,如下:
微信H5支付 验签失败 问题
另外,header头中除了Authorization之外,还需要添加 Content-Type: application/json
Accept: application/json,这两个值都是固定的。至此所有数据都已获得,使用postman测试结果:
微信H5支付 验签失败 问题

上面所有步骤都是按照官方文档进行测试的,各个参数都检查无误了,证书都重新生成了,却始终都返回“验签失败”,问题到底出在哪里呢? 有做过这个H5支付的大神能帮分析一下吗?

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 2

首先确认加签证书及签名方法无误,最好直接用示例代码去执行,自己直接写容易遗漏部分内容,因为之前对接时我也参考他们github的一个postman,这个提供了基本获取微信公钥证书的示例(https://github.com/wechatpay-apiv3/wechatpay-postman-script)

1周前 评论
acvc225 (楼主) 1周前
acvc225 (楼主) 1周前
wild2rift (作者) 1周前
acvc225 (楼主) 1周前

之前错误的写法 file

正确的写法应该是 file

修改后,可以验证签名通过了。

1周前 评论
paco 1周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!