第一步先下载官方Demo https://github.com/binarywang/weixin-java-mp-demo-springboot
下载好后,导入demo,把application.yml.template
改为application.yml
创建一个微信开发的项目,引入maven依赖,这里用的是聚合工程,父工程已经有spring boot依赖了(如果是单独的项目还需要引入spring boot依赖
<dependency>
<groupId>com.github.binarywang</groupId>
<artifactId>weixin-java-mp</artifactId>
<version>3.3.0</version>
<exclusions>
<exclusion>
<artifactId>xstream</artifactId>
<groupId>com.thoughtworks.xstream</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>
spring-cloud-starter-netflix-eureka-client
</artifactId>
<exclusions>
<exclusion>
<artifactId>xstream</artifactId>
<groupId>com.thoughtworks.xstream</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<artifactId>xstream</artifactId>
<groupId>com.thoughtworks.xstream</groupId>
<version>1.4.10</version>
</dependency>
第三步开始整合,把demo中的所以类和application.yml
文件复制到项目中
修改application.yml文件
logging:
level:
org.springframework.web: INFO
com.github.binarywang.demo.wx.mp: DEBUG
me.chanjar.weixin: DEBUG
wx:
mp:
configs:
##个人真实公众号配置信息
- appId: wxc0e8abb4f8611009 #(一个公众号的appid)
secret: 0f723f884c06dadf3f29187c721ab8f9 #(公众号的appsecret)
token: shop #(接口配置里的Token值)
aesKey: t69PlKgV4hT1yItjYJkhO1k7iYC1Hr2IhGL10VCsUD0
##微信官方测试公众号配置(测试用)
- appId: wxdea7292b7998fc4a #(一个公众号的appid)
secret: db88cecb2096f1214bb9dcb8ef21bce5 #(公众号的appsecret)
token: shop #(接口配置里的Token值)
server:
port: 8500
shop:
weixin:
registration:
code:
###微信注册码消息
message: 您的注册码为:%s,感觉您的支持!
###默认提示消息
default:
registration:
code:
message: 您的手机号码不正确,请重新输入!
配置信息在微信公众号平台---->基本设置
代码演示图
第四步引入正则工具类(判断手机号码需要用)
正则表达式验证工具类RegexUtils
https://songzixian.com/javatuils/595.html
如图
第五步:把rweixin-java-mp-demo-springboot-maste
项目的包全部拷贝到开发项目中进行整合
第六步:打开handler
包下的MsgHandler
类进行写代码
@Component
public class MsgHandler extends AbstractHandler {
// 用户发送手机验证码提示
@Value("${shop.weixin.registration.code.message}")
private String registrationCodeMessage;
// 默认用户发送验证码提示
@Value("${shop.weixin.default.registration.code.message}")
private String defaultRegistrationCodeMessage;
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
Map<String, Object> context, WxMpService weixinService,
WxSessionManager sessionManager) {
if (!wxMessage.getMsgType().equals(XmlMsgType.EVENT)) {
//TODO 可以选择将消息保存到本地
}
//当用户输入关键词如“你好”,“客服”等,并且有客服在线时,把消息转发给在线客服
try {
if (StringUtils.startsWithAny(wxMessage.getContent(), "你好", "客服")
&& weixinService.getKefuService().kfOnlineList()
.getKfOnlineList().size() > 0) {
return WxMpXmlOutMessage.TRANSFER_CUSTOMER_SERVICE()
.fromUser(wxMessage.getToUser())
.toUser(wxMessage.getFromUser()).build();
}
} catch (WxErrorException e) {
e.printStackTrace();
}
//1.获取客户端发送的消息 getContent(内容)
String formContent =wxMessage.getContent();
//2.使用正则表达式验证消息是否为手机号码格式
if(RegexUtils.checkMobile(formContent)){//formContent是用户输入的手机
//3.如果手机号码正确,生成四位随机数字做为手机注册码
int registCode = registCode();
String content = registrationCodeMessage.format(registrationCodeMessage,registCode );
return new TextBuilder().build(content,wxMessage,weixinService);
}
//如果输入的手机号码不正确,返回错误提示
return new TextBuilder().build(defaultRegistrationCodeMessage,wxMessage,weixinService);
}
//生成随机数
private int registCode(){
int registCode = (int) (Math.random()*9000+1000);
System.out.println("注册码:"+registCode);
return registCode;
}
}
如图:
启动项目
@SpringBootApplication
public class WxMpDemoApplication {
public static void main(String[] args) {
SpringApplication.run(WxMpDemoApplication.class, args);
}
}
进行测试
到这里就开发完成了