渠道二维码的作用是方便公众号统计关注的来源,原理是用户扫描带参数的二维码,微信服务器会向开发者服务器推送一条带着EventKey参数消息:
EventKey:事件KEY值,qrscene_为前缀,后面为二维码的参数值
推送XML数据包示例:
xmlToUserName![CDATA[toUser]]/ToUserName
FromUserName![CDATA[FromUser]]/FromUserName
CreateTime123456789/CreateTime
MsgType![CDATA[event]]/MsgType
Event![CDATA[subscribe]]/Event
EventKey![CDATA[qrscene_123123]]/EventKey
Ticket![CDATA[TICKET]]/Ticket
/xml
这时候开发者服务器应该对不同的参数进行判断,以便进入下一步的业务流程。
拥有带参数的二维码接口的目前只有认证过的服务号。
本教程基于Mysql+PHP解决。
以上的示例代码中,根据注释改填入数据库信息即可。
逻辑如下:
如果接受到消息不为空:if(!empty($postStr))
则进行XML解析,将XML解析为对象。
当事件为扫描(即已经关注的用户扫描二维码后,事件值便是SCAN),则直接输出“您已经关注”即可。
如果事件为关注($Event==subscribe)同时参数不为空(!empty($EventKey)),则截取出参数值substr($EventKey,8)。参数值为ID,即渠道二维码的ID
连接数据库,将对应的ID二维码相应的值+1统计。
UPDATEqcSETtotal=total+1,today=today+1WHEREid=
假设我们要生产100个渠道二维码,在我们完成获取token参数后,使用循环获取100个参数二维码。设置参数i自增,直接作为参数二维码的参数。
$http=设置请求网址$content=file_get_contents($http);//发送请求$json=json_decode($content,true);//解析返回数据$token=$json[access_token];//提取token$url=组合请求网址for($i=1;$i=100;$i++){$ch=curl_init();//初始化$data={action_name:QR_LIMIT_SCENE,action_info:{scene:{scene_id:.$i.}}};curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_HEADER,0);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$data);$return=curl_exec($ch);curl_close($ch);$re=json_decode($return,true);$http=组合出二维码网址echoimgsrc=.$http.;echoID:.$i;
这边主要用到了SQL的知识。
将统计值全部读取出来,循环输出即可。
SQL:SELECT*FROMqc
!DOCTYPEhtmlhtmllang=zh-cnheadmetacharset=utf-8metaname=viewportcontent=width=device-width,initial-scale=1.0,user-scalable=0,maximum-scale=1.0,minimun-sacle=1.0metahttp-equiv=Cache-Controlcontent=no-siteappmetahttp-equiv=Cache-Controlcontent=no-transformtitle统计/title/headbody?php$db=mysql_connect(数据库地址,用户名,密码);mysql_select_db(数据库名,$db);$re=mysql_query(SELECT*FROMqc);while($row=mysql_fetch_array($re)){echoID:.$row[id].总计:.$row[total].今日:.$row[today];echo/br;}?/body
推荐:
网友评论 ()条 查看