V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kanganxi
V2EX  ›  问与答

关于 Vue 做微信支付提示当前页面的 URL 未注册的问题

  •  
  •   kanganxi · 2017-10-30 10:19:37 +08:00 · 12222 次点击
    这是一个创建于 2570 天前的主题,其中的信息可能已经有所发展或是发生改变。

    vue 路由配置如下: { path:'/opay/:openid', component: resolve => require(['@/page/act/orderPay'], resolve), /meta:{ requireAuth: true }/ }, 我的支付页面是 www.ceshi.com/opay/wwfjdkljfjklfjsdlk 示例 微信支付授权目录配置:www.ceshi.com/opay/ 点击支付时提示当前 url 未注册,不知道时 vue 的目录配置问题还是什么什么?望兄弟们支招,因为 vue 路由默认又一个#我们做了隐藏处理,不知道是不是跟这个有关系,

    30 条回复    2017-12-16 15:24:08 +08:00
    U2Fsd
        1
    U2Fsd  
       2017-10-30 10:23:54 +08:00   ❤️ 1
    # 前面加一个? 号
    kanganxi
        2
    kanganxi  
    OP
       2017-10-30 10:29:59 +08:00
    @U2Fsd 兄弟目前我们的路由模式用的是 history 路由模式,不知道是不是有关系,
    sarices
        3
    sarices  
       2017-10-30 10:35:39 +08:00
    微信支付是要填写支付地址,最后一个要 / 结束,你这个示例微信是但你是新得一个目录,未授权,传参数最好用?,不要地址重写了
    kanganxi
        4
    kanganxi  
    OP
       2017-10-30 10:42:17 +08:00
    @sarices 我是在 opay/?opeind=1 这样也是会报当前 url 未注册,真是邪门了
    sarices
        5
    sarices  
       2017-10-30 10:49:27 +08:00
    @kanganxi #4 我试过没问题的,再检查一下,是不是你最后有 / 结束了
    kanganxi
        6
    kanganxi  
    OP
       2017-10-30 11:27:06 +08:00
    kanganxi
        7
    kanganxi  
    OP
       2017-10-30 11:31:02 +08:00
    sarices
        8
    sarices  
       2017-10-30 11:33:31 +08:00
    @kanganxi #7 如果域名对得上应该没错,估计是微信那边未更新规则,页面上提示有一段生效时间
    kanganxi
        9
    kanganxi  
    OP
       2017-10-30 11:35:17 +08:00
    @sarices 真是很郁闷,已经三天了一直这样子
    sarices
        10
    sarices  
       2017-10-30 11:40:15 +08:00
    @kanganxi #9 那只能找客服了,虽然客服很难打进去
    kanganxi
        11
    kanganxi  
    OP
       2017-10-30 11:46:40 +08:00
    @sarices 最坑的是我之前测试的时候加了一个 /ceshi 的目录,这个目录已经删除了,但是目前他娘的居然还能支付
    qiayue
        12
    qiayue  
       2017-10-30 11:56:20 +08:00
    如果你注册的支付目录是 /opay/ ,那么你真实的支付页面地址必须是 /opay/fielname
    filename 不能为空字符串,也就是支付地址不能是支付目录本身
    BingoXuan
        13
    BingoXuan  
       2017-10-30 12:00:32 +08:00 via Android
    当初我们也遇到,不过根据前端同事说是关闭 history 模式,URL 调用时用 window.location.href.split('#')[0] 获取
    ming
        14
    ming  
       2017-10-30 12:34:26 +08:00
    支付授权目录是一个目录,必须以 / 结尾,如果你的支付网址是 http://www.ceshi.com/opay/wwfjdkljfjklfjsdlk 那么你需要注册的是 http://www.ceshi.com/opay/wwfjdkljfjklfjsdlk/
    sciooga
        15
    sciooga  
       2017-10-30 12:35:05 +08:00 via Android
    www.ceshi.com/ 加入支付授权就可以解决,因为目前 Android 微信客户端不支持 pushState 的 H5 新特性(看文档)

    否则到 http://www.ceshi.com/opay/ 这里你不用 vue-route push 而是直接用 location.href 切
    sujin190
        16
    sujin190  
       2017-10-30 12:43:52 +08:00
    @sciooga #15 Android 微信客户端不支持 pushState 这个其实好像 6.0 版本就已经修复了,jssdk 的其他接口都没什么问题,只是支付似乎不太稳定,我们测试来看 oppo 和华为的都是有时好,有时挂,不知道为啥,miui 和魅族以及原生的安卓都可以正常用,好奇怪
    sujin190
        17
    sujin190  
       2017-10-30 12:45:21 +08:00
    @kanganxi #6 你是不是在 vue 路由切换到这个页面的时候没有重新做 config jssdk 啊,发现似乎 ios 在 vue 这样的单页用 history 切换路由是不需要重新 config jssdk 的,但是安卓需要,也是一个坑。。
    kanganxi
        18
    kanganxi  
    OP
       2017-10-30 12:58:17 +08:00
    @sujin190 目前是安卓和 ios 都不行,最主要是我之前创建的 www.ceshi.com/ceshi1/可以完成支付,但是目前我已经在支付目录授权中已经删除,但是还是照样可以支付,其他的配置则无效,这个有点想不明白,我当时测试的时候 url 写了 ceshi1,开发完成我只是把 ceshi1 换成了 opay,就不行,这个就有点说不过去,目前最蛋疼的是我通过接口所有的配置参数都能获取到,就是报 url 为注册,
    kanganxi
        19
    kanganxi  
    OP
       2017-10-30 12:59:58 +08:00
    @sciooga 我就是从上一页面通过:location.href 跳转到 http://www.ceshi.com/opay/的,而且跳过来所有配置参数都已获取到
    kanganxi
        20
    kanganxi  
    OP
       2017-10-30 13:02:44 +08:00
    @BingoXuan 为了配合测试这个支付,前端妹子都要和我决裂了,她一直在强调她的代码没有任何问题,
    kely
        21
    kely  
       2017-10-30 13:03:27 +08:00 via Android
    同 1L #号前面加个? 号
    kanganxi
        22
    kanganxi  
    OP
       2017-10-30 13:04:25 +08:00
    @kely 目前改用 history 路由模式所以不存在#号的问题了
    sciooga
        23
    sciooga  
       2017-10-30 13:08:01 +08:00
    @kanganxi #22
    1. 根目录加入授权目录试试
    2. 打开支付页面,复制页面链接,随便找一个好友(或者“我的电脑”),把链接粘贴出来,打开试试
    kanganxi
        24
    kanganxi  
    OP
       2017-10-30 13:11:26 +08:00
    @sciooga 都试过了,我三个手机换着测,再弄不好,老板该解雇我了,
    favicon
        25
    favicon  
       2017-10-30 13:40:58 +08:00
    兄弟 我之前刚解决了这个问题 我来给你说正确的解决方法
    1.比如你微信配置的路径的是 www.xxx.com/pay/ 那么你支付页面的 url 就应该是 www.xxx.com/pay/xxx 也就是比配置的多一级
    2.最坑的一点是由于是单页面应用,在 ios 里微信只记录你页面最后一次刷新的地址!这是重点!
    比如你第一次打开是 www.xxx.com ,那么你即使页面和路由都切换到 www.xxx.com/pay/xxx/微信也认为你还是在首页,这应该是你遇到的“当前页面的 URL 未注册的问题”的根源所在。
    解决方案:在进入支付页的时候强制刷新一下。
    kanganxi
        26
    kanganxi  
    OP
       2017-10-30 13:50:17 +08:00
    @favicon 感谢兄弟,最奇葩的问题是我之前设置的支付目录是 /ceshi1/,实际我的请求 url 是 /ceshi1/openid(字符串),支付一直没问题,然后上周五我删除了这个授权目录,他娘的现在还是发起支付,我新设置的确实不行,
    qiayue
        27
    qiayue  
       2017-10-30 14:00:35 +08:00
    25 楼结贴,就是 /pay/ 和 /pay/xxx 的问题
    Alexisused
        28
    Alexisused  
       2017-10-30 14:26:25 +08:00
    @favicon 请教一下微信强制刷新怎么搞,我试过原生 reload 方法 和 this.$router.go(0), this.$.router.go('/当前页') 都不行, 网上搜到说带随机数,试了也不行
    sciooga
        29
    sciooga  
       2017-10-30 17:23:59 +08:00
    @favicon #25
    @kanganxi #26

    如果 25 楼是解决问题所在,那为何按我说的测试(#23 )两个都行不通?
    wploey
        30
    wploey  
       2017-12-16 15:24:08 +08:00
    @sciooga #15 location.href 正解 #25 貌似我也没用.. vue-route push 换成 location.href = '支付页面的 url' 就行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2801 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:21 · PVG 08:21 · LAX 16:21 · JFK 19:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.