微信公众平台开发(16)--公众号二维码管理

1. 概念

公众号二维码和普通二维码是不同的,普通二维码扫码后要么显示一个字符串内容,要么跳转到一个网页(当二维码的内容是一个网址时,微信扫码会跳转对应网页)。


公众号二维码使用微信扫码后,会跳转到生成该二维码的公众号(服务号),而且会立即触发扫码事件。这样对于我们使用程序定义扫码后的动作行为,提供一个很好的切入点。


也就是说,公众号二维码扫码,第一可以跳入对应公众号,第二我们可以从后台得知扫码的具体信息并针对处理。


2. 代码

调用接口可以生成一个二维码图片文件:


/**

* 二维码管理

*/

@Api(tags = "二维码管理API")

@RestController

public class TicketController {

@Autowired

private WxMpService wxMpService;


/**

 * 生成二维码文件,扫码后会自动跳转到公众号进行处理,并触发公众号事件

 */

@PostMapping("/ticketTest")

public File ticketTest() throws WxErrorException {

 WxMpQrCodeTicket ticket = wxMpService.getQrcodeService().qrCodeCreateLastTicket("12345678");

 // 获得在系统临时目录下的文件,需要自己保存使用,注意:临时文件夹下存放的文件不可靠,不要直接使用

 File file = wxMpService.getQrcodeService().qrCodePicture(ticket);

 return file;

}


}


3. 测试

调用ticketTest,返回结果如下(涉及隐私,使用###代替部分文件名):


"C:\\Users\\chen\\AppData\\Local\\Temp\\weixin-java-tools-temp4741306921049342803\\8b03f715-7c1d-40bd-8365-cb0530b2172c598882578242########.jpg"

1

我们使用浏览器打开该图片是一个二维码,扫码会跳到公众号。


且我们已经定义了消息处理器,消息处理器打印接收到的消息如下:


{"allFieldsMap":{"Ticket":"gQEc8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAybE9PTU5yd29lR0YxMDAwME0wNzUAAgTGvl9hAwQAAAAA","CreateTime":"1633664862","EventKey":"12345678","Event":"SCAN","ToUserName":"gh_025da3703370","FromUserName":"oINiq6UqTiKqfXN3H6RmeKvvRnmw","MsgType":"event"},"toUser":"gh_025da3703370","fromUser":"oINiq6UqTiKqfXN3H6RmeKvvRnmw","createTime":1633664862,"msgType":"event","event":"SCAN","eventKey":"12345678","ticket":"gQEc8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAybE9PTU5yd29lR0YxMDAwME0wNzUAAgTGvl9hAwQAAAAA","scanCodeInfo":{},"sendPicsInfo":{"picList":[]},"sendLocationInfo":{},"hardWare":{}}


1

2

可以发现,事件为SCAN表示扫码,发送的openid等信息也能拿到了。


4. 小结

公众号二维码是跟公众号紧密结合在一起的,所以它的功能可以全面依托公众号展开。

上一篇:android 34 ListView进阶


下一篇:union all查询统计总数量