Java实现微信扫码登入的实例代码

微信扫码登入

首先去通过微信开放平台做好开发者资质认证,创建网站应用然后等待审核

开发者资质认证

网站应用

审核通过的话就是这个样子 还有最底下的授权回调地址 (www.xxxxx.com) 填写域名即可

pom

<!-- WeChatQrCode -->
		<dependency>
			<groupId>com.github.binarywang</groupId>
			<artifactId>weixin-java-mp</artifactId>
			<version>3.4.0</version>
		</dependency>
		<dependency>
			<groupId>org.junit.jupiter</groupId>
			<artifactId>junit-jupiter-api</artifactId>
			<version>RELEASE</version>
			<scope>compile</scope>
		</dependency>

第一步 用户通过点击事件获取到微信二维码连接

 /**
   * 获取微信登陆二维码地址
   * @return
   */
  @RequestMapping(value = "/getQRCodeUrl",method = RequestMethod.POST)
  public Message getQRCodeUrl() {
    logger.info("获取二维码地址");
    try {
      String codeUrl = weChatService.getQRCodeUrl();
      logger.info("codeUrl:"+codeUrl);
      return new Message(ResponseEnum.SUCCESS,codeUrl);
    }catch (Exception e){
      logger.error(e.toString()+e);
      return new Message(ResponseEnum.FALL);
    }
  }
 @Override
  public String getQRCodeUrl() {
    // 生成 state 参数,用于防止 csrf
    String date = DateUtil.format(new Date(), "yyyyMMdd");
    String state = MD5Utils.generate(CSRF_KEY + date);
    return wxMpService.buildQrConnectUrl(wxRedirectUrl,"snsapi_login", state);
  }

https://open.weixin.qq.com/connect/qrconnect?appid=xxxx&redirect_uri=xxxxxx&response_type=code&scope=snsapi_login&state=e97555458779708b99b9d40cb49f54245c7500e536445d32#wechat_redirectappid 是你网站应用里面的 redirect_uri 你设置的授权回调地址 scope网站扫码登入为snsapi_login即可 state。微信开放平台文档文档写的很详细,看不懂看文档

用户扫码成功之后微信会回调你设置的回调地址 获取二维码连接

 /**
   * 回调地址
   * @param code
   * @param state
   * @return
   */
  @RequestMapping(value = "/wxCallBack",method = RequestMethod.POST)
  public Message wxCallBack(HttpServletRequest request, HttpServletResponse response,
      @RequestParam(name = "code",defaultValue = "") String code, @RequestParam(name = "state",defaultValue = "")String state) {
    if(StringUtils.isBlank(code)){
      return new Message(ResponseEnum.ESSENTIAL_IS_NULL);
    }
    if(StringUtils.isBlank(state)){
      return new Message(ResponseEnum.ESSENTIAL_IS_NULL);
    }
    logger.info("微信回调------------");
    logger.info(code+"------"+state);
    try {
      Message message=weChatService.wxCallBack(request,code, state);
      return message;
    }catch (Exception e){
      logger.error(e.toString()+"\n"+e);
      return new Message(ResponseEnum.FALL);
    }
  }
@Override
  public Message wxCallBack(HttpServletRequest request, String code, String state) {
    String openId = null;
    if (code != null) {
      // 获取 openid
      try {
        WxMpOAuth2AccessToken accessToken = wxMpService.oauth2getAccessToken(code);
        if (accessToken == null) {
          return new Message(ResponseEnum.DATA_IS_NULL);
        }
        openId = accessToken.getOpenId();
        log.info("openId:" + openId);
        /*token = accessToken.getAccessToken();*/
         WxMpUser wxUser = wxMpService.oauth2getUserInfo(accessToken, null);
         log.info(wxUser.toString());
      	   return new Message(ResponseEnum.WECHAT_NOT_BINGDING, wxUser);
      } catch (WxErrorException e) {
        log.error(e.getMessage(), e);
        return new Message(ResponseEnum.FALL);
      }
    }
    return new Message(ResponseEnum.FALL);
  }

