url | 方式 | 说明 |
---|---|---|
get | 获取token | |
post | 发送模板消息 |
注意在访问的时候需要将关键字替换成自己的信息,比如APPID、APPSECRET、ACCESS_TOKEN 等。
请求示例:
模板内容为
姓名: {{name01.DATA}}
金额: {{amount01.DATA}}
行程: {{thing01.DATA}}
日期: {{date01.DATA}}
则请求的参数json为
{
"touser": "OPENID",
"template_id": "TEMPLATE_ID",
"page": "index",
"data": {
"name01": {
"value": "某某"
},
"amount01": {
"value": "¥100"
},
"thing01": {
"value": "广州至北京"
} ,
"date01": {
"value": "2018-01-01"
}
}
}
获取token
/**
* 获取token
*
* @return return
*/
public static JSONObject getAccessToken() {
String replace = WechatMiniApi.GET_ACCESS_TOKEN.replace("APPID", "你的appid").replace("APPSECRET", "你的appsecret");
return HttpUtils.messageGet(replace);
}
发送get请求
/**
* 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。
/**
* @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请求方法
/**
* 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;
}
发送模板消息方法
/**
* @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 删除。