zoukankan      html  css  js  c++  java
  • url带#号,微信支付那些坑

    现在前端很多框架的前端路由都带#号,主要为了做到无刷新跳转页面。

    在微信公众号做微信支付时,配置的支付路径比如是http://www.eee.com/#/order,在调微信支付的方法时错误信息是‘URL未注册’。

    我的解决方案是,写一个专门做为微信支付的页面,ajax请求后台返回需要调取微信支付的数据(签名等信息),然后把这些信息暂存起来(可以用h5的缓存,记得支付完清掉,如果用node,可以用node的缓存,以自己的实际项目方便)。跳转到支付的页面

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title></title>
    </head>
    <body></body>
    <script type="text/javascript">
    document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
    var request = {};
    if (sessionStorage && sessionStorage.wechatPayRequest) {
    request = JSON.parse(sessionStorage.wechatPayRequest);
    }
    WeixinJSBridge.invoke("getBrandWCPayRequest", {
    appId : request.appId,
    timeStamp : request.timeStamp,
    nonceStr : request.nonceStr,
    "package" : request.packageInfo,
    signType : request.signType,
    paySign : request.paySign
    }, function(res) {
    sessionStorage.wechatPayRequest = ''
    if ("get_brand_wcpay_request:ok" == res.err_msg) {
    // 支付成功
    }else {
    // 支付失败
    }
    });
    })
    </script>
    </html>

    一个空的页面即可,此处package是关键字,所以需要后台返回一个新的字段代替package。

    然后处理支付成功和支付失败的回调

    再把这个页面在当前域名下配一个路径,比如当前项目域名是http://www.eeeee.com,就把页面域名指定为http://www.eeeee.com/pay/wechat

    然后在微信公众号的后台把支付路径配置为http://www.eeeee.com/pay/

    这个方法有个缺点,就是调取支付要跳转页面,用户体验不好,支付完成还要再跳转到相应的页面。

  • 相关阅读:
    [NOI2012]美食节——费用流(带权二分图匹配)+动态加边
    mysqlsla slow-query常用用法
    [POI2000]病毒
    mysqlsla安装
    mysqldumpslow
    [学习笔记]约数
    查看MySQL数据的连接
    [学习笔记]质数
    关于ulimit -a中需要修改的两个值
    Miller-Rabin与二次探测
  • 原文地址:https://www.cnblogs.com/manman04/p/6129411.html
Copyright © 2011-2022 走看看