扫码阅读
手机扫码阅读
微信扫描带参数的二维码事件推送返回 qrscene_0
124 2024-01-25
最近在处理微信扫码关注公众号登录的需求时,遇到了扫描微信生成的带参数二维码后,事件推送中EventKey
一直是0
和qrscene_0
的问题。
首先确定的是在向微信申请二维码时,没有生成过 0 的参数,而且事件推送中的Ticket
是正确的。
下面是错误的事件推送数据包:
用户未关注时,进行关注后
<xml> <ToUserName>ToUserName> <FromUserName>FromUserName> <CreateTime>1648535359CreateTime> <MsgType>MsgType> <Event>Event> <EventKey>EventKey> <Ticket>Ticket> xml>
用户已关注时
<xml> <ToUserName>ToUserName> <FromUserName>FromUserName> <CreateTime>1648535169CreateTime> <MsgType>MsgType> <Event>Event> <EventKey>EventKey> <Ticket>Ticket> xml>
按理说在用户未关注时,进行关注后EventKey
的值为以qrscene_
为前缀,加上二维码的参数值,而用户已关注时,EventKey
的值为创建二维码时的二维码scene_id
。
于是将申请创建二维码ticket
接口的 POST 数据打印了一下,发现了端倪
微信文档中的格式是这样的:
{ "expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": { "scene": { "scene_id": 123 }
}
}
而我发起的类似于:
{ "expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": { "scene_id": 123 }
}
action_info
中缺少了scene
字段,加上后进行验证可以收到正确的EventKey
了。
<xml> <ToUserName>ToUserName> <FromUserName>FromUserName> <CreateTime>1648537854CreateTime> <MsgType>MsgType> <Event>Event> <EventKey>EventKey> <Ticket>Ticket> xml>
<xml> <ToUserName>ToUserName> <FromUserName>FromUserName> <CreateTime>1648535766CreateTime> <MsgType>MsgType> <Event>Event> <EventKey>EventKey> <Ticket>Ticket> xml>
另外还需要注意的是:用户未关注扫带参数的二维码和已关注扫描带参数的二维码,传过来的Event
和EventKey
是不一样:
Event
一个是subscribe
一个是SCAN
,而EventKey
一个带前缀qrscene_
一个不带,需要进行区分处理。
原文链接:
http://mp.weixin.qq.com/s?__biz=MzAwOTgzNjY4MA==&mid=2247484342&idx=2&sn=1792ab9fe43d994ad217038d5e861f20&chksm=9b58c251ac2f4b473f77dbbdcdd6bcf700a895a12bda958fa186e9d3010e858ba1c89fbf6efc#rd
鲁飞的其他文章
JavaScript 如何实现在搜索中忽略变音符号
变音符号是指添加在字母上面的符号,以更改字母的发音或者以区分拼写相似词语。
张嘴吃安利之 PhpStorm 中的 HTTP 客户端
安利一下 PhpStorm 中的 HTTP 客户端
MQTT 怎么在单独一个端口上分别使用 v3.x 和 v5.0 协议解析?
在 1883 端口上,同时处理 v3.1、v3.1.1 和 v5.0 这 3 种协议等级
为 Docsify 自动生成 RSS 订阅
为Docsify等静态站点自动生成RSS订阅
编译安装PHP8和Swoole4
PHP8 在 6 月 25 号发布了 alpha1 版本,JIT 是大家最为关心的一个功能
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线