艺灵设计

全部文章
×

记一次APP内调起微信支付时首次成功唤醒,后面全是[payment微信:-1]的排查经历

作者:艺灵设计 - 来源:http://www.yilingsj.com - 发布时间:2023-02-19 22:26:40 - 阅: - 评:0 - 积分:0

摘要:昨晚测试某APP中的微信支付功能,发现第一次点击的时候能唤醒支付,但后面怎么也无法唤醒了。每次点支付均会报{"errMsg":"requestPayment:fail[payment微信:-1]Generalerrors","errCode":-100,"code":-100}。经过一天的摸索与尝试,最终确定是签名错误导致。

一、起因

近期我接了个用uni-app开发的半成品项目,里面用到了微信支付和支付宝支付。

昨晚(2023-02-18)我在测试钱包充值这个功能的时候发现一个奇怪的现象:第一次点微信充值的时候能唤醒微信支付,但后面点击就失败了。报错如图↓↓↓APP内点微信支付结果报错

{"errMsg":"requestPayment:fail[payment微信:-1]Generalerrors","errCode":-100,"code":-100}

还好我当时录制了视频,不然我真怀疑是我眼花了。[:捂脸]

二、排查问题

当时我的第一反应就是:该不会有人动接口了吧。

毕竟我什么也没有改,只是重新点了下支付,结果就报错了。

我立马在项目群里@孔哥,对方说没有修改。

清缓存、重启项目、重启手机这些常规操作都来了一遍,结果仍然是失败。

我在网上搜索报错信息,很快便找到一篇相似度非常高的文章《Uniapp---打包的APP后,微信支付只能支付一次,然后就支付不了,报-100的错误【解决办法和思路】》。(注:相关链接见 三、资料整理)

文章中第一个思路就是检查APP的包名和签名

我当时的心理活动:“1、我现在是运行到手机,属于真机调试不属于打包。2、真机调试时也跟证书有关系?”

如果我当时按照这篇文章中的思路来做,也许当晚就解决了问题。现在说这些也没用了,毕竟只有自己思考过且浪费过时间,下次才能有教训。

又搜索了好久,仍然没有解决问题。此时已经23点多了,便洗洗睡去。

次日上午,我用错误码进行搜索,找到一篇更详细的文章《uniapp 开发过程中 遇到的微信支付调用失败 payment微信:-1]General errors","errCode":-100,"code":-100 解决办法》。(注:相关链接见 三、资料整理)

按照文章中的步骤,我下载了签名生成工具GenSignature。安装到手机后输入刚打包时填写的包名进行校验,发现跟群里的签名不一致。如下图↓↓↓我生成的签名跟开放平台上填写的不一致

不一致很正常,毕竟我在生成证书时填写的信息都是乱写的。

于是我又在群里艾特相关人员,想让对方修改开放平台中填写的应用签名为我本地的。

经过一番沟通,对方终于提供了我需要的【证书别名】、【证书私钥密码】、【证书文件】这3个缺少已久的信息了。

我立马用目前已有的信息制作了自定义调试基座。如下图↓↓↓使用HBuilderX制作自定义调试基座

安装打包后的APP到手机后进行验签,得到的结果跟群里发的一样。看来有戏了。

尝试了下微信支付,能成功唤醒。取消后再进入也能拉起,支付也正常了。欧耶!!!支付成功如下图↓↓↓微信支付记录

至此,坑了我近1天的问题终于被解决。

但新的问题又出现了,我支付后,钱包里面的钱没有增加,于是又在群里@孔哥查看原因。

三、资料整理

3.1、APP调起支付API

说真的,关于这个requestPayment:fail[payment微信:-1]的报错信息,我硬是找了好久才找到相关资料。

微信官方文档地址:
https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_2_4.shtml
大家拉到最后看【返回结果】就行,你会发现-1的情况会包含很多种,比如:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常原因等。如下图↓↓↓微信支付文档

不得不吐槽一下,这个文档写的是真坑!但凡你像支付宝那样给个文字提示,也不至于把我坑这么久!如下图↓↓↓支付宝的提示更清楚

3.2、OpenSdk包名签名校验失败说明

这个文档也是在无意中搜索到的,文档地址:https://docs.qq.com/doc/DRHJjS0RHRGFHdnly,里面也有签名生成工具的下载地址。

3.3、文中提及的2篇文章链接地址

第一篇:https://www.cnblogs.com/e0yu/p/16894959.html

第二篇(更详细):https://www.cnblogs.com/Li-Sun-Moon/p/14680605.html

四、总结

经过这件事情,我吸取了2个教训:

1、以后做支付的时候,一开始就要把相关信息资料准备齐全,否则在后面纯粹就是瞎浪费时间。

2、在网上查到相关资料后,要及时去尝试文章中提及的方法。

转载声明:
  若亲想转载本文到其它平台,请务必保留本文出处!
本文链接:/xwzj/2023-02-19/requestPayment-wxpay.html

若亲不想直保留地址,含蓄保留也行。艺灵不想再看到有人拿我的技术文章到他的地盘或者是其它平台做教(装)程(B)而不留下我的痕迹。文章你可以随便转载,随便修改,但请尊重艺灵的劳动成果!谢谢理解。

亲,扫个码支持一下艺灵呗~
如果您觉得本文的内容对您有所帮助,您可以用支付宝打赏下艺灵哦!

Tag: uni-app requestPayment APP GenSignature 微信支付 payment微信:-1 签名生成工具

上一篇: 记一次注销联通卡的吐血经历   下一篇: bug复盘之如何优雅的实现表格跨页勾选

评论区