微信小程序+Springboot实现订阅消息推送 (demo)

微信小程序+Springboot实现订阅消息推送 (demo)_第1张图片

1. 开通订阅消息

微信小程序+Springboot实现订阅消息推送 (demo)_第2张图片

2. 选用模板

  订阅消息 - 公共模板库 - 选用

微信小程序+Springboot实现订阅消息推送 (demo)_第3张图片

3. 选择关键词 

勾选关键词 - 最多勾选5个 - 显示例子

微信小程序+Springboot实现订阅消息推送 (demo)_第4张图片 

4. 我的模板

微信小程序+Springboot实现订阅消息推送 (demo)_第5张图片 

5. 订阅号开发者-文档: 发送订阅消息 | 微信开放文档

6. 依赖

	com.alibaba.fastjson2
	fastjson2
	2.0.32


	cn.hutool
	hutool-all
	5.3.3

7. MessageVo
import lombok.Data;
import java.util.Map;


/**
 * 封装请求参数
 */
@Data
public class MessageVo {

    // 接收者(用户)的 openid
    private String touser;
    // 订阅消息模板id
    private String template_id;
    // 默认跳到小程序首页
    private String page = "pages/index/index";
    // 推送文字
    private Map data;
    // developer为开发版;trial为体验版;formal为正式版;默认为正式版
    private String miniprogram_state;
    // zh_CN(简体中文)
    private String lang;
}

8. TemplateData
import lombok.Data;


/**
 * 封装订阅消息内容
 */
@Data
public class TemplateData {

    private String value;

    public TemplateData(String value){
        this.value = value;
    }
}

9. SendMessage
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;
import java.util.HashMap;
import java.util.Map;

@Slf4j
@Service
public class SendMessage {

    /**
     * 发送订阅消息
     * @return
     */
    public String send(){


        RestTemplate restTemplate = new RestTemplate();

        // url + access_token(接口调用凭证)
        String url = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + "access_token";

        // 拼接推送的模板
        MessageVo vo = new MessageVo();
        // 要发送给哪个用户 (动态传进来)
        vo.setTouser("用户openid");
        vo.setTemplate_id("模板id");
        // 必填(否)
        vo.setPage("pages/index/index");
        // developer为开发版;trial为体验版;formal为正式版;默认为正式版
        vo.setMiniprogram_state("developer");
        // 语言类型
        vo.setLang("zh_CN");


        Map map = new HashMap<>(5);

        /**封装模板消息内容, 必须和你申请的小程序模板格式一模一样, 并一一对应*/
        // 商品名称
        map.put("thing1",new TemplateData("商品名称"));
        // 支付时间
        map.put("time2",new TemplateData("支付时间"));
        // 支付金额
        map.put("amount3",new TemplateData("支付金额"));
        // 订单号
        map.put("character_string4",new TemplateData("订单号"));
        // 支付方式
        map.put("thing5",new TemplateData("支付方式"));
        vo.setData(map);


        ResponseEntity responseEntity = restTemplate.postForEntity(url, vo, String.class);
        String bodyAsString = responseEntity.getBody();

        JSONObject json = JSON.parseObject(bodyAsString);
        String errcode = json.getString("errcode");
        String errmsg = json.getString("errmsg");
        if (("ok").equals(errmsg)) {
            log.info("发送订阅消息成功: {}", bodyAsString);
        } else {
            log.info("发送订阅消息失败: {}", bodyAsString);
        }
        return bodyAsString;
    }
}

 

你可能感兴趣的:(微信小程序,V3,微信小程序,spring,boot,小程序)