微信公众号推送模板消息给用户

前置条件:

2.认证(300元)

5.编码(可以先看下接口文档)【以下为无跳转功能示例代码】

5.2 编码(可以先看下接口文档)【模板消息跳转到小程序】

public String test() {
        String templateId = "NtMhq-lqMiaORC4L95J_aODMzf-OhPZpD1dAgW7qvWs";
        Map<Object, WeChatTemplateMsg> sendMap = new HashMap<>();
        sendMap.put("first", new WeChatTemplateMsg("您好,有一个设备离线通知~"));
        sendMap.put("keyword1", new WeChatTemplateMsg("keyword1"));
        sendMap.put("keyword2", new WeChatTemplateMsg("keyword2"));
        sendMap.put("keyword3", new WeChatTemplateMsg("keyword3"));
        sendMap.put("keyword4", new WeChatTemplateMsg("keyword4"));
        sendMap.put("remark", new WeChatTemplateMsg("remark"));

        MiniprogramDto miniprogramDto = new MiniprogramDto();
        miniprogramDto.setAppid(wxMiniPromAppId);
        //跳转到的小程序的界面路径(page.json中的path参数)可带参数,小程序端 onload(options) 接收参数
        miniprogramDto.setPagepath("pages/xxxx/index?storeId=" + 1);

        Map<String, Object> map = getNotifyMapWithMiniProm("oI9SZ6Jt-myBmVhbaGxOJuglUjBY", templateId, sendMap, miniprogramDto);
        ResponseEntity<String> forEntity = restTemplate.postForEntity(NOTIFY_URL + getAccessToken(), map, String.class);
        log.error("通知管理员设备状态完成。请求参数:{},响应参数:{}", map, forEntity);
        return null;
    }

private Map<String, Object> getNotifyMapWithMiniProm(String openId, String templateId, Map<Object, WeChatTemplateMsg> sendMap, MiniprogramDto dto) {
        Map<String, Object> sendBody = new HashMap<>();
        sendBody.put("touser", openId); // openId
        sendBody.put("template_id", templateId);     // 模板Id
        sendBody.put("miniprogram", dto);     // 小程序信息
        sendBody.put("topcolor", "#FF0000");          // 顶色
        sendBody.put("data", sendMap);                   // 模板参数
        return sendBody;
    }

@Data
public class MiniprogramDto {

    private String appid;

    private String pagepath;

}

6.结果

经验分享 程序员 微信小程序 职场和发展