前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信扫描带参数的二维码事件推送返回 qrscene_0

微信扫描带参数的二维码事件推送返回 qrscene_0

作者头像
沈唁
发布2022-04-12 16:53:00
1.6K0
发布2022-04-12 16:53:00
举报
文章被收录于专栏:沈唁志沈唁志

最近在处理微信扫码关注公众号登录的需求时,遇到了扫描微信生成的带参数二维码后,事件推送中EventKey一直是0qrscene_0的问题。

首先确定的是在向微信申请二维码时,没有生成过 0 的参数,而且事件推送中的Ticket是正确的。

下面是错误的事件推送数据包:

  • 用户未关注时,进行关注后
代码语言:javascript
复制
<xml>
<ToUserName><![CDATA[gh_a786fbe98353]]></ToUserName>
<FromUserName><![CDATA[oW5Ux6ceqP-b0C-72qHEWZYk8Cr8]]></FromUserName>
<CreateTime>1648535359</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[qrscene_0]]></EventKey>
<Ticket><![CDATA[gQGv7zwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAydzVld0FUcmxjTkYxcEhEMnh5MVEAAgQvp0JiAwQ8AAAA]]></Ticket>
</xml>
  • 用户已关注时
代码语言:javascript
复制
<xml>
<ToUserName><![CDATA[gh_a786fbe98353]]></ToUserName>
<FromUserName><![CDATA[oW5Ux6ceqP-b0C-72qHEWZYk8Cr8]]></FromUserName>
<CreateTime>1648535169</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[SCAN]]></Event>
<EventKey><![CDATA[0]]></EventKey>
<Ticket><![CDATA[gQHQ7zwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAySDFsdEEycmxjTkYxcVdDMmh5MTQAAgR_pkJiAwQ8AAAA]]></Ticket>
</xml>

按理说在用户未关注时,进行关注后EventKey的值为以qrscene_为前缀,加上二维码的参数值,而用户已关注时,EventKey的值为创建二维码时的二维码scene_id

于是将申请创建二维码ticket接口的 POST 数据打印了一下,发现了端倪

微信文档中的格式是这样的:

代码语言:javascript
复制
{
    "expire_seconds": 604800,
    "action_name": "QR_SCENE",
    "action_info": {
        "scene": {
            "scene_id": 123
        }
    }
}

而我发起的类似于:

代码语言:javascript
复制
{
    "expire_seconds": 604800,
    "action_name": "QR_SCENE",
    "action_info": {
        "scene_id": 123
    }
}

action_info 中缺少了scene字段,加上后进行验证可以收到正确的EventKey了。

代码语言:javascript
复制
<xml>
<ToUserName><![CDATA[gh_a786fbe98353]]></ToUserName>
<FromUserName><![CDATA[oW5Ux6ceqP-b0C-72qHEWZYk8Cr8]]></FromUserName>
<CreateTime>1648537854</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[SCAN]]></Event>
<EventKey><![CDATA[100001]]></EventKey>
<Ticket><![CDATA[gQHu7zwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyN3NrdkF1cmxjTkYxb1FOMk55MTQAAgT4sEJiAwQ8AAAA]]></Ticket>
</xml>
代码语言:javascript
复制
<xml>
<ToUserName><![CDATA[gh_a786fbe98353]]></ToUserName>
<FromUserName><![CDATA[oW5Ux6ceqP-b0C-72qHEWZYk8Cr8]]></FromUserName>
<CreateTime>1648535766</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[qrscene_100001]]></EventKey>
<Ticket><![CDATA[gQFU8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyNm55YUFEcmxjTkYxb2NGMjF5MU8AAgTQqEJiAwQ8AAAA]]></Ticket>
</xml>

另外还需要注意的是:用户未关注扫带参数的二维码和已关注扫描带参数的二维码,传过来的EventEventKey是不一样:

Event一个是subscribe一个是SCAN,而EventKey一个带前缀qrscene_一个不带,需要进行区分处理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 沈唁志 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档