小程序wx.requestPayment报错/无响应信息梳理

news/2024/11/23 0:27:10/

大风起兮云飞扬,安得猛士兮走四方,BUG,任何时候都要改,不改不行,你想想,你自己一个人,下了班,吃着火锅还唱着歌,突然支付就不能用了!
本文整理了关于微信小程序wx.requestPayment的报错或无响应的问题。报错信息与回答多整理于[微信开发社区],本文仅做整理。(https://developers.weixin.qq.com/community/develop/mixflow)
一、报错
问题1:

requestPayment:fail no permission
解决办法:
1. 重启项目,再次尝试。
2. 核对appID,如一致,尝试重新复制粘贴一边

问题2:

requestPayment:fail jsapi has no permission
// 开发及体验版本皆可支付,但正式版本不行
解决办法:
ios支付被平台限制,去申诉完成

问题3:

requestPayment:fail 支付验证签名失败
解决办法:
1. 在签名的时候,需要和appId(I为大写)一起签名,因为在调用requestPayment接口的时候不需要传入appId
2. 签名问题,一般是你的签名参数本身不符合文档规范,大小写。转义,排序。等等都必须完全符合规范。确认参数无误,可以更换一下KEY。还有参数的编码,可能出现乱码问题,要注意编码UTF8

问题4:

视频号跳入小程序之后,在小程序中下订单时,调用wx.requestPayment()支付时,一直支付失败
解决办法:
通过视频号进入小程序下单的,需要先将商品推送审核,并调用wx.requestOrderPayment()进行支付。
如果搜索进入小程序,可正常调用wx.requestPayment()

问题5

requestPayment:fail parameter error: parameter.noner.paySign should be String instead of Undefined
这个就不用说了吧,调起支付一共需要paySign、timeStamp、nonceStr、package、signType五个参数,每个参数都必须是字符串,不能是null和undefined。如果报这个错误,就console检查一下参数吧。

问题6

APP调起支付返回:-1
解决办法(官方回答):
1[使用签名检查工具](https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=20_1)校验签名算法是否有误2、确认秘钥是否有误(服务商模式使用服务商商户号秘钥,秘钥是在商户平台配置,如果同一商户号调用其它接口成功可排除是秘钥问题)3、确认接口实际的请求参数与生成签名原串的参数一致,不能增加或缺少参数(可通过打印签名原串进行排查)4、确认参数的大小写,参数名与接口文档一致5、签名原串的参数值使用原始值,不需要encode6、接口需要使用UTF-8编码7IOS正常,安卓异常的情况下,请排查包名与包签名8、未注册APPID9、项目设置APPID不正确10、注册的APPID与设置的不匹配11、服务商模式下,统一下单中的sub_appid是否有传入12、“唤起支付接口”中的签名类型是否与“统一下单接口”的类型一致

好了,这是暂时整理到的比较常见的报错问题,下面来谈下我遇到的神仙问题。

二、无响应

先来谈下是怎样无响应的

机型:iphone8、12、13
系统:不限
场景:用户点击支付,调用预支付后,调取wx.requestPayment,无响应
看代码

...
let data = res.data.data;
try {console.log(data); // 正常打印wx.requestPayment({timeStamp: data.timeStamp,nonceStr: data.nonceStr,package: data.package,signType: 'MD5',paySign: data.paySign,success (res) { // 无响应},fail (res) {// 无响应},complete(res) {// 无响应}})
} catch (err) {// 不报错console.log(err)
} finally {console.log('执行了'); // 正常执行
}

这套支付代码已经安稳运行了3年,从来没出过问题,所以一开始就没往代码上考虑,怀疑是其他部门更改了配置项之类的,核对后没问题,又怀疑是v2和v3版本的问题,紧急写了v3的demo,发现也不能调用。

所以怀疑不是配置项或者后台代码的问题,开始对前端代码进行核对,代码一个方法一个方法的删,看到底是哪个方法会影响支付,终于,

onUnload: function () {for (let timer = 0; timer < 1000; timer++) {clearInterval(timer)}
},

因为订单列表会存在大量定时器,所以我在3年前,写了这段代码,在页面卸载时清除1000次定时器。

删除这段代码后,小程序可以正常支付,所以感觉像是清除定时器时阻塞了微信小程序底层的某些方法。

现在改变了新的写法:

let setIntervals = {}; 
setIntervals[`${id}`] = setInterval(() => {
...
...
onUnload: function () {for(var each in setIntervals){clearInterval(setIntervals[each]);}
},

这样就可以正确删除定时器,并且微信支付也没有异常了。

现在终为年轻付出了代价。
完结,撒花!


http://www.ppmy.cn/news/701477.html

相关文章

微信分享给朋友无响应

2019独角兽企业重金招聘Python工程师标准>>> 问题&#xff1a; 使用微信jssdk接口自定义分享内容&#xff0c;点击分享到朋友圈和QQ都是有响应的&#xff0c;点击分享给朋友的按钮没有反应。 设备环境&#xff1a; 无反应问题只出现在IOS设备&#xff0c;Android设备…

微信收到消息很慢无法连接服务器,微信接收消息有延迟原因及解决办法

微信收到消息总是延迟怎么回事呢&#xff1f;第一个就是网络延迟&#xff0c;第二个是手机信号不好&#xff0c;第三个就是微信自己设置的问题。下面&#xff0c;我们来看看微信收消息有延迟的原因及解决办法。 软件名称&#xff1a;微信安卓版 V8.0.9 for Android 最新官方正式…

Android微信分享,无响应

研究2天&#xff0c;看了一天好的比较完整的文章&#xff0c;发个链接&#xff1a;http://www.apkbus.com/android-138326-1-1.html 但是按照上面的教程一步一步做&#xff0c;结果点击分享还是没有响应。 出现问题Bug: 结果发现时因为在微信的管理中心&#xff1a; 应用签名不…

计算机应用程序无响应怎么回事啊,win10程序无响应怎么办?程序无响应的解决方法...

win10正式版 发布后&#xff0c;许多用户都在第一时间选择对系统进行了升级。不过&#xff0c;在使用的过程中有不少用户反映自己的win10正式版系统不时会出现应用程序无响应的问题。这该怎么办呢&#xff1f;接下来&#xff0c;小编就向大家分享windows10系统下程序无响应问题…

关于APP应用无响应的处理

什么是ANR ANR&#xff0c;是“Application Not Responding”的缩写&#xff0c;即“应用程序无响应”。在Android中&#xff0c;ActivityManagerService&#xff08;简称AMS&#xff09;和WindowManagerService&#xff08;简称WMS&#xff09;会监测应用程序的响应时间&#…

解决程序无响应

最近在解决一个程序无响应的问题上面花了不少时间&#xff0c;总算是找到了原因&#xff0c;下面简单记录一下查找的过程。 先说一下场景&#xff1a;A程序为windows 桌面应用程序&#xff0c;界面基于QT&#xff0c;B程序为C#程序&#xff0c;在B中使用了windows自带的MSAA服务…

Android微信登录WXEntryActivity无响应

Android微信登录 官方文档&#xff1a;https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html 问题 按照文档要求接入&#xff0c;发送一个SendAuth的消息&#xff0c;能够拉起第三方微信&#xff0c;但会返回AppActivity的时候并没有回调o…

Android微信分享点击列表无响应的解决方法

今天在接微信分享的时候&#xff0c;前期一切顺利&#xff0c;点击分享的时候跳转到微信&#xff0c;但是点击微信联系人列表的时候却无响应&#xff0c;有点 WTF&#xff0c;然后点击返回的时候 WXEntryActivity中的 onResp 方法能够正常的回调&#xff0c;这下头皮发麻了。 …