微信公众号之扫描带参数的二维码事件 文末附获取用户信息以及校验URL真实性代码

本文旨在记录如何扫码带参数的二维码事件 本文为作者原创 转载请注明出处 尊重一下笔者的劳动成果 十分感谢

什么是带参数的二维码事件?

当我们需要扫描二维码进入公众号并且期望可以做一些自定义的业务处理,比如说某人通过谁的邀请关注了公众号,需要对这个人和关注人做业务处理的时候就可以使用带参数的二维码事件

带参数的二维码扫描后在用户未关注和关注后都会给我们的开发服务器推送消息,很方便我们做相关场景的业务处理

用户扫描带场景值二维码时,可能推送以下两种事件:

  1. 如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
  2. 如果用户已经关注公众号,则微信会将带场景值扫描事件推送给开发者。

扫描带参数二维码事件流程

1. 创建带参数的二维码(注意:调用微信接口创建二维码)

2. 换取二维码

3. 扫描二维码 接受事件推送

详细扫描二维码事件推送可查看官方文档扫描带参数二维码事件

正文

第一步 调用微信接口 创建生成带参数的二维码 

二维码有两种 临时和永久 临时最长可保存30天 永久最多上限10万个 可根据开发者自己的业务处理 代码如下:

/**
     * 生成临时/永久二维码
     * @param tel 代理标识 此处传值手机号
     * @param isLimitScene 是否是永久二维码 true 永久二维码 false 临时二维码
     * @param time 临时二维码时长 默认604800 单位秒 2592000 =30天
     * @return 更换二维码的ticket
     */
    @RequestMapping("wex/create_qrcode")
    @ResponseBody
    public Object createQrcode(String tel,@RequestParam(defaultValue = "true")Boolean isLimitScene,@RequestParam(defaultValue = "604800") int time){
        try {
            String access_token = wx.get_access_token();
            String url ="https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN";
            url=url.replace("TOKEN", access_token);
            JSONObject param = new JSONObject();
            if(isLimitScene){//永久二维码
                //二维码类型,QR_SCENE为临时的整型参数值,QR_STR_SCENE为临时的字符串参数值,QR_LIMIT_SCENE为永久的整型参数值,QR_LIMIT_STR_SCENE为永久的字符串参数值
                param.put("action_name","QR_LIMIT_STR_SCENE");
            }else{
                param.put("action_name","QR_STR_SCENE");
                param.put("expire_seconds",time);//二维码生成后的30天(即2592000秒)后过期604800
            }
            param.put("action_info",new JSONObject().put("scene",new JSONObject().put("scene_str",tel)));//二维码的详细信息
            log.info("url:"+url);
            log.info("send data:"+param);
            String jsonstr = HttpUtil.postJsonForString(url,param);
            log.info("jsonstr:"+jsonstr);
            JSONObject jsonobj = new JSONObject(jsonstr);
            log.info("jsonobj:"+jsonobj);
//            String url2 = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET";
//            url2=url2.replace("TICKET", jsonobj.get("ticket").toString());
//            String img = HttpUtil.getStringFromUrl(url2);
//            return jsonobj.get("ticket").toString();
            return jsonobj.toString();
        }catch (Exception e){
            e.printStackTrace();
            log.warn("error:"+e.getMessage());
        }
        return "";
    }

生成带参数的二维码官方文档生成带参数的二维码

第二步 通过tick

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值