e2

滴滴侠,fai抖

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

GITHUB地址

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

微信公众号开发

  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.  
      useRedis: false
    4.  
      redisConfig:
    5.  
      host: 127.0.0.1
    6.  
      port: 6379
    7.  
      configs:
    8.  
      - appId: "******************"
    9.  
      secret: "*****************"
    10.  
      token: "*****************"
    11.  
      aesKey: "*****************"
  • 将demo相关代码直接搬到项目代码中
    • WxPortalController控制器为接通公众号开发设置的接口
      1.  
        @RequestMapping("/wx/portal/{appid}")
      2.  
        public class WxPortalController {
      3.  
        .............................
      4.  
        .............................

       

  • 公众号开发配置,服务器URL就是刚才WxPortalController的接口,验证消息来自微信,接通公众号。也是公众号交互,事件推送的唯一入口。
  • 用户关注和取关
    • 参考使用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.  
        mpUser.setStatus("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.  
         
      3.  
        依赖注入WxMpService(千万不能通过直接new wxPmService的方式,否则会报空指针异常)
      4.  
        @Autowired
      5.  
        private WxMpService wxMpService;
      6.  
         
      7.  
         
      8.  
        WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
      9.  
        .toUser("ozHsF6u1JE8buR1ANBiRv2-Qjwxc").templateId("aOSPkPH7NLibxo5gUKHZOPT4yMZwcU7Rs9-hIERRf2M").url("http://www.baidu.com").build();
      10.  
        templateMessage.addData(new WxMpTemplateData("first", "您好,亲爱的小明家长,请查阅宝宝今日在园情况", "#173177"));
      11.  
        templateMessage.addData(new WxMpTemplateData("keyword1", "托管1班", "#173177"));
      12.  
        templateMessage.addData(new WxMpTemplateData("keyword2", "2021年5月24日", "#173177"));
      13.  
        templateMessage.addData(new WxMpTemplateData("keyword3","今天宝宝在幼儿园表现还不错,但是中午吃饭时有点挑食不喜欢吃西红柿,希望家长在家也关注一下", "#173177"));
      14.  
        templateMessage.addData(new WxMpTemplateData("remark", "备注信息", "#173177"));
      15.  
        wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);

       

微信小程序开发

  • 引入小程序与引入公众号方式一样,就不累赘了,这里直接记录微信小程序开发中敏感词汇的审核
  1.  
    package com.xxyw.tgxmapi.common.utils;
  2.  
     
  3.  
    import cn.binarywang.wx.miniapp.api.WxMaSecCheckService;
  4.  
    import com.google.gson.JsonObject;
  5.  
    import com.xxyw.tgxmapi.common.config.WxMaConfiguration;
  6.  
    import com.xxyw.tgxmapi.common.config.WxMaProperties;
  7.  
    import com.xxyw.tgxmapi.common.exception.CommonException;
  8.  
    import lombok.Data;
  9.  
    import me.chanjar.weixin.common.error.WxErrorException;
  10.  
    import me.chanjar.weixin.common.service.WxService;
  11.  
    import org.apache.commons.lang3.StringUtils;
  12.  
    import org.springframework.beans.factory.annotation.Autowired;
  13.  
    import org.springframework.stereotype.Component;
  14.  
     
  15.  
    import javax.annotation.PostConstruct;
  16.  
     
  17.  
    @Data
  18.  
    @Component
  19.  
    public class WxCheckMsgImg {
  20.  
    @Autowired
  21.  
    private WxMaProperties wxMaProperties;
  22.  
     
  23.  
    private static WxCheckMsgImg wxCheckMsgImg;
  24.  
     
  25.  
    @PostConstruct
  26.  
    public void init(){
  27.  
    wxCheckMsgImg = this;
  28.  
    wxCheckMsgImg.wxMaProperties = wxMaProperties;
  29.  
    }
  30.  
     
  31.  
    // fileUrls为逗号隔开的字符串
  32.  
    public static void checkMsgImg( String msg, String fileUrls) throws WxErrorException {
  33.  
    String appid = wxCheckMsgImg.wxMaProperties.getConfigs().get(0).getAppid();
  34.  
    // 检测文字
  35.  
    if(StringUtils.isNotBlank(msg)){
  36.  
    WxService wxService = WxMaConfiguration.getMaService(appid);
  37.  
    try{
  38.  
    JsonObject jsonObject = new JsonObject();
  39.  
    jsonObject.addProperty("content", msg);
  40.  
    wxService.post("https://api.weixin.qq.com/wxa/msg_sec_check", jsonObject.toString());
  41.  
    }catch (WxErrorException e){
  42.  
    System.out.println("检测失败");
  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.  
    }

 

posted on 2022-09-26 14:12  纯黑Se丶  阅读(227)  评论(0编辑  收藏  举报