588创业论坛
标题:
微信公众号开发学习贴一:怎么做带数据统计功能的关注二维码
[打印本页]
作者:
匿名
时间:
2017-11-14 16:30
标题:
微信公众号开发学习贴一:怎么做带数据统计功能的关注二维码
一、场景二维码
为了满足用户渠道推广分析的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。
目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--100000)。两种二维码分别适用于帐号绑定、用户来源统计等场景。
用户扫描带场景值二维码时,可能推送以下两种事件:
如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。
获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。
二、创建二维码
第一步:通过微信公众号的 appid 和 secret 参数获得 access_token参数,
获取access_token参数的php代码如下:
第二步:获取ticket参数
通过第一步获取到access_token参数后,就可以通过access_token参数来获取创建二维码必须要用到的一个参数——ticket,每次创建二维码ticket需要提供一个开发者自行设定的参数(scene_id),分别介绍临时二维码和永久二维码的创建二维码ticket过程。
临时二维码请求说明
http请求URL:
https://api.weixin.qq.com/cgi-bi ... ?access_token=TOKEN
POST数据格式
1 {
2 "expire_seconds": 1800,
3 "action_name": "QR_SCENE",
4 "action_info": {
5 "scene": {
6 "scene_id": 100000
7 }
8 }
9 }
返回格式:
{
"ticket": "gQFK8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL3kweXE0T3JscWY3UTltc3ZPMklvAAIEG9jUUgMECAcAAA==",
"expire_seconds": 1800
}
永久二维码请求说明
http请求URL:
https://api.weixin.qq.com/cgi-bi ... ?access_token=TOKEN
POST数据格式
{
"action_name": "QR_LIMIT_SCENE",
"action_info": {
"scene": {
"scene_id": 1000
}
}
}
备注:这个scene_id的值就是你带入的二维码参数
返回格式
{
"ticket": "gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA=="
}
获取ticket参数的php代码如下:
第三步:通过ticket创建带参数的微信公众关注二维码图片
获取到ticket参数后,我们就可以用ticket参数生成二维码图片。无须登录态即可调用。
生成二维码图片的地址:
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
(TICKET必需UrlEncode),
具体生成代码如下:
ticket正确情况下,http 返回码是200,网页上会直接显示是一张二维码图片。
三、当用户扫描上面生成的带参数二维码图片后,微信公众号就会推送以下两种情况事件给我们:
A、如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
B、如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。
1. 用户未关注时,进行关注后,微信公众号就会进行事件推送,返回下面这些代码给我们。
<xml>
<ToUserName><![CDATA[gh_45072270791c]]></ToUserName>
<FromUserName><![CDATA[o7Lp5t6n59DeX3U0C7Kric9qEx-Q]]></FromUserName>
<CreateTime>1389684286</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[qrscene_1000]]></EventKey>
<Ticket><![CDATA[gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA==]]></Ticket>
</xml>
2. 用户已关注时,微信公众号就会直接进行事件推送,返回下面这些代码给我们。
<xml>
<ToUserName><![CDATA[gh_45072270791c]]></ToUserName>
<FromUserName><![CDATA[o7Lp5t6n59DeX3U0C7Kric9qEx-Q]]></FromUserName>
<CreateTime>1389684184</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[SCAN]]></Event>
<EventKey><![CDATA[1000]]></EventKey>
<Ticket><![CDATA[gQHi8DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0UweTNxNi1sdlA3RklyRnNKbUFvAAIELdnUUgMEAAAAAA==]]></Ticket>
</xml>
微信公众号会这些返回代码数据推送到我们在微信公众号管理后台"基本配置"页面里设置的那个“服务器配置”的网址上,这样我们就可以通过这个“服务器配置”网址的页面来接收这些数据并存入数据库。
欢迎光临 588创业论坛 (http://bbs.588cy.com/)
Powered by Discuz! X2.5