获取公众号的二维码的ticket

我是用的永久的二维码获取方式
这里的scene_id不能重复,生成的二维码才不一样

public String getGZHCodeByPubKey(String sceneId) throws IOException {HttpUtil httpUtil = new HttpUtil();String url = Mark.wx_create_qrcode+"?access_token="+getAccessToken();String  json = "{\"expire_seconds\": 604800, \"action_name\": \"QR_LIMIT_SCENE\", \"action_info\": {\"scene\": {\"scene_id\":"+sceneId+"}}}";;String result = httpUtil.HttpPostWithJson(url,json);Map<String, Object> map = JSONObject.parseObject(result, Map.class);if (!map.containsKey("ticket")) {throw new ServiceException("错误信息:" + map.get("errmsg"));}String ticket = (String)map.get("ticket");return ticket;}

其中需要用到的方法

 //post请求参数为json格式public static String HttpPostWithJson(String url, String json) {String returnValue = "这是默认返回值,接口调用失败";CloseableHttpClient httpClient = HttpClients.createDefault();ResponseHandler<String> responseHandler = new BasicResponseHandler();try{//第一步:创建HttpClient对象httpClient = HttpClients.createDefault();//第二步:创建httpPost对象HttpPost httpPost = new HttpPost(url);//第三步:给httpPost设置JSON格式的参数StringEntity requestEntity = new StringEntity(json,"utf-8");requestEntity.setContentEncoding("UTF-8");httpPost.setHeader("Content-type", "application/json");httpPost.setEntity(requestEntity);//第四步:发送HttpPost请求,获取返回值returnValue = httpClient.execute(httpPost,responseHandler); //调接口获取返回值时,必须用此方法}catch(Exception e){e.printStackTrace();}finally {try {httpClient.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//第五步:处理返回值return returnValue;}

查看二维码的方式

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

扫描二维码 公众号后台做出相应

1-用户已经关注过啦

收到消息:<xml>
<ToUserName><![CDATA[gh_27f2ae7ec088]]></ToUserName>
<FromUserName><![CDATA[o5iZywqCPFDTkEipRd5YfwFLkZos]]></FromUserName>
<CreateTime>1593308242</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[SCAN]]></Event>
<EventKey><![CDATA[0]]></EventKey>
<Ticket><![CDATA[gQEq8TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyb2FVNWNVQ0NkTzIxMDAwMHcwM04AAgT5JuxeAwQAAAAA]]></Ticket>
</xml>

我这里是推送的小程序的链接

         /*** 用户扫描着二维码进来了*/else if(Event.equals("SCAN") ){logger.info("---用户扫描的密钥的二维码进来了");Ticket = XMLUtil.readNode(root, "Ticket");logger.info("SCENE_VALUE====" +Ticket);TextMessage text = new TextMessage();text.setToUserName(FromUserName);text.setFromUserName(ToUserName);text.setCreateTime(new Date().getTime());String url = ticketToUrl(Ticket);logger.info(url);text.setMsgType("text");text.setContent(url);respMessage = MessageUtil1.textMessageToXml(text);logger.info("============respMessage======"+respMessage);}// 响应消息logger.info("响应消息");out.print(respMessage);out.close();out = null;return respMessage;
用到的方法:
public static String ticketToUrl(String ticket){/*** 根据ticket获取表格信息*/Form form = formService.getByTicket(ticket);String url = "二维码已经失效";if(form != null){String lujing = "pages/tableList/index?tableId="+form.getId();url = "<a data-miniprogram-appid='" + xcxAppId +"' data-miniprogram-path=" +"'"+lujing+"' href=''>点击打开</a>";if(StringUtils.isNotEmpty(form.getSchoolName())){url += form.getSchoolName();}}logger.info(url);return url;}

2-用户刚刚关注啦

微信发送的xml如下:

收到消息:
<xml>
<ToUserName><![CDATA[gh_27f2ae11111]]></ToUserName>
<FromUserName><![CDATA[o5iZywqCPFDTk111111wFLkZos]]></FromUserName>
<CreateTime>1592545699</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[qrscene_53]]></EventKey>
<Ticket><![CDATA[gQEq8TwAAAAAAAAAA1111118vd2VpeGluLnFxLmNvbS9xLzAyb2FVNWNVQ0NkTzIxMDAwMHcwM04AAgT5JuxeAwQAAAAA]]></Ticket>
</xml>

这里的qrscene_53中的53是前面的scen_id
后台拦截给出反应:

