微信公众平台开发 生成带参数的二维码

 

一、账号管理 ----- 生成带参数的二维码

总结下关于微信公众号开发,生成带参数的二维码:

我在网上找了挺多资料来看,经过自己理解,然后进行了改进。

简单说一下,关于做生成二维码的步骤:

1) 通过appid 和 appsecret 获取到 access_token

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

2) 然后 再通过 access_token 获取 ticket

 分别有临时二维码和永久二维码 : 

 临时二维码的ticket:

URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

post 数据方式:json 

{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

永久二维码的ticket:

URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

post 数据方式:json 

{"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

 好了,下面就开始动手了。

二、

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

目前有2种类型的二维码:

1、临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
2、永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。

临时二维码请求说明

http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
POST数据格式:json
POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}

或者也可以使用以下POST数据创建字符串形式的二维码参数:
{"expire_seconds": 604800, "action_name": "QR_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

永久二维码请求说明

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}}}

或者也可以使用以下POST数据创建字符串形式的二维码参数:
{"action_name": "QR_LIMIT_STR_SCENE", "action_info": {"scene": {"scene_str": "test"}}}

 三、下面建一个ticket.php文件,放在你服务器上。

<?php
@header('Content-type: text/plain;charset=UTF-8');
function https_request($url, $data = null,$time_out=60,$out_level="s",$headers=array())
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_NOSIGNAL, 1);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    if($out_level=="s")
    {
        //超时以秒设置
        curl_setopt($curl, CURLOPT_TIMEOUT,$time_out);//设置超时时间
    }elseif ($out_level=="ms") 
    {
        curl_setopt($curl, CURLOPT_TIMEOUT_MS,$time_out);  //超时毫秒,curl 7.16.2中被加入。从PHP 5.2.3起可使用 
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    if($headers)
    {
        curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);//如果有header头 就发送header头信息
    }
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

$access_token = "16_uHF0JVZKC56cG4JcEUOUX_PWua3FmWDwF0nYvp3NsKFNw29xCvFYifqRmnTwewdVwjVA76-9qD4K7D4XvgHQeG90r-0F2VFyW1JTKK16UD2jETDNMnjB3mubHW4k7hsoxxIuOIkZxgY34VtRBWTfAJANIF";
$data = '{
    "expire_seconds": 604800,
    "action_name": "QR_SCENE",
    "action_info": {
        "scene": {
            "scene_id": 100
        }
    }
}';
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?"
    ."access_token=" . $access_token;
$result=https_request($url, $data);
$result=json_decode($result,true);
echo $result;

然后输出 :

 然后复制ticket 那段字符串 ,在一下这个地址就显示二维码了。

最后结果如下:

我做的这个是永久生成参数二维码,你也可以参数做临时的。。。

猜你喜欢

转载自blog.csdn.net/li3839/article/details/84839062
今日推荐