收藏
回答

请你们出面解决一下scanQRCode为什么不行,chooseWXPay(支付)可以;?只管收钱了吗

同样的签名

jsApiList: [
    'scanQRCode',
] // 这个就不行


jsApiList: [
    'chooseWXPay',
] // 这个就可以


支付接口都可以了,扫一扫却不可以

回答关注问题邀请回答
收藏

3 个回答

  • 涛
    2020-07-10
    laravel6.0
    
    JS页面代码
    
        $(function(){
            wx.config({
                debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                appId: '{{$__appid}}', // 必填,公众号的唯一标识
                timestamp: '{{$__timestamp}}' , // 必填,生成签名的时间戳
                nonceStr: '{{$__noncestr}}', // 必填,生成签名的随机串
                signature: '{{$__signature}}',// 必填,签名
                jsApiList: [
                    'scanQRCode',
                ] // 必填,需要使用的JS接口列表
            });
            wx.error(function(res){
                // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
                alert(res.errMsg);
            });
            wx.ready(function(){
                // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
            });
    
        });
    
        function scans() {
            wx.scanQRCode({
                needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                scanType: ["qrCode"], // 可以指定扫二维码还是一维码,默认二者都有
                success: function (res) {
                    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
                    alert(result);
                }
            });
        }
    


    public function writeScanView(Request $request){
            $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
            $url=urlencode("$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]");
            $ticket = $this->getGzhJsApiTicket();
            $noncestr = strtolower(Str::random(10)); // 10位随机数
            $timestamp = time();
    //        $string1 = "jsapi_ticket=$ticket&noncestr=$noncestr&timestamp=$timestamp&url=$url";
            $data = [
                "jsapi_ticket"=>$ticket,
                "noncestr"=>$noncestr,
                "timestamp"=>$timestamp,
                "url"=>$url,
            ];
            ksort($data);
            $string1 = ToUrlParams($data);
    
            $signature = sha1($string1);
            $__appid = gzh_appid;
            $__timestamp = $timestamp;
            $__noncestr = $noncestr;
            $__signature = $signature;
            return view("advertisers.writeScan",compact('__appid','__timestamp','__noncestr','__signature'))->with("title","扫码");
        }
    


    2020-07-10
    有用
    回复
  • จุ๊บ
    จุ๊บ
    2020-07-10

    建议你把 调用方法和js代码贴出来

    2020-07-10
    有用
    回复 1
    • 涛
      2020-07-10
      已发
      2020-07-10
      回复
  • VBit
    VBit
    2020-07-10

    你意思是接口没法用调不起来?

    2020-07-10
    有用
    回复 3
    • 涛
      2020-07-10
      是的,调用扫码的功能就一直报签名错误;换个支付的就弹出config:ok
      2020-07-10
      回复
    • 涛
      2020-07-10
      排除不是手机的问题,官方的demo体验,能调起扫一扫的功能
      2020-07-10
      回复
    • 涛
      2020-07-10
      排除不是签名的问题,校验签名的参数工具完全匹配
      2020-07-10
      回复
登录 后发表内容
问题标签