前端请求

 $("#weiLog").click(function () {
    $.ajax({
      type: "POST",
      url: "/api/wx/getQRCodeUrl",
      dataType: 'json',
      success: function (result) {
        //console.log(result);
        if(result.code==0){
          this.itop = (window.screen.availHeight - 500) / 2;
          //获得窗口的水平位置
          this.ileft = (window.screen.availWidth - 400) / 2;
          this.w = window.open(
            result.data,
            "newwindow",
            "height=500, width=600, top=" +
            this.itop +
            ", left = " +
            this.ileft +
            ", toolbar=no, menubar=no,scrollbars=no, resizable=no,location=no, status=no"
          );
        }
      }
    });
  });

总结

到此这篇关于Java实现微信扫码登入的实例代码的文章就介绍到这了,更多相关java微信扫码登入内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 微信、支付宝二码合一扫码支付实现思路(java)

    一.支付二维码(预订单) 根据需要购买的信息创建预订单,将订单信息保存到Redis中,并设置有效期,注意生产二维码的链接后的参数可以关联到Redis中的key: QRCode  为servlet扫码请求的URL: UUIDUtils.getUUID()  为预订单单号,在servlet请求中截取,然后在Redis中查找对应的Key的数据: 二维码地址:http://kung900519.qicp.io/interface/QRCode/UUIDUtils.getUUID(): 二.创建二维码扫码

  • 详解JAVA后端实现统一扫码支付:微信篇

    最近做完了一个项目,正好没事做,产品经理就给我安排了一个任务. 做一个像收钱吧这样可以统一扫码收钱的功能. 一开始并不知道是怎么实现的,咨询了好几个朋友,才知道大概的业务流程:先是开一个网页用来判断支付平台,是微信还是支付宝,判断过后就好办了,直接照搬微信支付和支付宝的官方文档.不过微信的文档感觉有点坑,得多花点心思. 现在讲讲怎么实现微信支付网页支付,也就是公众号支付: 1.判断支付平台,在判断是微信平台时,必须使用window.location打开网页,使用其他方法在IOS版微信无法打开网页

  • 详解java实现简单扫码登录功能(模仿微信网页版扫码)

    java实现简单扫码登录功能 模仿微信pc网页版扫码登录 使用js代码生成qrcode二维码减轻服务器压力 js循环请求服务端,判断是否qrcode被扫 二维码超时失效功能 二维码被扫成功登录,服务端产生sessionId,传到页面使用js保存cookie 多线程 生成qrcode相关js jquery.qrcode.js 代码 页面div <div class="pc_qr_code"> <input type="hidden" id="

  • java实现网站微信扫码支付

    一.网站微信扫码支付开发并没有现成的java示例,总结一下自己微信扫码支付心得 二.首先去微信公众平台申请账户 https://mp.weixin.qq.com ** 三.账户开通.开发者认证之后就可以进行微信支付开发了 1.微信统一下单接口调用获取预支付id,以及生成二维码所需的codeUrl /** * 保存订单,并生成二维码所需的codeUrl * * @param request * @param response * @param notifyURLBuf * @param order

  • Java微信支付之公众号支付、扫码支付实例

    微信支付现在已经变得越来越流行了,随之也出现了很多以可以快速接入微信支付为噱头的产品,不过方便之余也使得我们做东西慢慢依赖第三方,丧失了独立思考的能力,这次打算分享下我之前开发过的微信支付. 一 .H5公众号支付 要点:正确获取openId以及统一下单接口,正确处理支付结果通知,正确配置支付授权目录 H5的支付方式是使用较为广泛的方式,这种支付方式主要用于微信内自定义菜单的网页,依赖手机上安装的微信客户端,高版本的微信才支持微信支付,下面按我的流程注意说明 1  编写用于支付的页面,由于是测试用

  • Java SpringMVC实现PC端网页微信扫码支付(完整版)

    一:前期微信支付扫盲知识 前提条件是已经有申请了微信支付功能的公众号,然后我们需要得到公众号APPID和微信商户号,这个分别在微信公众号和微信支付商家平台上面可以发现.其实在你申请成功支付功能之后,微信会通过邮件把Mail转给你的,有了这些信息之后,我们就可以去微信支付服务支持页面:https://pay.weixin.qq.com/service_provider/index.shtml 打开这个页面,点击右上方的链接[开发文档]会进入到API文档说明页面,看起来如下 选择红色圆圈的扫码支付就

  • Java实现微信扫码登入的实例代码

    微信扫码登入 首先去通过微信开放平台做好开发者资质认证,创建网站应用然后等待审核 开发者资质认证 网站应用 审核通过的话就是这个样子 还有最底下的授权回调地址 (www.xxxxx.com) 填写域名即可 pom <!-- WeChatQrCode --> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-mp</artifactId&

  • java实现微信扫码支付功能

    本文实例为大家分享了java实现微信扫码支付的具体代码,供大家参考,具体内容如下 1.maven项目的pom.xml中添加如下jar包: <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</version> </dependency> 2.编写WeWxConfig类

  • java实现微信扫码登录第三方网站功能(原理和代码)

    目录 一.查看微信扫码登录官方文档 二.实现微信第三方登录流程: 三.代码实现: 为避免繁琐的注册登陆,很多平台和网站都会实现三方登陆的功能,增强用户的粘性.这篇文章主要介绍了java实现微信扫码登录第三方网站功能(原理和代码),避免做微信登录开发的朋友们少走弯路. 一.查看微信扫码登录官方文档 官方文档:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&

  • 企业微信扫码登录网页功能实现代码

    企业微信扫码登录网页功能,代码如下所示: //jq写法完善版 <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>信息平台</title> <script src="http://res

  • PC 端微信扫码注册和登录实例

    PC 端微信扫码注册和登录 一.前言 先声明一下,本文所注重点为实现思路,代码及数据库设计主要为了展现思路,如果对代码效率有着苛刻要求的项目切勿照搬. 相信做过微信开发的人授权这块都没少做过,但是一般来说我们更多的是为移动端的网站做授权,确切来说是在微信端下做的一个授权.今天遇到的一个问题是,项目支持微信端以及 PC 端,并且开放注册.要求做到无论在 PC 端注册或者是在微信端注册之后都可以在另外一个端进行登录.也就是说无论 PC 或是微信必须做到"你就是你"(通过某种方式关联). 二

  • iOS 二维码生成及扫码详解及实例代码

    iOS二维码生成及扫码 现在越来越多的应用加入二维码相关的业务,在iOS开发市场上很多开发人员都在使用第三方的扫码与生成二维码的控件,个人认为此类的第三方控件识别度不高.最近正好整理新框架的事情,研究了一下.具体代码如下 生成二维码代码 /** * @author 半 饱, 15-12-18 * * @brief 生成二维码图片 * * @param code 生成二维码图片内容 * @param width 二维码图片宽度 * @param height 二维码图片高度 * * @return

  • 基于 Swoole 的微信扫码登录功能实现代码

    随着微信的普及,扫码登录方式越来越被现在的应用所使用.它因为不用去记住密码,只要有微信号即可方便快捷登录.微信的开放平台原生就有支持扫码登录的功能,不过大部分人还是在用公众平台,所以扫码登录只能自行实现.这里基于微信公众平台的带参数临时二维码,并且结合 Swoole 的 WebSocket 服务实现扫码登录.大体流程如下: 客户端打开登录界面,连接到 WebSocket 服务 WebScoket 服务生成带参数二维码返回给客户端 用户扫描展示的带参数二维码 微信服务器回调扫码事件并通知开发者服务

  • JAVA微信扫码支付模式二线上支付功能实现以及回调

     一.准备工作 首先吐槽一下微信关于支付这块,本身支持的支付模式就好几种,但是官方文档特别零散,连像样的Java相关的demo也没几个.本人之前没有搞过微信支付,一开始真是被它搞晕,折腾两天终于调通了,特此写下来,以享后人吧! 关于准备工作,就"微信扫码支付模式二"官方文档地址在这 https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1 可以先看看,实际上需要准备的东西有以下几个: 其中APP_ID和APP_SECRE

随机推荐