微信小程序通过公众号(服务号)推送通知或提醒步骤及代码(二,推送通知或提醒)

推动公众号通知或提醒!
关于推送前所需要获取的数据请移步:https://blog.csdn.net/weixin_44467567/article/details/112304488
第一步: 登录公众号后台创建模板消息
在这里插入图片描述
创建完成后点击详情
在这里插入图片描述
第二步 :代码实现

接口传参格式

 {
       "touser":"OPENID",
       "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
       "url":"http://weixin.qq.com/download",  
       "miniprogram":{
         "appid":"xiaochengxuappid12345",
         "pagepath":"index?foo=bar"
       },          
       "data":{
               "first": {
                   "value":"恭喜你购买成功!",
                   "color":"#173177"
               },
               "keyword1":{
                   "value":"巧克力",
                   "color":"#173177"
               },
               "keyword2": {
                   "value":"39.8元",
                   "color":"#173177"
               },
               "keyword3": {
                   "value":"2014年9月22日",
                   "color":"#173177"
               },
               "remark":{
                   "value":"欢迎再次购买!",
                   "color":"#173177"
               }
       }
   }

在这里插入图片描述

代码如下:

传输实体类

import lombok.Data;

import java.io.Serializable;

/**
 * @Description: 消息模板Data类
 * @Param:
 * @return:
 * @Author: XQD
 * @Date:2021/1/5 11:02
 */
@Data
public class DataEntityDto implements Serializable {

    //内容
    private String value;
    //字体颜色
    private String color;

    public DataEntityDto(String value ,String color){
        this.value = value;
        this.color = color;
    }

}

在此之前已经通过用户关注公众号的时候获取到了用户的openId

/**
     * @Description: 发送模板消息
     * @Param: [openId]
     * @return: boolean
     * @Author: XQD
     * @Date:2021/1/5 10:02
     */
     // param参数格式  {"keyword1":"张三","keyword2","项目名称"}
    @Override
    public boolean sendTemplateMsg(String openId, JSONObject param) {
    		// 发送模板消息的URL
            String sendMsgUrl = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + getAccessToken();
            // 整体参数map
            Map<String, Object> paramMap = new HashMap<String, Object>();
            // 跳转小程序参数map   如不需跳转小程序,该map不用创建
            Map<String, Object> miniprogramMap = new HashMap<String, Object>();
            // 消息主题显示相关map
            Map<String, Object> dataMap = new HashMap<String, Object>();
            paramMap.put("touser", openId);
            // 收藏客户访问
            paramMap.put("template_id", "这里写公众后台申请的模板I的");
            miniprogramMap.put("appid", "需要跳转的小程序appId,必须为关联的小程序");
            miniprogramMap.put("pagepath","需要跳转的页面");
            paramMap.put("miniprogram",miniprogramMap);
            //根据自己的模板定义内容和颜色
            // 前面的first,keyword1,keyword2,keyword3,remark 要模板消息中的参数一致
            // 后面的(String) param.get("keyword1")中的keyword1是我自己传参时自定义写的,为了和前面保持一致
            dataMap.put("first",new DataEntityDto("收藏客户访问小程序通知!","#173177"));
            dataMap.put("keyword1",new DataEntityDto((String) param.get("keyword1"),"#173177"));
            dataMap.put("keyword2",new DataEntityDto((String) param.get("keyword2") ,"#173177"));
            dataMap.put("keyword3",new DataEntityDto("访问项目小程序首页内容" ,"#173177"));
            dataMap.put("remark",new DataEntityDto("及时与收藏客户保持良好联系","#173177"));
       		paramMap.put("data", dataMap);
            String post = HttpClientUtil.post(sendMsgUrl, JSON.toJSONString(paramMap));
            Map<String,Object> map = null;
            try {
                map = objectMapper.readValue(post, Map.class);
            } catch (IOException e) {
                log.error("公众号模板消息异常通知-转化异常",e);
            }
            String errcode = String.valueOf(map.get("errcode"));
            String errmsg = String.valueOf(map.get("errmsg"));
            if (!errcode.equals("0")){
                log.error("消息发送失败:code="+errcode+"msg="+errmsg);
                return false;
            }
        return true;
    }
  • 5
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值