详解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 相关文章推荐
JavaScript中几种排序算法的简单实现
Jul 29 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
Dec 13 Javascript
深入理解jquery中的each用法
Dec 14 Javascript
Angular中$broadcast和$emit的使用方法详解
May 22 Javascript
利用jsonp解决js读取本地json跨域的问题
Dec 11 Javascript
使用layui的router来进行传参的实现方法
Sep 06 Javascript
写给新手同学的vuex快速上手指北小结
Apr 14 Javascript
react 原生实现头像滚动播放的示例
Apr 21 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
Jul 20 Javascript
element中table高度自适应的实现
Oct 21 Javascript
js实现弹框效果
Mar 24 Javascript
canvas实现贪食蛇的实践
Feb 15 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 全角转半角实现代码
2010/05/16 PHP
体育彩票排列三组选三算法分享
2014/03/07 PHP
一个简洁实用的PHP缓存类完整实例
2014/07/26 PHP
ThinkPHP中关联查询实例
2014/12/02 PHP
php自动加载方式集合
2016/04/04 PHP
PHP引用返回用法示例
2016/05/28 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
php 使用mpdf实现指定字段配置字体样式的方法
2019/07/29 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
JavaScript闭包 懂不懂由你反正我是懂了
2011/10/21 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
[01:18:36]LGD vs VP Supermajor 败者组决赛 BO3 第一场 6.10
2018/07/04 DOTA
Python操作Mysql实例代码教程在线版(查询手册)
2013/02/18 Python
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python中如何优雅的合并两个字典(dict)方法示例
2017/08/09 Python
一行Python代码过滤标点符号等特殊字符
2019/08/12 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
Python字典实现伪切片功能
2020/10/28 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
如何高效率的查找一个月以内的数据
2012/04/15 面试题
GWT都有什么特性
2016/12/02 面试题
调研报告的主要写法
2019/04/18 职场文书
常用的Python代码调试工具总结
2021/06/23 Python