综述:微信提供三中接口来请求二维码,即 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去
用真实的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);
//获取当前时间措
$time=time(); //指定文件保存路径 $file = "static/smallwechat$time.jpg"; //进行保存 $res=file_put_contents($file, $str); //如果保存成功返回路径 if($res!=0){ return json_encode($file,JSON_UNESCAPED_UNICODE);
按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
→我们致力于为广大网民解决所遇到的各种电脑技术问题 如果您认为本词条还有待完善,请 编辑词条
上一篇帝国ECMS二维码插件
下一篇支付宝集五福来了,有什么新套路?