Java 微信公众号消息模板推送

1 篇文章 0 订阅

Java 微信公众号消息模板推送

可以在微信公众号中
开发==》开发者工具==》公众平台测试账号
申请测试账号用于测试

或者点击下面链接进入测试平台
微信公众平台

消息模板

用户姓名:{{userName.DATA}}
消费金额:{{consumeMoney.DATA}}
消费日期:{{consumeDate.DATA}}

引入pom.xml

        <!--微信模版消息推送三方sdk-->
        <dependency>
            <groupId>com.github.binarywang</groupId>
            <artifactId>weixin-java-mp</artifactId>
            <version>3.3.0</version>
        </dependency>

WxPushUtil

package com.shiyu.clients.util;

import com.shiyu.clients.form.WxConsumeInfoForm;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import me.chanjar.weixin.mp.bean.result.WxMpUserList;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * @auther abu
 * @date 2019/12/26 18:17
 */
public class WxPushUtil {

    private static final String APPID = "appid";
    private static final String SECRET = "secret";

    public static void pushConsumeInfo(WxConsumeInfoForm form) {
        try {
            //1,配置
            WxMpInMemoryConfigStorage wxStorage = new WxMpInMemoryConfigStorage();
            wxStorage.setAppId(APPID);
            wxStorage.setSecret(SECRET);
            WxMpService wxMpService = new WxMpServiceImpl();
            wxMpService.setWxMpConfigStorage(wxStorage);
            //2,推送消息
            WxMpTemplateMessage templateMessage = new WxMpTemplateMessage();
            templateMessage.setTemplateId(form.getTemplateId());
            if (form.getUrl() != null && !form.getUrl().equals("")) {
                templateMessage.setUrl(form.getUrl());
            }
            if(form.getAppid()!=null&&!form.getAppid().equals("")&&form.getPagePath()!=null&&!form.getPagePath().equals("")){
                //设置小程序的appId和转发的页面
                WxMpTemplateMessage.MiniProgram miniprograms = new WxMpTemplateMessage.MiniProgram();
                miniprograms.setAppid(form.getAppid());
                miniprograms.setPagePath(form.getPagePath());
                templateMessage.setMiniProgram(miniprograms);
            }

            templateMessage.setData(form.getList());

            if (form.getSendAll()) {
                List<String> openList = new ArrayList<>();
                openList = recursionOpenId(openList, null, wxMpService);
                for (String id : openList) {
                    templateMessage.setToUser(id);//全部推送
                    wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
                }
            } else {
                templateMessage.setToUser(form.getOpenId());//要推送的用户openid
                wxMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
            }
        } catch (Exception e) {
            System.out.println("推送失败:" + e.getMessage());
            e.printStackTrace();
        }

    }

    /**
     * 递归查询openId,一次最多拉取10000各个关注者的OpenId,可以多次拉取满足需求
     *
     * @param openIdList
     * @param nextOpenId  第一次拉取的openId,不填默认从头开始拉取
     * @param wxMpService
     * @return
     */
    public static List<String> recursionOpenId(List<String> openIdList, String nextOpenId, WxMpService wxMpService) {
        try {
            WxMpUserList openList = wxMpService.getUserService().userList(nextOpenId);
            for (String strId : openList.getOpenids()) {
                openIdList.add(strId);
            }
            if (openList.getOpenids().size() > 10000) {
                recursionOpenId(openIdList, openList.getNextOpenid(), wxMpService);
            }
        } catch (WxErrorException e) {
            e.printStackTrace();
        }

        return openIdList;
    }

    /**
     * 测试
     */
    public static void main(String[] args) {
        WxConsumeInfoForm form = new WxConsumeInfoForm();
        form.setTemplateId("模板ID");
        String color = "#001EFF";//蓝色
        //如果推送给全部用户
		form.setSendAll(true);
        //推送给的单个用户
        //form.setOpenId("openID");
        
        //有链接就加这条,没链接就删除
        form.setUrl("baidu.com");
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        List<WxMpTemplateData> wxMpTemplateData = new ArrayList<>();
        wxMpTemplateData.add(new WxMpTemplateData("userName", "天梓", color));
        wxMpTemplateData.add(new WxMpTemplateData("consumeMoney", "1998.88", color));
        wxMpTemplateData.add(new WxMpTemplateData("consumeDate", sdf.format(new Date()), color));
        form.setList(wxMpTemplateData);

        WxPushUtil.pushConsumeInfo(form);
    }

}

WxConsumeInfoForm

package com.shiyu.clients.form;

import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;

import java.io.Serializable;
import java.util.List;

public class WxConsumeInfoForm implements Serializable {

    private static final long serialVersionUID = 2035293165820350664L;

    //用户openId
    private String openId;
    //模板编号
    private String templateId;
    //小程序id
    private String appid;
    //小程序页面
    private String pagePath;
    //跳转地址
    private String url;
    //是否群发所有用户
    private Boolean sendAll=false;

    private List<WxMpTemplateData> list;

    public String getOpenId() {
        return openId;
    }

    public void setOpenId(String openId) {
        this.openId = openId;
    }

    public String getTemplateId() {
        return templateId;
    }

    public void setTemplateId(String templateId) {
        this.templateId = templateId;
    }

    public String getAppid() {
        return appid;
    }

    public void setAppid(String appid) {
        this.appid = appid;
    }

    public String getPagePath() {
        return pagePath;
    }

    public void setPagePath(String pagePath) {
        this.pagePath = pagePath;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public List<WxMpTemplateData> getList() {
        return list;
    }

    public void setList(List<WxMpTemplateData> list) {
        this.list = list;
    }

    public Boolean getSendAll() {
        return sendAll;
    }

    public void setSendAll(Boolean sendAll) {
        this.sendAll = sendAll;
    }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值