微新闻 >> 返回 您当前所在位置:首页 > 微新闻 > 正文

微信高级接口 生成带参数二维码

微6平台,教大家如何在微信上动态生成带参数的二维码

为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。

目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000)。两种二维码分别适用于帐号绑定、用户来源统计等场景。

用户扫描带场景值二维码时,可能推送以下两种事件:

  1. 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
  2. 如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。

获取带参数的二维码的过程包括两步,首先创建二维码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数据例子:{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
注:这里的TOKEN是 ACCESS_TOKEN 获取地址 http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96access_token 
    PHP动态获取ACCESS_TOKEN 函数
function get_token(){
    $token_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET';
    $data = vita_get_url_content($token_url);
    $data=json_decode($data,true);
     //微信规定access_token有效时间为7200
    $access_token = empty($data['access_token'])? '':$data['access_token'];
    return $access_token;
} 

永久二维码请求说明

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 该二维码有效时间,以秒为单位。 最大不超过1800。
action_name 二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久
action_info 二维码详细信息
scene_id 场景值ID,临时二维码时为32位非0整型,永久二维码时最大值为1000(目前参数只支持1--100000)

返回说明

正确的Json返回结果:

{"ticket":"gQG28DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0FuWC1DNmZuVEhvMVp4NDNMRnNRAAIEesLvUQMECAcAAA==","expire_seconds":1800}
参数 说明
ticket 获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。
expire_seconds 二维码的有效时间,以秒为单位。最大不超过1800。

错误的Json返回示例:

{"errcode":40013,"errmsg":"invalid appid"}  

通过ticket换取二维码

获取二维码ticket后,开发者可用ticket换取二维码图片。请注意,本接口无须登录态即可调用。

请求说明

HTTP GET请求(请使用https协议) https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET 提醒:TICKET记得进行UrlEncode 

返回说明


获取ticket函数 
$post_string = '{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 1}}}';//scene_id 识别号,用户扫描二维码后会将该识别号发送给开发者
$ticket = UrlEncode(https_post($url, $post_string)); 
//二维码图片url
$picurl = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".$ticket;
echo $picurl; //$picurl 就是二维码图片地址,到这里就成功啦

function https_post($url,$data){
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $result = curl_exec($curl); 
    if (curl_errno($curl)) { 
        return 'Errno'.curl_error($curl);
    }
    curl_close($curl); 
    $result=json_decode($result,true);
    $ticket = empty($result['ticket'])? '':$result['ticket'];
    return $ticket;
} 

ticket正确情况下,http 返回码是200,是一张图片,可以直接展示或者下载。

HTTP头(示例)如下:
Accept-Ranges:bytes
Cache-control:max-age=604800
Connection:keep-alive
Content-Length:28026
Content-Type:image/jpg
Date:Wed, 16 Oct 2013 06:37:10 GMT
Expires:Wed, 23 Oct 2013 14:37:10 +0800
Server:nginx/1.4.1

错误情况下(如ticket非法)返回HTTP错误码404。

微信公众平台开发定制 - 微6平台
转载地址: http://weixin66.net/newsshow.php?cid=4&id=14
微信号: 【 dongjikeji】
微6平台官方微信
垂询热线:
400-6073-718
18601718231

客服小李:微6客服:www.weixin66.net

客服小黎:微6客服:www.weixin66.net

合作咨询:微6客服:www.weixin66.net

技术咨询:微6客服:www.weixin66.net