1--依赖

<!-- 微信扫码依赖 -->
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5</version>
</dependency>
<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>4.1.0</version>
</dependency>
<dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-common</artifactId><version>4.1.0</version>
</dependency>

2--使用方法

//获取二维码图片(微信二维码似乎只能携带一个参数)
private ResultJson getQrCode() {// 获取token开发者String getQrCodeUrl = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + WeChatUtils.getAccessToken();// 生成前端唯一标识UUIDString UUID = ResultUtil.getUUID();String json = "{\"expire_seconds\": 604800, \"action_name\": \"QR_STR_SCENE\"" + ", \"action_info\": {\"scene\": {\"scene_str\": \"" + UUID + "\"}}}";String result = WeChatUtils.doPostJson(getQrCodeUrl, json);//返回给前端try {JSONObject jsonObject = JSONObject.parseObject(result);jsonObject.put("UUID", UUID);return ResultJson.ok(jsonObject);} catch (Exception e) {e.printStackTrace();return ResultJson.error(e.getMessage());}
}
/*** @Description: 微信回调(微信官方调用)*/
@RequestMapping("/checkSign")
public String checkSign(HttpServletRequest request) throws Exception {//获取微信请求参数String signature = request.getParameter("signature");String timestamp = request.getParameter("timestamp");String nonce = request.getParameter("nonce");String echostr = request.getParameter("echostr");//参数排序。 token 就要换成自己实际写的 tokenString[] params = new String[]{timestamp, nonce, "123456"};Arrays.sort(params);//拼接String paramstr = params[0] + params[1] + params[2];//加密//获取 shal 算法封装类MessageDigest Sha1Dtgest = MessageDigest.getInstance("SHA-1");//进行加密byte[] digestResult = Sha1Dtgest.digest(paramstr.getBytes("UTF-8"));//拿到加密结果String mysignature = StringUtil.bytes2HexString(digestResult);mysignature = mysignature.toLowerCase(Locale.ROOT);//是否正确boolean signsuccess = mysignature.equals(signature);//逻辑处理if (signsuccess && echostr != null) {//peizhi  tokenreturn echostr;//不正确就直接返回失败提示.} else {//重点JSONObject jsonObject = loginService.callback(request);return jsonObject.toJSONString();}
}
//上面的方法调用这个方法
public JSONObject callback(HttpServletRequest request) throws IOException {//request中有相应的信息,进行解析WxMpXmlMessage message = WxMpXmlMessage.fromXml(request.getInputStream());//获取消息流,并解析xml//消息类型String messageType = message.getMsgType();//消息事件String messageEvent = message.getEvent();//openidString openId = message.getFromUser();//UUIDString UUID = message.getEventKey();JSONObject jsonObject = new JSONObject();jsonObject.put("code", "200");//if判断,判断查询if (messageType.equals("event")) {jsonObject = null;//扫描二维码if (messageEvent.equals("SCAN")) {}//关注if (messageEvent.equals("subscribe")) {}//没有该用户if (jsonObject == null) {//从微信上中拉取用户信息String url = "https://api.weixin.qq.com/cgi-bin/user/info?access_token=" + getAccessToken() +"&openid=" + fromUser +"&lang=zh_CN";String result = doGet(url);jsonObject = JSONObject.parseObject(result);}return jsonObject;
}

3--工具类

