需求
- 用户通过微信扫码关注公众号获取红包
解决方案
步骤
- 生成带参数的二维码
扫码
是否关注公众号
已关注,则微信会将带场景值扫描事件推送给开发者,根据场景判断当前二维码是否失效
- 失效,公众号推送消息:当前二维码已失效
- 未失效,获取当前扫码用户openid查询是否已经领取过红包
- 已领取,则公众号推送消息到微信用户通知今日已领取
- 未领取
- 则调用发送红包接口,发送红包,发送成功,则存储当前微信用户信息,包含唯一 openid。
- 设置当前扫描二维码失效
未关注,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者
- 根据场景值查询二维码是否失效
- 失效,公众号推送消息:当前二维码已失效
- 未失效,获取当前扫码用户openid查询是否已经领取过红包
- 已领取,则公众号推送消息到微信用户通知今日已领取
- 未领取
- 则调用发送红包接口,发送红包,发送成功,则存储当前微信用户信息,包含唯一 openid。
- 设置当前扫描二维码失效
- 根据场景值查询二维码是否失效
- 生成带参数的二维码
- 目前有2种类型的二维码:
- 临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
- 永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
- 用户扫描带场景值二维码时,可能推送以下两种事件:
- 用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
- 用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。
- 获取带参数的二维码的过程包括两步
- 首先创建二维码ticket
- 然后凭借ticket到指定URL换取二维码
- 目前有2种类型的二维码:
这里我们选择永久二维码
- 请求获取ticket:
- http请求方式
- POST
- 请求地址:
- post 数据格式 json
- {
“action_name”: “QR_LIMIT_SCENE”,
“action_info”: {“scene”: {“scene_id”: 123}}
} - 创建字符串形式的二维码参数:
{
“action_name”: “QR_LIMIT_STR_SCENE”,
“action_info”: {“scene”: {“scene_str”: “test”}}
}
- {
- 参数说明
- 请求地址的TOKEN参数
- action_name :二维码类型
- action_info :二维码详细信息
- scene_str :场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
- 请求地址的TOKEN参数
- http请求方式
- 首先,获取请求地址参数 TOKEN
- 请求方式
- GET
- 请求地址
- 请求方式