• 公众号调起微信扫一扫


    调起扫一扫遇到的坑,签名失效。
    1、获取后台接口签名时,一定要确保,后台处理将ticket和token进行缓存处理。
    2、动态参数url.获取方式:location.href.split('#')[0],一开始加了encodeURIComponent,但是验签还是失败,抱着试试的态度将他去掉了。结果成功了。
    <script type="text/javascript">
            var _appId ='当前公众号的appid';
            var openid="";
        $(function() {
            //需要把当前页面的url地址传到后台,生成签名信息时需要使用到。下面的地址是controller层调用当前页面的路径
            // //获取签名的后台接口
            openid = getUrlParam('openid');
            $(document).ready(function(){
                 //需要把当前页面的url地址传到后台,生成签名信息时需要使用到。下面的地址是controller层调用当前页面的路径
                //var tokenUrl= encodeURIComponent(location.href.split('#')[0]);
                var tokenUrl = location.href.split('#')[0];
                //获取签名
                $.ajax({
                    type:'post',
                    url: 'getCYPZGZHticket',
                    data: { 'url': tokenUrl },
                    success:function(res){
                        var json = $.parseJSON(res);
                        var code = json.info;
                        if(code !='1'){
                            error();
                        }else{
                            wx.config({
                                debug:false,// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                                appId: _appId,// 必填,公众号的唯一标识
                                timestamp: json.data.sjc,// 必填,生成签名的时间戳
                                nonceStr: json.data.noncestr,// 必填,生成签名的随机串
                                signature: json.data.sign,// 必填,签名,见附录1
                                jsApiList: ['checkJsApi','scanQRCode']
                                // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
                            });
                            wx.scanQRCode({
                                desc: 'scanQRCode desc',
                                needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                                scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
                                success: function (res) {
                                    var url = res.resultStr;
                                    //拿到二维码的值进行处理操作
                                    uploadData(url);
                                }
                            });
                        }
                    }
                })
            })
            function uploadData(qrcode) {
                if (isEmpty(openid)) {
                    error();
                }else{
                    $.ajax({
                        url: 'uploadSYS',
                        data: { 'openid': openid,'qrval':qrcode },
                        success: function (res) {
                            var json = $.parseJSON(res);
                            var code = json.info;
                            if (code != '1') {
                                error();
                            } else {
                                ok();
                            }
                        },
                    })
                }
                
           }
    
    </script>
    

      

  • 相关阅读:
    struts2 错误:Dispatcher initialization failed java.lang.RuntimeException
    JavaScript如何实现拖放功能
    Javascript异步执行时要小心的变量作用域
    Javascript异步编程
    Origin null is not allowed by Access-Control-Allow-Origin
    eclipse spket插件 错误 Syntax error on token "(", FunctionExpressionHeader expected after this
    EL--Expression Language
    [Swift]LeetCode820. 单词的压缩编码 | Short Encoding of Words
    [Swift]LeetCode879. 盈利计划 | Profitable Schemes
    [Swift]LeetCode878. 第 N 个神奇数字 | Nth Magical Number
  • 原文地址:https://www.cnblogs.com/syeacfpl/p/14885802.html
Copyright © 2020-2023  润新知