java引入WxJava框架
WxJava消息接受处理有返回在MsgHandler
微信公众号发送手机号返回验证码
- MsgHandler中判断传递参数时候为手机号,如果为手机号则生成验证码,存入redis之后返回
@Component
public class MsgHandler extends AbstractHandler {
@Override
public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage,
Map<String, Object> context, WxMpService wxMpService,
WxSessionManager sessionManager) {
WeixinService weixinService = (WeixinService) wxMpService;
if (!wxMessage.getMsgType().equals(WxConsts.XmlMsgType.EVENT)) {
//TODO 可以选择将消息保存到本地
}
//当用户输入关键词如“你好”,“客服”等,并且有客服在线时,把消息转发给在线客服
if (StringUtils.startsWithAny(wxMessage.getContent(), "你好", "客服")
&& weixinService.hasKefuOnline()) {
return WxMpXmlOutMessage
.TRANSFER_CUSTOMER_SERVICE().fromUser(wxMessage.getToUser())
.toUser(wxMessage.getFromUser()).build();
}
//发送手机号返回验证码
//1.判断请求信息是否为手机号
String message = wxMessage.getContent();
if (RegexUtils.checkMobile(message)) {
//2. 获取一个验证码
String authCode = SecurityCode.getSecurityCode();
//3. 将验证码存入redis中
redisUtil.setString(Constants.WEIXINCODE_KEY + message,authCode,Constants.WEIXINCODE_TIMEOUT);
//3.返回消息
return new TextBuilder().build("您的验证码为:" + authCode, wxMessage, weixinService);
}
//TODO 组装回复消息
String content = "回复信息内容";
return new TextBuilder().build(content, wxMessage, weixinService);
}
}
RegexUtils 正则表达式验证工具
SecurityCode 验证码工具类
RedisUtil redis工具类
结果返回为生成的验证码