详解nuxt 微信公众号支付遇到的问题与解决


Posted in Javascript onAugust 26, 2019

背景:nuxt为默认的history模式,用这个npm 支付weixin-js-sdk,开启debug模式,尽量在ios下调试,因为alert弹窗的信息会更多。

async onPay (config) {
 try {
 const wxUrl = window.location.href//分享的路径
 const res = await $axios.$get("")//获取配置sdk参数,包括微信分享的参数
 if (res.status === 0) {
  const {data} = res
  wx.config({
  debug: true,
  appId: data.appId,
  timestamp: data.timestamp,
  nonceStr: data.nonceStr,
  signature: data.signature,
  jsApiList: ['chooseWXPay']
  })

  wx.ready(function () {
  wx.checkJsApi({
   jsApiList: ['chooseWXPay'],
   success: (res) => {
   wx.chooseWXPay({
    timestamp: config.timestamp,
    nonceStr: config.nonceStr, 
    package: config.package, 
    signType: config.signType, 
    paySign: config.paySign, // 支付签名
    success: function (res) {
    },
    cancel: function (res) {
    // 支付取消的回调函数
    },
    error: function (res) {
    // 支付失败的回调函数
    }
   })
   }
  })

  })

 }
 } catch (e) {
 throw e
 }
}

1、微信调起支付loading又立刻关闭,并提示:当前页面的url未注册:https://xxx/xx/xx/

补充:由于支付路径太深,ios下,提示支付路径未注册出现了各种情况。甚至出现只有我一个人可以调起支付,其他人测试都不行的情况。

原因:这是因为微信获取支付路径的时候,在ios与安卓下是不同的,对于spa应用来说,首先我们把我们从微信别的地方点击链接呼出微信浏览器时所落在的页面、或者点击微信浏览器的刷新按钮时所刷新的页面,我们叫做落地页。问题来了,在ios和安卓下呼出微信支付的时候,微信支付判断当前路径ios为落地页,安卓则为正常的当前页面的路径。

解决支付路径app不统一:用window.location.href 的方式跳转至支付页

微信获取支付路径的方式:以url最后一个/为准,获取/之前的路径。

支付路径例子:例如我们后台配置的支付的路径为

https://域名/项目名/(可能有多级目录)/pay/

那么就会匹配

https://域名/项目名/(可能有多级目录)/pay/?xxxxxxxxxxxxxxxxxx

注意pay支付路径后的/一定要加。因为我们做路由跳转很可能是这种形式

https://域名/项目名/(可能有多级目录)/pay?xxxxxxxxxxxxxxxxxx //错误,'?'前没有'/',会匹配不到正确的路径。

2、微信调起支付loading又直接关闭,提示,订单已过期。

解决:这个是服务器那边的问题,后端直接设置了固定的订单时间以跳过支付环节。

3、sdk中wx.config中的参数。

事实上,我们并不需要额外的请求wx.config的参数,因为支付接口返回的支付参数已经有了所有的config参数,除了signature这个加密签名字段,在支付参数中对应的加密签名是paysign这个字段,事实上直接用paysign作为signature的值也是没有问题的。wx.config的参数差别是分享的时候。需要额外的分享的路径url

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Web版彷 Visual Studio 2003 颜色选择器
Jan 09 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
Dec 28 Javascript
解决jquery插件冲突的问题
Jan 23 Javascript
node.js中的fs.lchownSync方法使用说明
Dec 16 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
Dec 02 Javascript
JavaScript简单计算人的年龄示例
Apr 15 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
Jun 29 Javascript
详解webpack自动生成html页面
Jun 29 Javascript
JS计算两个时间相差分钟数的方法示例
Jan 10 Javascript
vue toggle做一个点击切换class(实例讲解)
Mar 13 Javascript
vue操作下拉选择器获取选择的数据的id方法
Aug 24 Javascript
three.js欧拉角和四元数的使用方法
Jul 26 Javascript
Vue路由之JWT身份认证的实现方法
Aug 26 #Javascript
Vue中跨域及打包部署到nginx跨域设置方法
Aug 26 #Javascript
js实现跟随鼠标移动的小球
Aug 26 #Javascript
vue 源码解析之虚拟Dom-render
Aug 26 #Javascript
Node.js爬虫如何获取天气和每日问候详解
Aug 26 #Javascript
vue移动端实现手机左右滑动入场动画
Jun 17 #Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 #Javascript
You might like
php常用ODBC函数集(详细)
2013/06/24 PHP
php全角字符转换为半角函数
2014/02/07 PHP
PHP完全二叉树定义与实现方法示例
2017/10/09 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
DOM和XMLHttpRequest对象的属性和方法整理
2012/01/04 Javascript
JavaScript常用对象的方法和属性小结
2012/01/24 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
7款风格新颖的jQuery/CSS3菜单导航分享
2013/04/23 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
jQuery-ui引入后Vs2008的无智能提示问题解决方法
2014/02/10 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
详解VUE中v-bind的基本用法
2017/07/13 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
JSON的parse()方法介绍
2019/01/31 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
深入Node TCP模块的理解
2019/03/13 Javascript
vue中v-text / v-html使用实例代码详解
2019/04/02 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
Python 3.8 新功能全解
2019/07/25 Python
python实现统计代码行数的小工具
2019/09/19 Python
django框架forms组件用法实例详解
2019/12/10 Python
Pyspark获取并处理RDD数据代码实例
2020/03/27 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
Java中会存在内存泄漏吗,请简单描述
2016/12/22 面试题
《日月潭》教学反思
2014/02/28 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
三孔导游词
2015/02/05 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python