EventKey = XMLUtil.readNode(root, "EventKey");if(StringUtils.isNotEmpty(EventKey) && EventKey.indexOf("qrscene_")!=-1){String scenId = EventKey.substring(8);Cipher cipher = cipherService.selectById(scenId);Ticket = cipher.getColumn1();if(StringUtils.isEmpty(Ticket)){Ticket = XMLUtil.readNode(root, "Ticket");}}/*** 用户关注了微信号啦*/if(Event.equals(Constant.EVENT_TYPE_SUBSCRIBE)){System.out.println("用户关注了微信号啦");if(StringUtils.isNotEmpty(Ticket)){System.out.println("---用户扫描的密钥的二维码进来  关注啦");logger.info("Ticket====" +Ticket);TextMessage text = new TextMessage();text.setToUserName(FromUserName);text.setFromUserName(ToUserName);text.setCreateTime(new Date().getTime());String url = ticketToUrl(Ticket);logger.info(url);text.setMsgType("text");text.setContent(url);respMessage = MessageUtil1.textMessageToXml(text);logger.info("============respMessage======"+respMessage);}

带参数的公众号二维码 生成+后台拦截java相关推荐

  1. 实现微信公众号二维码生成

    效果: 路径: https://open.weixin.qq.com/qr/code?username=需要生成二维码的公众号&style=1 style=1为二维码样式,可选择其他 转载于: ...

  2. 关注微信公众号二维码可以带参数吗?

    2019独角兽企业重金招聘Python工程师标准>>> 需求是这样的,用户可以分享自己的微信二维码,别人扫码进入,能监测到.功能怎么实现呢? 通过微号帮平台可以实现,微信公众平台接口 ...

  3. 怎么获取公众号二维码?

    如果是公众号的管理员,当然可以从微信公众平台直接下载二维码,但这里我要说的场景是:不是公众号的管理员,怎么获取公众号的二维码(且获取到的二维码都是静态的,不带参数的). 使用场景 首先解释一下为什么要 ...

  4. 微信公众号二维码海报自动生成,海报通推广有绝招

    公众号二维码海报自动生成,使用公众号开发接口生成带参数的二维码和获取用户基本信息(UnionID机制)实现海报通的效果,在自己的服务器上部署就可以,也可以直接使用微号帮平台生成海报二维码. 1.生成海 ...

  5. 生成微信公众号二维码(用户扫码关注公众号)

    1.token 文件 /*** https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=1 ...

  6. 如何获得微信公众号二维码

    公众号生成二维码带参数,只有服务号才有的权限,订阅号无法生成二维码,通过公众号开发接口实现获得公众号二维码.微号帮平台现有功能渠道二维码生成可以满足需求. 1.渠道二维码生成 微号帮平台功能渠道二维码 ...

  7. thinkphp5+php微信公众号二维码扫码关注推广二维码事件实现

    thinkphp5微信公众号二维码扫码关注推广二维码事件实现, 给出实现的全部方法: 获取二维码,让微信公众号跳转到以下代码的code方法即可,用户点击二维码后,通过二维码获取关注用户信息及二维码推广 ...

  8. 自定义生成公众号二维码,用于小票打印机使用

    近期因项目需求,需要将微信公众号二维码打印在小票上,小票打印机不支持直接打印图片,现在找到一个利用链接来生成自己的微信公众号二维码,链接如下: https://mp.weixin.qq.com/mp/ ...

  9. csdn添加自定义栏目,公众号二维码等

    准备好要添加的公众号二维码,如博主左边的栏目的二维码 通过写博客里的图片上传将公众号二维码上传到csdn,将图片地址复制下来(只需域名和路径名即可,不要?后面的各种参数) 在博客管理 -> 栏目 ...

最新文章

  1. 强烈推荐8款高质量的网站,可以解决很多问题
  2. 蓝桥杯java第七届决赛第三题--打靶
  3. Spring源码版本命名规则及下载安装(下)笔记
  4. Linux高性能网络:协程系列08-协程实现之调度器
  5. 对于python 作用域新的理解
  6. 新分类!全总结!最新Awesome-SLU-Survey资源库开源!
  7. 【错误记录】 ERROR java.lang.NoClassDefFoundError
  8. 兼顾pc和移动端的textarea字数监控的实现方法
  9. 地图旋转_人类一败涂地手游:地图冰进阶攻略,团队配合与齐心协力缺一不可...
  10. 天涯明月刀开发_天涯明月刀手游公测上线,斗鱼暗地操作,打造第二个PDD
  11. php网页背景音乐代码,HTML5背景音乐播放器代码
  12. 32单片机——pwm波输出
  13. 电大计算机本科离散数学考试题,2017年电大本科离散数学期末考试复习试题及答案.doc...
  14. 计算机组装模拟系统吗,怎么在线模拟组装电脑
  15. Py交易的基本遵循原则.
  16. Win10强制更新怎么关闭 彻底禁止Windows自动更新方
  17. vue实现下拉二级联动_Vue实现三级联动/多级联动/城市选择
  18. 在家月入5q+有手机就能赚米,推荐14个让你在家就能挣米的软件
  19. jMonkeyEngine译文 FlagRush5(2)——跟随的摄像机(ChaseCamera)
  20. (转载)持续集成(第二版)[来自:Martin Fowler]

热门文章

  1. TS中ts和.d.ts文件的区别
  2. 1.3寸OLED SH1106 IIC驱动显示错误解决方法
  3. 【欢迎来怼】事后诸葛亮会议
  4. SQL Server数据库技术期末大作业 机票预定信息系统
  5. TCPIP------慢启动与拥塞避免
  6. 天津工业大学c语言题库,天津工业大学计算机专业C语言经典笔记
  7. linux 清除bios 密码吗,如何设置/清除 BIOS 硬盘密码
  8. 安卓camera2 API获取YUV420_888格式详解
  9. 从Dijkstra谈帅才的洞察力(王选)
  10. 微信公众号关注回复,关键字回复全流程开发