微信支付小程序下单APIv3无法走完整个流程,支付验证签名失败?
已经解决,问题在最下面
PHP开发境界不够高,有做漏或者做错的地方,请各位老板轻锤。
开发环境
1.微信开发者工具 1.02.1910120,2.PHP 7.3,3.Linux云服务器正式环境 https。
支付失败截图
代码1截图,请求小程序下单API,文档链接【https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter3_2.shtml】
代码2截图 生成签名,使用字段appId、timeStamp、nonceStr、package按照 签名生成算法 计算得出的签名值,文档链接【https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/transactions/chapter3_12.shtml】
代码截图 3,签名打印结果
$sign = base64_encode($raw_sign);//长度344,正确长度在1-64位之间
最终结果 ,微信支付成功。
原因简单。
1、调用 wx.requestPayment timeStamp、nonceStr 参数要后端参与签名过程生成的,前端生成的不合法。
2、签名 paySign 的长度限制根本不是 【1-64】,实际长度为 344,具体文档在这里。
巨坑:小程序appId 、时间戳、随机字符串、订单详情扩展字符串 这个4个顺序不能错,必须按照这个顺序签名才对。重点、重点、重点 顺序(appId、timeStamp、nonceStr、package)
https://wechatpay-api.gitbook.io/wechatpay-api-v3/chang-jian-wen-ti/qian-ming-xiang-guan
参考这里排查下你的问题