微信小程序开发笔记 进阶篇⑧——Java后端推送订阅消息 | HTTPS调用,消息卡片,跳转页面

一、前言

微信小程序开发笔记——导读

微信小程序开发笔记 进阶篇⑦——小程序订阅消息 | 发起订阅,获取当前设置

  • 小程序前端做好消息订阅的准备工作
  • Java后端将数据按照消息模板的格式,推送给微信用户

本博文主要讲述:Java后端如何将数据按照消息模板的格式,推送给微信用户

二、接口说明

属性类型必填说明
access_tokenstring接口调用凭证,该参数为 URL 参数,非 Body 参数。使用access_token或者authorizer_access_token
template_idstring所需下发的订阅模板id
pagestring点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转
touserstring接收者(用户)的 openid
datastring模板内容,格式形如 { “key1”: { “value”: any }, “key2”: { “value”: any } }的object
miniprogram_statestring跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版
langstring进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN
  • 返回参数
属性类型说明
errcodenumber错误码
errmsgstring错误信息
public static JSONObject getBillData(Bill bill){
    JSONObject createTime = new JSONObject();
    createTime.put("value", DateUtils.parseDateToStr("yyyy/MM/dd HH:mm:ss", bill.getCreateTime()));

    JSONObject houseName = new JSONObject();
    houseName.put("value", bill.getTenantHouseName());

    JSONObject landlordName = new JSONObject();
    landlordName.put("value", bill.getLandlordName());

    JSONObject totalCost = new JSONObject();
    totalCost.put("value", bill.getTotalCost()+"元");

    JSONObject jsonObject = new JSONObject();
    jsonObject.put("time5", createTime);
    jsonObject.put("thing1", houseName);
    jsonObject.put("thing2", landlordName);
    jsonObject.put("amount3", totalCost);
    log.info(jsonObject.toJSONString());
    return jsonObject;
}

public static JSONObject sentBillMessage(RestTemplateUtils restTemplateUtils, User user, Bill bill){
    try {
        String accessToken = getAccessToken(TENANT_APPID);
        JSONObject paramMap = new JSONObject();
        paramMap.put("access_token", accessToken);
        paramMap.put("touser", user.getTenantOpenId());
        paramMap.put("template_id", "zrnNqXdbDZFVlhEew5LfQ2nOW8pUG5CdJ4Vw1J__S5Q");
        paramMap.put("data", getBillData(bill));
        paramMap.put("page", "pages/main/main");

        JSONObject body = restTemplateUtils.getRestTemplate().postForEntity("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="+accessToken, paramMap, JSONObject.class).getBody();
        log.info(body.toJSONString());
        return body;
    }catch (Exception e){
        e.printStackTrace();
        log.error("sentMessage bill="+bill.toString()+", user="+ user.toString());
    }
    return null;
}

三、access_token 获取

public static String getAccessToken(String appId){
    String objectStr="";
    try {
        objectStr = HttpUtil.get(String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s",appId, getAppSecret(appId)));
        JSONObject jsonObject = JSON.parseObject(objectStr);
        return jsonObject.getString("access_token");
    }catch (Exception e){
        e.printStackTrace();
    }
    return null;
}

四、消息模板

  • 登录小程序
  • 功能—>订阅消息
  • 选用模块,复制模板ID

在这里插入图片描述

在这里插入图片描述

五、参数page

  • page参数不填的话,默认否。即没有进入小程序查看的按钮

在这里插入图片描述

在这里插入图片描述

六、参考

觉得好,就一键三连呗(点赞+收藏+关注)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小康师兄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值