微信公众号开发(十)——扫描带参数二维码事件

我们通过微信扫码二维码已经是十分频繁的操作了,为了满足用户渠道推广分析和用户帐号绑定等场景的需要,微信公众平台提供了创建带参数二维码的接口,通过产生的ticket,去获取二维码图片。当用户扫描这个二维码时,公众平台就会向你设置的接口推送扫描消息。

二维码分为临时二维码和永久二维码,介绍可以参考官方文档。https://developers.weixin.qq.com/doc/offiaccount/Account_Management/Generating_a_Parametric_QR_Code.html 

为了区分推广渠道,二维码申请时提供了两种形式的自定义信息,一种是数据形式(设置scene_id值),另一种是字符串格式(设置scene_str值),有点类似android分发时的渠道码。

这里就以临时二维码为例来说明,提交格式如下:

数字形式

{
	"expire_seconds": 604800,
	"action_name": "QR_SCENE",
	"action_info": {
		"scene": {
			"scene_id": 123
		}
	}
}

字符串形式

{
	"expire_seconds": 604800,
	"action_name": "QR_STR_SCENE",
	"action_info": {
		"scene": {
			"scene_str": "bdmh"
		}
	}
}

 然后通过平台提供的测试接口,可以生成二维码的ticket,当然有兴趣的可以自己写接口处理。当然记得提供access_token。

 拿到ticket后,按照开发文档中提到的地址去申请二维码图片。带上ticket参数值。

https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQHG8DwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyMkt2R1FHLWxlX2sxZlEzMTF1Y18AAgR0ifhdAwSAOgkA

访问之后,会有一个图片二维码下载到你本地。如下就是按照上面信息生成的临时二维码( "scene_str": "bdmh")。

然后我们用微信扫码,看看后台接收到的信息是什么样子。

对于已关注和未关注,是有所区别的。如果是已关注扫码,会直接推送到你的接口,Event=SCAN,对于未关注者扫码,扫码后不会触发接口,当你点击“关注公众号”后,会连同场景信息一起提交到你的接口,具体看下面信息。

WXMessgeBean修改。

package com.myweb.demo.bean;

import javax.xml.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;

@XmlRootElement(name="xml")
@XmlAccessorType(XmlAccessType.FIELD)

public class WXMessgeBean {
    private String FromUserName;
    private String ToUserName;
    private long CreateTime;
    private String MsgType;
    private String Event;
    private String EventKey;
    private String Ticket;
}

//省略了stter和getter

 接收到的信息如图,看到设置的场景字符串scene_str通过节点EventKey传回来了,包括扫码者的微信号(ToUserName),这样你就可以根据不同的场景做一些数据的分析了。

已关注的数据返回。

未关注扫码后关注的数据返回。注意Event和EventKey和已关注是有区别的。

发布了130 篇原创文章 · 获赞 42 · 访问量 79万+

猜你喜欢

转载自blog.csdn.net/bdmh/article/details/103582189