### 参数二维码 * * * * * 目前有2种类型的二维码: 1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景。临时二维码的参数为32位非0整型。 2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。永久二维码参数分为整型及字符串型。整型永久二维码参数最大值为100000(目前参数只支持1--100000);字符串型永久二维码参数长度限制为1到64。 > 由于当前项目覆盖的本地粉丝群体几乎不会超过10万人,采用对用户生成永久二维码。 * * * * * 创建二维码的请求接口如下: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN 整型永久二维码的POST数据格式如下。 ~~~ { "action_name":"QR_LIMIT_SCENE", "action_info":{ "scene":{ "scene_id":1000 } } } ~~~ SDK中封装的生成参数二维码代码的方法,注意返回的是数组 ~~~ public function create_qrcode($scene_type, $scene_id) { switch($scene_type) { case 'QR_LIMIT_SCENE': //永久 $msg = array('action_name' => $scene_type, 'action_info' => array('scene' => array('scene_id' => $scene_id)) ); break; case 'QR_SCENE': //临时 $msg = array('action_name' => $scene_type, 'expire_seconds' => 2592000, //30天 'action_info' => array('scene' => array('scene_id' => $scene_id)) ); break; case 'QR_LIMIT_STR_SCENE': //永久字符串 $msg = array('action_name' => $scene_type, 'action_info' => array('scene' => array('scene_str' => strval($scene_id))) ); break; } $url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->access_token; $res = $this->http_request($url, json_encode($msg)); $result = json_decode($res, true); return $result; } ~~~ SDK中根据上边生成的$ticket['ticket']得到参数二维码图片地址的方法 ~~~ public function qrcode_imgurl($ticket) { $url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket); return $url; } ~~~ 测试↓↓成功返回字符串,浏览器访问即是一张二维码图片,这里的scene_id=1000,在接下来的开发中自然是为每一个用户生成唯一的scene_id。 ~~~ public function qrcode() { $weixin = new \weixin\Wxapi(); $ticket = $weixin->create_qrcode('QR_LIMIT_SCENE',1000); $qrcode_img = $weixin->qrcode_imgurl($ticket['ticket']); return var_dump($qrcode_img); } ~~~