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

 更新时间:2019年08月26日 09:23:35   作者:VisionM  
这篇文章主要介绍了详解nuxt 微信公众号支付遇到的问题与解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

背景: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

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

相关文章

  • 在js(jquery)中获得文本框焦点和失去焦点的方法

    在js(jquery)中获得文本框焦点和失去焦点的方法

    文章介绍两个方法和种是利用javascript onFocus onBlur来判断焦点和失去焦点,加一种是利用jquery $("p").blur(); 或$("p").blur(fn)来实现,有需要的朋友可以参考一下
    2012-12-12
  • JS制作手机端自适应缩放显示

    JS制作手机端自适应缩放显示

    允许网页宽度自动调整的"自适应网页设计"到底是怎么做到的?下面我们就来通过示例来探讨下。
    2015-06-06
  • BootStrap实现带有增删改查功能的表格(DEMO详解)

    BootStrap实现带有增删改查功能的表格(DEMO详解)

    这篇文章主要介绍了BootStrap实现带有增删改查功能的表格,表格封装了3个版本,接下来通过本文给大家展示下样式及代码,对bootstrap增删改查相关知识感兴趣的朋友一起通过本文学习吧
    2016-10-10
  • 微信小程序API—获取定位的详解

    微信小程序API—获取定位的详解

    这篇文章主要介绍了微信小程序API获取定位,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • js获取隐藏元素宽高的实现方法

    js获取隐藏元素宽高的实现方法

    下面小编就为大家带来一篇js获取隐藏元素宽高的实现方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05
  • 推荐几个不错的console调试技巧实现

    推荐几个不错的console调试技巧实现

    这篇文章主要介绍了推荐几个不错的console调试技巧实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 手把手教你如何排查Javascript内存泄漏

    手把手教你如何排查Javascript内存泄漏

    本文将通过一些常见的FAQ来带大家一起学习一下怎么用工具定位javascript里的内存问题,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-06-06
  • layui使用button按钮 点击出现弹层 弹层中加载表单的实例

    layui使用button按钮 点击出现弹层 弹层中加载表单的实例

    今天小编就为大家分享一篇layui使用button按钮 点击出现弹层 弹层中加载表单的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • 为网站代码块pre标签增加一个复制代码按钮代码

    为网站代码块pre标签增加一个复制代码按钮代码

    写文章的时候,作为一名专业的码农,经常会在文章中粘贴一些代码。有的时候代码块比较长,在后期使用中需要复制这段代码就比较麻烦
    2021-11-11
  • js实现炫酷光感效果

    js实现炫酷光感效果

    这篇文章主要为大家详细介绍了js实现炫酷光感效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09

最新评论