​GITHUB​​地址

​https://github.com/Wechat-Group/WxJava​

微信公众号开发

  • 下载demo代码参考
  • pom.xml引入
  1. <dependency>
  2. <groupId>com.github.binarywang</groupId>
  3. <artifactId>weixin-java-mp</artifactId>
  4. <version>4.0.0</version>
  5. </dependency>
  • 配置yml
  1. wx:
  2. mp:
  3. false
  4. redisConfig:
  5. 127.0.0.1
  6. 6379
  7. configs:
  8. "******************"
  9. "*****************"
  10. "*****************"
  11. "*****************"
  • 将demo相关代码直接搬到项目代码中
WxPortalController控制器为接通公众号开发设置的接口
  1.  


    @RequestMapping("/wx/portal/{appid}")


  2.  


    public class WxPortalController


  3.  


    .............................


  4.  


    .............................


  • 公众号开发配置,服务器URL就是刚才WxPortalController的接口,验证消息来自微信,接通公众号。也是公众号交互,事件推送的唯一入口。
  • Wechat-Group_WxJava使用记录_json

  • 用户关注和取关
  • 参考使用demo代码的SubscribeHandler 和 UnsubscribeHandler,正常直接搬过来实现业务逻辑就可以。不熟悉的话,各种事件可以通过直接观察日志打印来定位不同的handle文件位置,demo代码在各种事件里都有打印可以识别
  1. 关注时可以获取 openid Unionid等信息
  2. log.debug("\n新关注用户:{}", userWxInfo);
  3. MpUser mpUser = new MpUser();
  4. mpUser.setOpenId(userWxInfo.getOpenId());
  5. mpUser.setUnionId(userWxInfo.getUnionId());
  6. "1");
  7. mpUserService.subscribe(mpUser);
  • 根据关注事件获取到的用户openid去发送模板消息
  1. 文档https://github.com/Wechat-Group/WxJava/wiki/%E5%85%AC%E4%BC%97%E5%8F%B7%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3

  2. 依赖注入WxMpService(千万不能通过直接new wxPmService的方式,否则会报空指针异常)
  3. @Autowired
  4. private


  5. WxMpTemplateMessage templateMessage =
  6. "ozHsF6u1JE8buR1ANBiRv2-Qjwxc").templateId("aOSPkPH7NLibxo5gUKHZOPT4yMZwcU7Rs9-hIERRf2M").url("http://www.baidu.com").build();
  7. new WxMpTemplateData("first", "您好,亲爱的小明家长,请查阅宝宝今日在园情况", "#173177"));
  8. new WxMpTemplateData("keyword1", "托管1班", "#173177"));
  9. new WxMpTemplateData("keyword2", "2021年5月24日", "#173177"));
  10. new WxMpTemplateData("keyword3","今天宝宝在幼儿园表现还不错,但是中午吃饭时有点挑食不喜欢吃西红柿,希望家长在家也关注一下", "#173177"));
  11. new WxMpTemplateData("remark", "备注信息", "#173177"));
  12. wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);

微信小程序开发

  • 引入小程序与引入公众号方式一样,就不累赘了,这里直接记录微信小程序开发中敏感词汇的审核
    1. package
    2.
    3. import
    4. import
    5. import
    6. import
    7. import
    8. import
    9. import
    10. import
    11. import
    12. import
    13. import
    14.
    15. import
    16.
    17. @Data
    18. @Component
    19. public class WxCheckMsgImg
    20. @Autowired
    21. private
    22.
    23. private static
    24.
    25. @PostConstruct
    26. public void init(){
    27. this;
    28. wxCheckMsgImg.wxMaProperties = wxMaProperties;
    29. }
    30.
    31. // fileUrls为逗号隔开的字符串
    32. public static void checkMsgImg( String msg, String fileUrls) throws
    33. String appid = wxCheckMsgImg.wxMaProperties.getConfigs().get(0).getAppid();
    34. // 检测文字
    35. if(StringUtils.isNotBlank(msg)){
    36. WxService wxService =
    37. try{
    38. JsonObject jsonObject = new JsonObject();
    39. "content", msg);
    40. "https://api.weixin.qq.com/wxa/msg_sec_check", jsonObject.toString());
    41. catch
    42. "检测失败");
    43. System.out.println(e);
    44. throw new CommonException("您发布的内容含有敏感词汇");
    45. }
    46. }
    47.
    48. // 检测图片
    49. // if(StringUtils.isNotBlank(fileUrls)){
    50. // String[] fileUrlArr = fileUrls.split(",");
    51. // WxMaSecCheckService wxMaSecCheckService = WxMaConfiguration.getMaService(appid).getSecCheckService();
    52. // for (int i =0; i<fileUrlArr.length;i++){
    53. // try{
    54. // wxMaSecCheckService.checkImage(fileUrlArr[i]);
    55. // }catch (WxErrorException e){
    56. // System.out.println("检测失败");
    57. // System.out.println(e);
    58. // throw new CommonException("您发布的图片含有违规信息");
    59. // }
    60. //
    61. // }
    62. // }
    63.
    64.
    65. }
    66. }