微信日月榜推荐二维码开发教程
微信日月榜推荐二维码开发教程
最近小编了解到,有不少小伙伴在参加微信日月榜的二维码开发,似乎这些人当中新手居多,对一些开发细节还不是很了解,尤其是有关推广二维码的开发。接下来,小编就用找到的一则资料来给大家介绍一下有关微信二维码开发的相关知识。
前一段时间小编的公司接手了一个微信分销的项目,该项目中有一个推广二维码的功能:分销商可以生成自己的二维码,当其他用户首次扫描的时候会自动成为该分销商的下级。这个过程中最主要的就是利用微信的生成二维码接口生成一个永久的二维码。今天,我就结合自己开发中遇到的问题,和大家一块学习一下微信的二维码生成接口的使用。主要分为两部分:理论知识学习、代码编写实践
理论知识学习
在开始工作之前我们先来了解一下微信的二维码。
微信目前有2种类型的二维码:
1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久 保存的业务场景
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。
一、创建二维码ticket
每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),在这里我只介绍永久二维码创建二维码ticket过程。
http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式:json
POST数据例子:{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}
参数说明
参数说明
expire_seconds该二维码有效时间,以秒为单位。 最大不超过2592000(即30天),此字段如果不填,则默认有效期为30秒。
action_name二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久,QR_LIMIT_STR_SCENE为永久的字符串参数值
action_info二维码详细信息
scene_id场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为100000(目前参数只支持1--100000)
scene_str场景值ID(字符串形式的ID),字符串类型,长度限制为1到64,仅永久二维码支持此字段
正确的Json返回结果:
{"ticket":"gQH47joAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2taZ2Z3TVRtNzJXV1Brb3ZhYmJJAAIEZ23sUwMEmm
3sUw==","expire_seconds":60,"url":"http:\/\/weixin.qq.com\/q\/kZgfwMTm72WWPkovabbI"}
二、通过ticket换取二维码
获取二维码ticket后,开发者可用ticket换取二维码图片。请注意,本接口无须登录态即可调用。
请求说明
HTTP GET请求(请使用https协议)https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET提醒:TICKET记得进行UrlEncode
返回说明
ticket正确情况下,http 返回码是200,是一张图片,可以直接展示或者下载。
代码编写实践
经过前面的理论知识学习,相信大家已经对微信生成二维码接口有了一些了解,Ok,接下来我们就编写代码测试一下。
一、获取ticket
[php] view plain copy $action_name="QR_LIMIT_SCENE";
$json_arr = array('action_name'=>$action_name,'action_info'=>array('scene'=>array('scene_id'=>$scene_id)));
$data = json_encode($json_arr);
$this -> access_token($db);
$ret = $db->getRow("SELECT `access_token` FROM `wxch_config`");
$access_token = $ret['access_token'];
if(strlen($access_token) >= 64)
{
$url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token='.$access_token;
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
if (defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')) {
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
}
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$res_json= curl_exec ($ch);
curl_close ($ch);
$json = json_decode($res_json);
$ticket = $json->ticket;// 9-15
$json = json_decode($res_json);
}
$ticket = $json->ticket;
相信做过微信开发的朋友对我在上面贴出的代码会有疑惑:为何不把微信请求封装成一个方法。Ok,能提出这个问题,说明你已经对面向对象的封装有了一定的了解。小编刚开始也确实是把微信请求封装成了一个方法,无奈这个方法不太稳定,放弃之前的思路。
二、根据ticket获取二维码图片
[php] view plain copy if($ticket)
{
$ticket_url = urlencode($ticket);
$ticket_url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket='.$ticket_url;
$imageinfo=$this -> downloadimageformweixin($ticket_url);
$time = time();
$url=$_SERVER['HTTP_HOST'];
$path = '../images/qrcode/'.$time.'.jpg';
$surl="http://".$url.'/images/qrcode/'.$time.'.jpg';
$local_file=fopen($path,'a');
if(false !==$local_file){
if(false !==fwrite($local_file,$imageinfo)){
fclose($local_file);
//将生成的二维码图片的地址放到数据库中
}
}
}
在上面的代码中,我把获取到的二维码下载下来之后有保存到了数据库中,这是项目需要,因人而异。
Ok,理论+知识学习完毕,不知道你学会了吗?
二维码在线调试工具
以上就是今天小编给大家带来的微信日月榜推荐二维码开发教程的内容,俗话说万事开头难,没有人一开始就会全部的知识与技能,这是一个积累的过程。所以小伙伴一开始遇到一些困难也不要灰心,要努力学习,相信自己一定能行。