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