1 支持的二维码是不是只能通过为新生成:http://mp.weixin.qq.com/wiki/index.php?title=%E7%94%9F%E6%88%90%E5%B8%A6%E5%8F%82%E6%95%B0%E7%9A%84%E4%BA%8C%E7%BB%B4%E7%A0%81
2 即使用了微信的二维码,发现推送的事件不够完整,比如菜单:
"button": [
{
"name": "扫码",
sub_button: [
{
"type": "scancode_push",
"name": "登录",
"key": "checkin"
}.
{
"type": "scancode_push",
"name": "登出",
"key": "checkout"
}
]
}
结果接收到的消息:
{"ToUserName":"xx","FromUserName":"xx","CreateTime":"1416224960","MsgType":"event","Event":"SCAN","EventKey":"123","Ticket":"xx=="}
123是二维码的scene_id,但是我需要的key:checkin或者checkout并没有接收到,这样就没法确认到底是什么类型的操作。
怎么破?
更新,经过查找,打印日志的方式发现服务端的确收到了两次事件推送:分别是
{ event: 'SCAN', event_key: '123', created: '1416307544' }
{ event: 'scancode_push', event_key: 'sc_in', created: '1416307544' }
但问题是我都是原样返回的,但是微信端死活收不到第二条信息。
这根本是不同的事件嘛~你扫码肯定微信推给你的是扫码消息,你又没点菜单。
ps:不知道求助邮件是提问者发的,还是发的,我刚好在看这问题,然后就收到了的邮件,我还在想不会把这题发给我了吧,打开一看果真。
第一个问题我也不是很清楚,因为没试验过。
来第二个问题:
你测试时扫描的应该是当前公众号的关注二维码;
从你点击菜单到你收到问题中收到的数据,你应该总共收到两次事件推送;
- 第一次是你点击「登录」或「登出」菜单时的一次事件推送;
- 第二次是你扫描二维码成功后的事件推送;
这样问题应该就解决了,你在问题中列出的接收到的消息应该是第二次的推送信息,根据你的提问,其实你是想要第一次的推送消息。
ps:好吗,原来上次提问公众号也是你。
接着 @korvin 回答, 你可以把你需要的 key值 拼接到 scene_id
里面 譬如你 需要获取到的key值为 checkin 那么你 通过微信的接口生成的二维码的 scene_id 可以为 123_checkin;
扫码结束后
list($key,$checkin) = explode('_',$scene_id );