vue+laravel关于微信公众号支付中解决‘url未注册’问题

问题描述

vue由于url中含有‘#’号,导致调用微信支付报‘url未注册…'的错误。

解决方法:

在网上查了许久,说的最多的就是改变vue路由模式,由’hash’改为‘history’来去掉’#‘。但vue+laravel模式下,即使改过来仍有’#‘号。
最终看到一篇贴子,在mounted方法来中替换url中’#‘号。
步骤如下:
1 仍把路由模式改为history:

const router = new VueRouter({
 routes,
 mode: 'history',
 // base: '/wenchao/',
 strict: process.env.NODE_ENV !== 'production',
 scrollBehavior(to, from, savedPosition) {
  if (savedPosition) {
   return savedPosition
  } else {
   if (from.meta.keepAlive) {
    from.meta.savedPosition = document.body.scrollTop
   }
   return {
    x: 0,
    y: to.meta.savedPosition || 0
   }
  }
 }
})
  1. 在调用支付页面的mounted() 方法里增加以下代码:
  if (window.location.href.indexOf("??#") < 0) {    window.location.href = window.location.href.replace("#", "??#");    }

注意:我的代码是换成’??#'字符的,网上贴子里是换‘?#’,但我发现在微信调用时会去掉?号,达不到效果,于是改成??解决。

此方法参照了chi1130 的这篇文章:https://blog.csdn.net/chi1130/article/details/99479309
在此感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值