详解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 相关文章推荐
对YUI扩展的Gird组件 Part-1
Mar 10 Javascript
jQuery 使用手册(四)
Sep 23 Javascript
jquery的map与get方法详解
Nov 04 Javascript
JavaScript中的数组操作介绍
Dec 30 Javascript
JQuery鼠标移到小图显示大图效果的方法
Jun 10 Javascript
在easyUI开发中,出现jquery.easyui.min.js函数库问题的解决办法
Sep 11 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
Jan 05 Javascript
JS变量中有var定义和无var定义的区别以及es6中let命令和const命令
Feb 19 Javascript
Vue组件通信实践记录(推荐)
Aug 15 Javascript
JS加密插件CryptoJS实现AES加密操作示例
Aug 16 Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 Javascript
JS指定音频audio在某个时间点进行播放
Nov 28 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
德生9700DX电路分析
2021/03/02 无线电
PHP+MYSQL实现读写分离简单实战
2017/03/13 PHP
PHP PDOStatement::bindValue讲解
2019/01/30 PHP
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
js操作iframe的一些方法介绍
2013/06/25 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
用VueJS写一个Chrome浏览器插件的实现方法
2019/02/27 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
bat和python批量重命名文件的实现代码
2016/05/19 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
使用numba对Python运算加速的方法
2018/10/15 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
2019/06/12 Python
一篇文章了解Python中常见的序列化操作
2019/06/20 Python
Keras 快速解决OOM超内存的问题
2020/06/11 Python
快速了解Python开发环境Spyder
2020/06/29 Python
anaconda3安装及jupyter环境配置全教程
2020/08/24 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
CSS3实现酷炫的3D旋转透视效果
2019/11/21 HTML / CSS
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
Ootori在线按摩椅店:一家专业的按摩椅制造商
2019/04/10 全球购物
UML设计模式笔试题
2014/06/07 面试题
电大学习个人自我评价范文
2013/10/04 职场文书
应届生学校辅导员求职信
2013/11/07 职场文书
营业经理岗位职责
2013/11/10 职场文书
数控专业应届生求职信
2013/11/27 职场文书
冬季施工防火方案
2014/05/17 职场文书
师德师风剖析材料
2014/09/30 职场文书
2014年圣诞节寄语
2014/12/08 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
2015年团支部工作总结
2015/04/03 职场文书
高三语文教学反思
2016/02/16 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技