微信小程序之二维码请求

综述:微信提供三中接口来请求二维码,即 A B C 三中接口,其区别不多说,直接看微信官方手册,网址https://developers.weixin.qq.com/miniprogram/dev/api/qrcode.html 经过仔细查看手册后,发现需要请求二维码,必须先请求access token,请求网址 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential 所传参数为,appid和appsecret,然后拿accesstoken去和需要二维码所传的参数去请求二维码

请求二维码步骤

        方法一:在微信小程序js中请求代码如下,用真实的appid和appsecret替换下面的appid和appsecret直接congsole就可看见二维码的二进制形式,这时候二维码就请求出来了,

注意:在这块如果是开发工具填写了appid,则将打开开发工具右上角详情----->不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书 (勾选)但是微信小程序请求的二维码是二进制形式所以建议在后端去请求,因为请求的二维码是二进制形式,请求后,将请求二进制二维码直接保存成图片,详见方法二 我用的是php语言所以就做一个案例了
wx.request({

// 获取token
url: 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential',
data: {
appid: '*****',
secret: '*******'
},
success(res) {
wx.request({
// 调用接口C
url: 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' + res.data.access_token,
method: 'POST',
data: {
"path": "pages/meiTuan/meiTuan",
"width": 430
},
success(res) {
console.log(res)
// res是二进制流,后台获取后,直接保存为图片,然后将图片返回给前台
}
})
}
})
},

方法二:

    1用php远程请求accesstoken,这里说点题外话进行点扩展

            php远程请求有多种方式:如 

            (1)用file_get_contents 以get方式获取内容   

            (2)用fopen打开url,用get方式获取

            (3)用file_get_contents 以post方式获取内容 

        (4)用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,fsockopen需要 PHP.ini 中   allow_url_fopen 选项开启 

            (5)用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

             (6)使用curl库,使用curl库之前,可能需要查看一下php.ini是否已经打开了curl扩展

            这里我写一下第6中,通过curl方式请求微信小程序accesstoken,代码如下(可复制直接用)
    $appid='***';
    $appsecret='****';
//请求accesstoken接口
 $url='https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret;
 $https=true;
 $method='get';
 $data=null;
 //1.初始化url
 $ch = curl_init($url);
 //2.设置相关的参数
 //字符串不直接输出,进行一个变量的存储
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 //判断是否为https请求
 if($https === true){
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
 }
 //判断是否为post请求
 if($method == 'post'){
     curl_setopt($ch, CURLOPT_POST, true);
     curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 }
 //3.发送请求获取数据
 $str = curl_exec($ch);
 //4.关闭连接
 curl_close($ch);
 2通过以上请求到的accesstoken来获取小程序二维码并保存,这里需要注意的是,以上的curl请求可以封装成函数在上面和这个时候调用,由于我是写给没有基础的伙伴们的,所以我就不封装了,你们在实际工作中去封装吧               
  //获取请求到的结果讲上面获取的accresstoken进行解码成数组,然后获取accesstoken值
         $arr = json_decode($str,true);
         $access_token=$arr['access_token'];
         //获取二维码,但是切记这里accesstoken不能用通过post传值,只能用get传值
         $url='https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$access_token;
         $data['scene']="uid=".$user_id;
         $data['path']=$path;
         $data['width']=$width;
         $post_data=json_encode($data);
         $https=true;
         $method='post';
         //1.初始化url
         $ch = curl_init($url);
         //2.设置相关的参数
         //字符串不直接输出,进行一个变量的存储
         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
         //判断是否为https请求
         if($https === true){
             curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
             curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
         }
         //判断是否为post请求
         if($method == 'post'){
             curl_setopt($ch, CURLOPT_POST, true);
             curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
         }
         //3.发送请求
         $str = curl_exec($ch);
         //4.关闭连接 至此二维码的二进制值为$str

         curl_close($ch);

3将二维码的二进制值保存为图片

//获取当前时间措  
$time=time();
//指定文件保存路径
         $file = "static/smallwechat$time.jpg";
//进行保存
         $res=file_put_contents($file, $str);
//如果保存成功返回路径
         if($res!=0){
             return json_encode($file,JSON_UNESCAPED_UNICODE);

         }

至此整个小程序二微码获取完成,希望对大家有帮助,谢谢阅览

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值