public class WeChatUtils {private static final String APP_ID = "";private static final String APP_SECRET = "";/*** 获取图片*/public static String getAccessToken() {String accessToken;String getTokenUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + APP_ID + "&secret=" + APP_SECRET;String result = doGet(getTokenUrl);JSONObject jsonObject = JSONObject.parseObject(result);accessToken = jsonObject.getString("access_token");return accessToken;}public static String doGet(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpclient = HttpClients.createDefault();String resultString = "";CloseableHttpResponse response = null;try {// 创建uriURIBuilder builder = new URIBuilder(url);if (param != null) {for (String key : param.keySet()) {builder.addParameter(key, param.get(key));}}URI uri = builder.build();// 创建http GET请求HttpGet httpGet = new HttpGet(uri);// 执行请求response = httpclient.execute(httpGet);// 判断返回状态是否为200if (response.getStatusLine().getStatusCode() == 200) {resultString = EntityUtils.toString(response.getEntity(), "UTF-8");}} catch (Exception e) {e.printStackTrace();} finally {try {if (response != null) {response.close();}httpclient.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doGet(String url) {return doGet(url, null);}public static String doPost(String url, Map<String, String> param) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建参数列表if (param != null) {List<NameValuePair> paramList = new ArrayList<>();for (String key : param.keySet()) {paramList.add(new BasicNameValuePair(key, param.get(key)));}// 模拟表单UrlEncodedFormEntity entity = new UrlEncodedFormEntity(paramList, "utf-8");httpPost.setEntity(entity);}// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}public static String doPost(String url) {return doPost(url, null);}public static String doPostJson(String url, String json) {// 创建Httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;String resultString = "";try {// 创建Http Post请求HttpPost httpPost = new HttpPost(url);// 创建请求内容StringEntity entity = new StringEntity(json, ContentType.APPLICATION_JSON);httpPost.setEntity(entity);// 执行http请求response = httpClient.execute(httpPost);resultString = EntityUtils.toString(response.getEntity(), "utf-8");} catch (Exception e) {e.printStackTrace();} finally {try {response.close();} catch (IOException e) {e.printStackTrace();}}return resultString;}
}

微信二维码使用及配置相关推荐

  1. 小程序获取企业微信二维码,使用联系我插件配置企业微信二维码

    通过配置获取企业微信二维码总共分为五步: 第一步:登录企业微信管理后台,查询企业微信的企业ID(corpid)和Secret(corpsecret); 第二步:获取access_token: 第三步: ...

  2. 魔坊APP项目-15-邀请好友(业务逻辑流程图、服务端提供邀请好友的二维码生成接口、客户端通过第三方识别微信二维码,服务端提供接口允许访问、App配置私有协议,允许第三方应用通过私有协议,唤醒APP)

    邀请好友 1.业务逻辑流程图 客户端提供点击"邀请好友"以后的页面frame,html/invite.html,代码: <!DOCTYPE html> <html ...

  3. 微信二维码支付快速入门

    目录 一.二维码生成插件qrious 二.HttpClient 三.微信扫码支付 1.申请步骤 2.开发文档 四.入门Demo 1.工程搭建 2.myStudy-pay-interface 3.myS ...

  4. 开放平台–扫描微信二维码登录

    准备 如不了解第三方登录流程,建议先大概了解一下,在来看看代码. 说明: 由于开放平台无测试号测试,所以只能上开放平台进行配置信息.公众平台的测试号并不能给开放平台使用. 微信开放平台地址:https ...

  5. 微信分享朋友圈链接怎么显示图片-企业微信二维码转成名片

    一.背景 在移动端业务开发的中,很多时候会进行h5页面的分享操作,但是原生的微信分享效果并不能满足我们业务的需求,如下图: 企业微信二维码转成名片 我们可以看的原生的分享描述是一个页面链接,分享图标也 ...

  6. java微信二维码登录

    1.注册 微信开放平台:https://open.weixin.qq.com 2.邮箱激活 3.完善开发者资料 4.开发者资质认证 准备营业执照,1-2个工作日审批.300元 5.创建网站应用 提交审 ...

  7. Opencv4.5.1 微信二维码识别功能 QRCode 编译与使用 C++

    日常生活中手机摄像头最常用的功能可能就是扫码了,而且大部分使用微信扫码,微信扫码的功能的确很强大,精度高.速度快.微信扫码近来加入了opencv开源项目了.现特地进行了尝试,并记录了整个过程,以上动图 ...

  8. 微信二维码活码制作管理系统源码+独立版网站

    正文: 活码管理系统 PHP在线制作微信二维码活码管理平台引流源码 独立版网站系统 只需要修改MySql.php的数据库配置和后台账号密码即可,后台账号默认是admin,密码admin123456 , ...

  9. 微信二维码的生成(java后端)--邀请新人

    目录 写在前言 1.微信官方文档 2.具体分析 写在前言 最近因为在学习微信小程序邀请新用户的功能,所以需要后端生成二维码并且携带本人的用户id或者其他的信息,传给前端.用户通过这个二维码去进行登录或 ...

最新文章

  1. opentracing
  2. 用spring security设置用户jwt令牌和设置接口访问权限案例
  3. edxp显示未安装_如何在 Centos 8 / RHEL 8 上安装和配置 VNC 服务器
  4. CUDA out of memory. Tried to allocate 14763.13 GiB (GPU 3; 10.73 GiB total capacity; 165.28 MiB alre
  5. linux的基础知识——IP,UDP和TCP
  6. javascript 显示一定范围内的素数(质数)
  7. phpstorm编辑器乱码问题解决
  8. 4 读写文件_WEB安全之SQL注入(4)——读写文件
  9. PyCharm2018 汉化激活
  10. DF1协议的CSP寻址
  11. Brooklyn 最新版 |创意多用途响应式 WordPress 主题下载
  12. Redis客户端与服务端
  13. 工作感想-软件测试工程师
  14. 查找对方IP地址技巧五招
  15. MQTT客户端paho.mqtt.XXX
  16. linux dnf命令安装
  17. 实战案例|拒绝信息泄露,腾讯云助力电商对抗网络爬虫
  18. GrabCut图像分割
  19. 【Android取证篇】华为外部存储支持备份的数据类型-支持第三方应用
  20. 2022 年工业工程、人工智能、计算机和应用科学前沿国际会议RTIACA2022征稿通知

热门文章

  1. 读书笔记-深度学习入门之pytorch-第四章(含卷积神经网络实现手写数字识别)(详解)
  2. python + 余 +=加号与 加等的区别
  3. Foxmail管理多个电子邮箱
  4. Xposed框架初次见面-开发自己的Xposed插件
  5. 浪涌、群脉冲、ESD等级标准
  6. 手把手教大家在mac上用VMWare虚拟机装Ubuntu
  7. 充电系统(交流慢充,直流快充)
  8. 马桶下的压水花技术!!(爆笑)
  9. 【转自JULY大佬】程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦
  10. 想要吸引女性粉丝?三种短视频类型可尝试,点赞关注少不了