大风起兮云飞扬,安得猛士兮走四方,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编码7、IOS正常,安卓异常的情况下,请排查包名与包签名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]);}
},

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

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

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

  1. 微信小程序wx.getLocation()报错以及解决方法

    问题介绍 使用wx.getLocation()来获取当前地理位置的经纬度 主要代码如下: wx.getLocation({success: function(res) {//经度let lat = r ...

  2. 微信小程序request:fail报错(包括不执行fail回调问题)

    微信小程序request:fail报错(包括不执行fail回调的问题) 1. 不执行fail回调的问题 2. request:fail报错原因 2.1 小程序未配置域名导致的错误 2.2 微信小程序使 ...

  3. python--微信小程序获取手机号码报错

    微信小程序获取手机号码报错,其中python文档中有一段需要引用 'Crypto'的库 在windows环境下可能会出现安装失败等原因,可以安装PyCryptodome来替代 转载于:https:// ...

  4. 小程序直播间报错:{“errmsg“:“the current room status does not allow this operation rid:“,“errcode“:300023}

    修改小程序直播间报错 {"errmsg":"the current room status does not allow this operation rid: 5fd3 ...

  5. 微信小程序渲染图片报错:[渲染层网络层错误] Failed to load local image resource

    微信小程序渲染图片报错解决:[渲染层网络层错误] Failed to load local image resource 背景 通过用户点击上传图片,通过res.tempFilePaths拿到用户上传 ...

  6. uni-app-微信小程序-预览报错

    遇到的问题记录: uni-app-微信小程序-预览报错 首先打开config.js 配置文件,查看host 如下图: host 在为127.0.0.1 的情况下预览失败,无法加载数据 解决办法:使用 ...

  7. 解决小程序获取openid报错errcode:48001或者其他错误代码方案

    解决小程序获取openid报错errcode:48001或者其他错误代码方案 原因解析 解决方案 公众号appid获取微信openid 小程序appid获取微信openid 原因解析 获取openID ...

  8. 小程序 引入computed报错:Behaviors should be constructed with Behavior()

    小程序引入computed报错:Behaviors should be constructed with Behavior() 解决方案: const computedBehavior = requi ...

  9. uniapp引入自定义组件canvas 不现实,运行到微信小程序端时会报错

    问题1 在引入自定义canvas组件时,在微信开发者工具中为空白,和h5中不现实 原因 在微信开发者工具 错误案例,没有加实例化this 在h5中不实现为空白是没有onReady里面实例化canvas ...

最新文章

  1. 媲美Pandas?一文入门Python的Datatable操作
  2. 【 FPGA 】按键消抖与LED灯流动小实验
  3. Java 集合Collection图解
  4. Qt调用dll中的功能函数
  5. Docker最全教程——从理论到实战(四)
  6. Linux+.NetCore+Nginx搭建集群
  7. kbmmw 5.0 中的REST 服务
  8. Qt 开源作品 | 小伙子,给你的 Linux 系统写个 Launcher 吧
  9. 一起学习C语言:C语言基本语法(三)
  10. javascript精雕细琢(二):++、--那点事
  11. “IT男等级”对照表|找找你在哪?
  12. 程序员为什么要写博客?怎么写博客?
  13. ASM文件类型和模板
  14. Dreamweaver CS6 行为概述
  15. 【2023校招刷题】常见面试问题总结(一、EDA工具及IC整体设计流程篇)(随后续面试不断更新....)
  16. php20以内的勾股数,[求助]编程求100以内的所有勾股数
  17. 王和勇计算机软件,图像空间中的鉴别型局部线性嵌入方法
  18. RTK固定解什么意思
  19. 中值滤波(python实现)
  20. 项目管理思维是什么?

热门文章

  1. 石家庄铁道大学计算机专业好找工作吗,大学“最让人头痛”的9个专业,但毕业后含金量高,就业形势好...
  2. 在Google Chrome浏览器中改变点击过的超链接的颜色
  3. 专利补贴申请的流程是什么
  4. c语言综合实验报告包括5个子系统,C语言综合实验课程设计
  5. JavaScript 图片滑动展示效果javascript
  6. 哪款蓝牙耳机音质比较好?盘点四款降噪效果好的蓝牙耳机
  7. 使用 MitmProxy 自动抓取微信公众号阅读数、点赞和再看数据
  8. 跑步装备品牌排行榜,2022年跑者必备好物推荐
  9. 浅谈springboot三层架构
  10. Python学习资料1