Spring Boot微信开发(基于SDK-WxJava),实现了简单的消息处理、生成二维码及扫码事件处理

本 Demo 基于 Spring Boot 构建,实现微信公众号后端开发功能。

本项目修改自 WxJava 的 Demo 演示程序 weixin-java-mp-demo-springboot,更多官方 Demo 请查阅此处

WxJava 是业界一款广受好评的 Java 微信开发 SDK,本 Demo 旨在创建一个快速可运行的微信公众号服务,降低入门门槛,让初学者们快速体会到使用 WxJava 的方便之处。

如有问题请【在此提问】

使用步骤:

  1. 请注意,本 demo 为简化代码编译时加入了 lombok 支持,如果不了解 lombok 的话,请先学习下相关知识,比如可以阅读此文章
  2. 另外,新手遇到问题,请务必先阅读【开发文档首页】的常见问题部分,可以少走很多弯路,节省不少时间。
  3. 配置: /src/main/resources/application.yml
wx:
  mp:
    configs:
      - appId: 1111 (一个公众号的appid)
        secret: 1111(公众号的appsecret)
        token: 111 (接口配置里的Token值)
        aesKey: 111 (接口配置里的EncodingAESKey值)
      - appId: 2222 (另一个公众号的appid,以下同上)
        secret: 1111
        token: 111
        aesKey: 111
  1. 运行Java程序:WxMpDemoApplication
  2. 配置微信公众号中的接口地址:http://公网可访问域名/wx/portal/xxxxx (注意,xxxxx为对应公众号的appid值);
  3. 根据自己需要修改各个handler的实现,加入自己的业务逻辑。

环境搭建教程

环境准备
  1. 到微信公众平台申请测试号一个,申请地址

  2. 不需要服务器,用外网映射工具,本次使用 Sunny-Ngrok

    这个映射工具在开发过程起到非常重要的作用,因为微信服务器是在外网的,我们本地开发的代码是部署在本地 tomcat 服务器的,本地tomcat是不能访问外网的微信服务器的,所以要借助 Ngrok 这个工具把我们本地 ip 映射到外网,这样本地代码就可以跟微信服务器交互了,这样调试代码就非常方便了。

    Ngrok 是外国的一款软件,服务器在美国,正常情况下,国内网络也是不能访问的(被墙了,大家都懂的)。在这里真的非常感谢大神 Sunny 把服务器部署到了香港,防止被墙让我们能够访问美国 Ngrok 服务器。更重要的是免费使用啊!免费使用啊!免费使用啊!

  3. 开发工具,本次使用并将长期使用 IntelliJ IDEA

部署 Ngrok

1、下载Sunny-Ngrok客户端:https://www.ngrok.cc/

2、注册Sunny-Ngrok后台管理账号:https://www.ngrok.cc/login/register

3、登录之后开通隧道:隧道名字随便填;前置域名就是你要映射的外网地址;本地端口就是本地ip:127.0.0.1+tomcat端口号:8080(本地的都可以修改,但是微信只能访问80和443端口,所以最好用默认的,不要修改)http验证用户名和密码不要填,因为到时这个地址要部署到微信后台的,设置之后微信服务器就不能访问这个映射地址了,微信服务器不知道你的用户名和密码。
在这里插入图片描述
在这里插入图片描述
4、本地运行Sunny-Ngrok启动工具.bat,将隧道id复制到启动工具,这样本地ip就映射到外网了。
在这里插入图片描述
在这里插入图片描述

Clone我的代码,并运行起来代码下载地址
配置微信测试号页面
  1. 项目成功运行后,并且用 Ngrok完成外网映射后才能填写接口配置信息

    [外链图片转存失败(img-dIFy4ybb-1564134884577)(img\1564133645425.png)]

注意:配置微信公众号中的接口地址:http:// ngrok分配给你的域名/wx/portal/xxxxx (注意,xxxxx为对应公众号的appid值);

  1. 点击提交,微信后台完成接口校验。

  2. 扫码关注你的测试公众号进行功能验证

实现效果

目前仅实现了简单的消息处理和扫码demo

欢迎交流,我的GitHub
拓展

基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录

关于我

微信公众号:Guevara的笔记,技术菜鸟记录技术学习过程。

微信公众号:Guevara的笔记

### 实现Spring Boot应用中的微信登录 为了在Spring Boot项目中集成微信二维码登录功能,可以遵循以下方法: #### 添加Maven依赖 通过引入特定的依赖项来简化开发过程。对于微信登录的支持,在`pom.xml`文件里加入如下所示的一行依赖即可[^1]。 ```xml <dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-miniapp</artifactId> <version>${wxsdk.version}</version> </dependency> ``` #### 配置属性 配置必要的参数以便于后续调用微信接口。这些设置通常位于项目的application.properties或application.yml文件内。 ```yaml wx: mp: appId: your-app-id secret: your-secret-key token: your-token-string aesKey: your-aes-key-if-needed ``` #### 创建服务类 编写用于处理微信服务器交互的服务层逻辑。这里提供了一个简单的例子展示如何获取授权链接并解析回调返回的数据。 ```java @Service public class WeChatAuthService { @Value("${wx.mp.appId}") private String appId; public String getAuthUrl(String redirectUri, boolean isQrCode) { // 构建OAuth2.0授权URL StringBuilder urlBuilder = new StringBuilder(); urlBuilder.append("https://open.weixin.qq.com/connect/oauth2/authorize?") .append("appid=").append(appId) .append("&redirect_uri=").append(URLEncoder.encode(redirectUri)) .append("&response_type=code") .append("&scope=snsapi_login") // 使用snsapi_login表示静默授权模式 .append(isQrCode ? "&state=qrcode#wechat_redirect" : "#wechat_redirect"); return urlBuilder.toString(); } } ``` #### 控制器部分 最后一步是在控制器中定义端点以响应前端请求,并将上述构建好的授权地址作为跳转目标发送给客户端浏览器。 ```java @RestController @RequestMapping("/auth/wechat") public class AuthController { @Autowired private WeChatAuthService authService; @GetMapping("/login") public ResponseEntity<?> login(@RequestParam(value="qr", defaultValue="false") Boolean qr, HttpServletResponse response){ try{ URI uri = new URI(authService.getAuthUrl("http://yourdomain/callback", qr)); response.sendRedirect(uri.toASCIIString()); return null; // Redirect will terminate the current request processing. }catch (Exception e){ throw new RuntimeException(e); } } } ``` 以上就是基于Spring Boot框架实现微信登录的主要步骤概述以及相应的代片段示例。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值