前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java发送微信小程序模板消息

java发送微信小程序模板消息

原创
作者头像
请叫我师哥
发布2021-12-31 14:44:59
2K0
发布2021-12-31 14:44:59
举报
文章被收录于专栏:师哥分享
java微信小程序发送模板消息

注意在访问的时候需要将关键字替换成自己的信息,比如APPID、APPSECRET、ACCESS_TOKEN 等。

发送小程序模板消息参数

请求示例:

模板内容为

代码语言:txt
复制
姓名: {{name01.DATA}}
金额: {{amount01.DATA}}
行程: {{thing01.DATA}}
日期: {{date01.DATA}}

则请求的参数json为

代码语言:txt
复制
{
  "touser": "OPENID",
  "template_id": "TEMPLATE_ID",
  "page": "index",
  "data": {
      "name01": {
          "value": "某某"
      },
      "amount01": {
          "value": "¥100"
      },
      "thing01": {
          "value": "广州至北京"
      } ,
      "date01": {
          "value": "2018-01-01"
      }
  }
}

获取token

代码语言:txt
复制
/**
 * 获取token
 *
 * @return return
 */
public static JSONObject getAccessToken() {
    String replace = WechatMiniApi.GET_ACCESS_TOKEN.replace("APPID", "你的appid").replace("APPSECRET", "你的appsecret");
    return HttpUtils.messageGet(replace);
}

发送get请求

代码语言:txt
复制
/**
 * get请求
 * @param url get请求url
 * @return return
 */
public static JSONObject messageGet(String url) {
    HttpClient httpClient = HttpClientBuilder.create().build();
    HttpGet get = new HttpGet(url);
    JSONObject jsonObject = null;

    try {
        HttpResponse response = httpClient.execute(get);
        HttpEntity entity = response.getEntity();
        if (null != entity) {
            String result = EntityUtils.toString(entity);
            jsonObject = JSONObject.fromObject(result);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return jsonObject;
}

封装参数,可以根据自己的模板设置不同的key。

代码语言:txt
复制
/**
 * @param toUser      发送用户
 * @param templateId 模板消息id
 * @param orderNo     订单编号
 * @param payPrice    支付金额
 * @param page        跳转页面
 * @param formId      表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id
 * @return 返回一个信息
 */
public static JSONObject messageContent(String toUser, String templateId, String orderNo, String payPrice, String page, String formId) {
    JSONObject jsonObject = new JSONObject();
    JSONObject data = new JSONObject();
    JSONObject keyword1 = new JSONObject();
    JSONObject keyword2 = new JSONObject();

    jsonObject.put("touser", toUser);
    jsonObject.put("template_id", templateId);
    jsonObject.put("page", page);
    jsonObject.put("form_id", formId);

    keyword1.put("value",orderNo);
    data.put("character_string1", keyword1);
    keyword2.put("value",payPrice);
    data.put("amount3", keyword2);

    jsonObject.put("data", data);
    jsonObject.put("emphasis_keyword", "keyword1.DATA");
    jsonObject.put("miniprogram_state", "trial");
    jsonObject.put("lang", "zh_CN");
    return jsonObject;
}

发送post请求方法

代码语言:txt
复制
/**
 * post请求
 *
 * @param url url
 * @param str 参数
 * @return 返回json对象
 */
public static JSONObject doPost(String url, String str) {
    HttpClient httpClient = HttpClientBuilder.create().build();
    HttpPost post = new HttpPost(url);
    post.setHeader("User-Agent", "vegetable-sdzy");
    post.setHeader("Accept", "application/json");
    post.setHeader("Authorization", sign());
    post.setHeader("Content-Type", "application/json");
    JSONObject jsonObject = null;
    post.setEntity(new StringEntity(str, "UTF-8"));
    try {
        HttpResponse response = httpClient.execute(post);
        HttpEntity entity = response.getEntity();
        if (null != entity) {
            String result = EntityUtils.toString(entity, "UTF-8");
            jsonObject = JSONObject.fromObject(result);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return jsonObject;
}

发送模板消息方法

代码语言:txt
复制
/**
 * @param jsonObject 需要发送的参数 messageContent
 * @return return
 */
public static JSONObject sendMessage(JSONObject jsonObject) {

    String url = WechatMiniApi.SEND_TEMPATE.replace("ACCESS_TOKEN", "通过上面获取token的url获取到的token");

    JSONObject jsonObject1 = HttpUtils.doPost(url, jsonObject.toString());
    if (Integer.parseInt(jsonObject1.get("errcode").toString()) == 0) {
        log.info("消息发送成功!");
    } else {
        log.error("消息发送失败,失败编码:{},错误信息:{}", jsonObject1.get("errcode"), jsonObject1.get("errmsg"));
    }
    return jsonObject1;
}

错误码返回:

errCode

说明

40003

touser字段openid为空或者不正确

40037

订阅模板id为空不正确

43101

用户拒绝接受消息,如果用户之前曾经订阅过,则表示用户取消了订阅关系

47003

模板参数不准确,可能为空或者不满足规则,errmsg会提示具体是哪个字段出错

41030

page路径不正确,需要保证在现网版本小程序中存在,与app.json保持一致

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • java微信小程序发送模板消息
    • 发送小程序模板消息参数
    相关产品与服务
    云开发 CloudBase
    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档