微信公众平台开发 生成带参数的二维码
一、账号管理 ----- 生成带参数的二维码
总结下关于微信公众号开发,生成带参数的二维码:
我在网上找了挺多资料来看,经过自己理解,然后进行了改进。
简单说一下,关于做生成二维码的步骤:
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 那段字符串 ,在一下这个地址就显示二维码了。
最后结果如下:
我做的这个是永久生成参数二维码,你也可以参数做临时的。。。