跳至主要內容

微信服务号推送服务模板消息

Yaien Blog原创大约 2 分钟微信微信服务号

微信服务号推送服务模板消息

记录通过微信服务号推送服务模版消息的实现

业务需求

项目中存在金额待支付,需要实时提醒微信用户;小程序的服务推送是一次性的,且需要用户点击授权才能推送,授权一次可发送一条,不符合业务需求;在查看官方文档后发现服务号的模板推送是可以实现的,具体可查看 接口实现open in new window
以及 模板消息运营规范open in new window

认证的服务号

要使用模板功能,该服务号必须是认证的,且接收的对象必须关注此服务号,否则无法推送

服务号中添加模板

在添加模板之前,需要开通模板消息接口服务,可使用的接口以及限制可在最地下的接口权限查看。

获取access_token

发送模板,需要用到 access_tokenopen in new window
,access_token 的获取需要用到 服务号的 appid 及开发者密码 secret,根据文档调用 GET 接口即可获取到;

也可以前往 服务号接口调试open in new window,填写对应信息获取测试token

在使用是可能会报错 ip 无效,将该ip添加到白名单中即可

调用后台代码,发送模板消息

    @Test
    public void httpTest2() {
        RestTemplate restTemplate = new RestTemplate();
        String ACCESS_TOKEN = "ACCESS_TOKEN ";
        String uri = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + ACCESS_TOKEN;
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        HttpEntity<String> entity = new HttpEntity<>(headers);
        String strbody = restTemplate.postForObject(uri, getJsonParas(), String.class);
        log.info(strbody);

    }


    private JSONObject getJsonParas() {
        JSONObject jsonObject = new JSONObject();
        // openid
        jsonObject.put("touser", "ocC-bdsdsdsdsdsdsu1_dOA");  
        // 模板id 
        jsonObject.put("template_id", "xxxxxxxxalq4khHFdLjRszwUemRxxxx");
        // url
        jsonObject.put("url", "http://weixin.qq.com/download");

        JSONObject miniprogram = new JSONObject();
        miniprogram.put("appid","wx797xxxxxx8e5502");
        miniprogram.put("pagepath","pages/homeTab/homeTab");
        jsonObject.put("miniprogram",miniprogram);

        JSONObject data = new JSONObject();
        JSONObject first = new JSONObject();
        first.put("value", "您有一笔待支付费用,请尽快支付!");
        JSONObject keyword1 = new JSONObject();
        keyword1.put("value", "AAA43434");
        keyword1.put("color", "#173177");
        JSONObject keyword2 = new JSONObject();
        keyword2.put("value", "66666 元");
        keyword2.put("color", "#173177");
        JSONObject keyword3 = new JSONObject();
        keyword3.put("value", "产品月付");
        keyword3.put("color", "#173177");
        JSONObject keyword4 = new JSONObject();
        keyword4.put("value", "请尽快支付!");
        JSONObject remark = new JSONObject();
        remark.put("value", "感谢您的使用!!!");

        data.put("first", first);
        data.put("keyword1", keyword1);
        data.put("keyword2", keyword2);
        data.put("keyword3", keyword3);
        data.put("keyword4", keyword4);
        data.put("remark", remark);

        jsonObject.put("data", data);

        return jsonObject;
    }

此时,我们就可以在微信上收到一条服务通知

上次编辑于:
贡献者: yanggl