目前有两种类型的二维码:
1,临时二维码,是有限时常的,7天,604800秒过期,但是能生成较多数量,主要途:KFC促销等
2,永久二维码,是无限时长的,但是数量最多值是10万个,主要用途:帐号绑定,用户来源统计等
用户扫描带场景时二维码时,可能推送以下两种事件:
1,如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者
2,如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者
生成带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码
二维码的英文别名一般都被称为:Quick Response Code,程序猿们一般都会称为qrcode
废话不多说,我们这里写3个永久的二维码,他们分别是电视来源(forever_qrcode.php),和杂志来源(forever_qrcode2.php),和其他来源(forever_qrcode3.php)
forever_qrcode.php代码如下,其他的子需要修改下$scene_id的值即可
<?php header("Content-Type:text/html;charset=utf-8"); require_once "get_token.php"; require_once "common.php"; //首先我们申请一个二维码的ticket //比如我们规定$scene_id值10001表示场景是电视,10002表示杂志,10003表示其他来源 $scene_id = ‘10001‘; //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,仅永久二维码支持此字段 $post = ‘{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": ‘.$scene_id.‘}}}‘; $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token={$access_token}"; //发出http请求,申请ticket $res = http_request($url,$post); $str_json = json_decode($res); $ticket = $str_json->ticket; //通过ticket来换取二维码 $ticket = urlencode($ticket); $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket={$ticket}"; $filee = file_get_contents($url); //把该二维码文件保存到空间里的rqcode文件夹内,如果是linux系统要要修改下文件权限 chown -R www:www ./rqcode/ $file_name = "qrcode{$scene_id}.jpg"; file_put_contents("./qrcode/".$file_name,$filee); $rqcode_url = "http://weixin.showtp.com/qrcode/{$file_name}"; ?> <!DOCTYPE html> <html> <head> <title>生成永久性二维码</title> </head> <body> <h1>生成永久性二维码之电视来源</h1> <img src="<?php echo $rqcode_url; ?>" /> </body> </html>
其他的文件分别如下图所示:
然后访问网站即可看到您所需要的效果如下:
温馨提示,在开发的时候发现了一个报错,报错信息如下图所示
在网上终于找到解决的办法,解决方法要修改php.ini,详情可以参考:http://www.cnblogs.com/leigood/p/5240699.html