微信小程序支付开发爬坑攻略(支付签名验证失败)
2017-12-02 09:59
549 查看
第1个坑:微信支付的api密钥(签名需要的key参数)
商户中心(https://pay.weixin.qq.com/index.php/extend/employee) – API安全 – API密钥
API密钥是不能查询,只能更新。我直接从公众号的微信支付代码中复制过来的(WxPay.Config.php中的KEY值)。
后来支付开发遇到坑,曾怀疑是API密钥(key参数)不对,就用原密码直接修改了一次,不影响原来的公众号支付系统。
第2个坑:小程序开发文档内没有提供直接可用的demo源码
我是从网上找了一份别人开发用的,小程序源码还是没,自己写了一份
用微信支付的标准demo一样可用的。https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
只要是里面要有统一下单的源码就可以。一开始没在微信公众号原有的代码里直接添加呢,因为小程序的appid是不一样的,实际上微信支付同一套源码同时开发微信公众号和小程序的支付都没问题。
第3个坑:开发流程(最大的坑)–小程序支付需要使用再次签名
小程序支付接口文档;
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3
这么多前期开发者都抱怨微信开发文档不够明了,才容易引起各种坑。的确如此,不仔细看,就得一步一步踩过去。
统一下单没出现什么坑,因为返回的错误比较明白,容易解决。
统一下单后返回prepay_id后要调用小程序支付函数,有最重要的一步,是需要再次签名的,用统一下单返回的sign(签名)是没有用的。在开发文档里,业务流程图里是有说明的,而下方列出再次签名()的api
第4个坑:签名的参数名是区分大小写的,也就是说必须每个参数名都尽量复制。我就是把timeStamp写成了timestamp,即使从log复制出来没用区分大小写查询都没找出这个坑。
第3和第4个坑都会报微信支付支付验证签名失败的错,而且原因也不解释,所以特别让人找不到解决的捷径。
最理想的是利用下方
签名加密工具地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1
把再次签名()代码里生成的加密前字符串(比如php用error_log显示出来后,复制出来)和工具里提供的字符串进行对比,而且一定要作用区分大小写来进行对比。因为每一个订单都可以保持2个小时,所以可以把两次签名()里的参数全写死(跟工具里填一样的),通过验证签名成功后就好找原因了。
商户中心(https://pay.weixin.qq.com/index.php/extend/employee) – API安全 – API密钥
API密钥是不能查询,只能更新。我直接从公众号的微信支付代码中复制过来的(WxPay.Config.php中的KEY值)。
后来支付开发遇到坑,曾怀疑是API密钥(key参数)不对,就用原密码直接修改了一次,不影响原来的公众号支付系统。
第2个坑:小程序开发文档内没有提供直接可用的demo源码
我是从网上找了一份别人开发用的,小程序源码还是没,自己写了一份
用微信支付的标准demo一样可用的。https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1
只要是里面要有统一下单的源码就可以。一开始没在微信公众号原有的代码里直接添加呢,因为小程序的appid是不一样的,实际上微信支付同一套源码同时开发微信公众号和小程序的支付都没问题。
第3个坑:开发流程(最大的坑)–小程序支付需要使用再次签名
小程序支付接口文档;
https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3
这么多前期开发者都抱怨微信开发文档不够明了,才容易引起各种坑。的确如此,不仔细看,就得一步一步踩过去。
统一下单没出现什么坑,因为返回的错误比较明白,容易解决。
统一下单后返回prepay_id后要调用小程序支付函数,有最重要的一步,是需要再次签名的,用统一下单返回的sign(签名)是没有用的。在开发文档里,业务流程图里是有说明的,而下方列出再次签名()的api
第4个坑:签名的参数名是区分大小写的,也就是说必须每个参数名都尽量复制。我就是把timeStamp写成了timestamp,即使从log复制出来没用区分大小写查询都没找出这个坑。
第3和第4个坑都会报微信支付支付验证签名失败的错,而且原因也不解释,所以特别让人找不到解决的捷径。
最理想的是利用下方
签名加密工具地址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=20_1
把再次签名()代码里生成的加密前字符串(比如php用error_log显示出来后,复制出来)和工具里提供的字符串进行对比,而且一定要作用区分大小写来进行对比。因为每一个订单都可以保持2个小时,所以可以把两次签名()里的参数全写死(跟工具里填一样的),通过验证签名成功后就好找原因了。
相关文章推荐
- 微信小程序支付签名失败,错误的解决方法,小程序支付签名paySign开发demo
- 微信公账号支付:签名验证失败的解决办法
- 获取微信沙箱秘钥有效期,沙箱验证签名失败,请确认沙箱签名key是否正确,通过getsignkey调用生成——微信支付沙箱开发6
- 微信jsapi支付验证签名失败
- java官方工具包微信H5支付报“支付验证签名失败”
- 关于微信APP支付,提示支付验证签名失败
- 微信小程序支付失败 签名失败及签名错误的解析 -- KeeSoft框架
- 微信小程序支付开发笔记2--生成签名-统一下单-二次签名
- tp5微信小程序全栈开发 四——构建验证层
- C#.NET 微信小程序用户数据的签名验证和解密
- 支付宝电脑网站支付,回调时签名验证失败
- 微信小程序支付开发笔记1--获取openId
- PHP微信开发新浪sea服务器提示token验证失败
- 微信小程序开发(七)小程序支付-查询订单
- 微信小程序开发之webview组件内网页实现微信原生支付
- 实战:微信小程序支付开发具体流程
- 实战:微信小程序支付开发具体流程
- JAVA版微信小程序用户数据的签名验证和加解密
- 微信支付提示支付验证签名失败
- 微信小程序开发--表单验证