详解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 相关文章推荐
jQuery Ajax方法调用 Asp.Net WebService 的详细实例代码
Apr 27 Javascript
js仿百度有啊通栏展示效果实现代码
May 28 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
Jun 12 Javascript
JavaScript获取IP获取的是IPV6 如何校验
Jun 12 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
Dec 08 Javascript
angularjs 页面自适应高度的方法
Jan 17 Javascript
微信小程序实现自定义modal弹窗封装的方法
Jun 15 Javascript
Vue项目添加动态浏览器头部title的方法
Jul 11 Javascript
学习React中ref的两个demo示例
Aug 14 Javascript
一篇文章,教你学会Vue CLI 插件开发
Apr 17 Javascript
JavaScript通如何过RGraph实现动态仪表盘
Oct 15 Javascript
vue3引入highlight.js进行代码高亮的方法实例
Apr 08 Vue.js
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
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
php使用百度天气接口示例
2014/04/22 PHP
php中通过DirectoryIterator删除整个目录的方法
2015/03/13 PHP
PHP输出一个等腰三角形的方法
2015/05/12 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
document.documentElement && document.documentElement.scrollTop
2007/12/01 Javascript
js中将HTMLCollection/NodeList/伪数组转换成数组的代码
2011/07/31 Javascript
jquery1.83 之前所有与异步列队相关的模块详细介绍
2012/11/13 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
jQuery调取jSon数据并展示的方法
2015/01/29 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
angularjs实现文字上下无缝滚动特效代码
2016/09/04 Javascript
js如何获取网页所有图片
2017/05/12 Javascript
vue的token刷新处理的方法
2018/07/17 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
JS集合set类的实现与使用方法示例
2019/02/01 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
vue父组件给子组件的组件传值provide inject的方法
2019/10/23 Javascript
Vue 数据响应式相关总结
2021/01/28 Vue.js
Python批量创建迅雷任务及创建多个文件
2016/02/13 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Python计算两个日期相差天数的方法示例
2017/05/23 Python
Python实现将一个正整数分解质因数的方法分析
2017/12/14 Python
OpenCV 模板匹配
2019/07/10 Python
ORM Django 终端打印 SQL 语句实现解析
2019/08/09 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
pycharm无法导入本地模块的解决方式
2020/02/12 Python
python 使用while循环输出*组成的菱形实例
2020/04/12 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
澳大利亚拥有最佳跳伞降落点和最好服务的跳伞项目运营商:Skydive Australia
2018/03/05 全球购物
优秀党支部事迹材料
2014/01/14 职场文书
2014年质量工作总结
2014/11/22 职场文书
2015年农村党员干部主题教育活动总结
2015/03/25 职场文书