java实现微信公众号发送模版消息
作者:小小渔夫 发布时间:2022-04-23 08:09:11
标签:java,微信,模版消息
前言:
在我们购买商品或其他操作的时候,这时候微信公众号会推送相关模版消息。接下来简单介绍开发流程:(本文以订单推送为例)
首先在测试号新建模版消息
格式如下:
{{first.DATA}}
用户名:{{keyword1.DATA}}
订单号:{{keyword2.DATA}}
订单金额:{{keyword3.DATA}}
商品信息:{{keyword4.DATA}}
{{remark.DATA}}
这里会生成一个模版ID,后面会用到
然后后台在上传订单接口,上传成功后调用发送模版消息,代码实现:
public void sendOrderTemplateMessage(Order order) {
AugeWechatUser wechatUser = augeWechatUserMapper.selectByPhone(order.getPhone());
String goodsInfo = "";
for (AugeSaleItem augeSaleItem : order.getData()) {
goodsInfo += augeSaleItem.getItemName() + "×" + augeSaleItem.getItemNum() + "\n\t\t\t";
}
DataInfo first = new DataInfo("恭喜你购买成功!", "#ff0000");
DataInfo keyword1 = new DataInfo(wechatUser.getNickName(), "#ff0000");
DataInfo keyword2 = new DataInfo(order.getOrderNumber(), "#ff0000");
DataInfo keyword3 = new DataInfo("¥" + order.getSumPrice() + "元", "#ff0000");
DataInfo keyword4 = new DataInfo(goodsInfo, "#ff0000");
DataInfo remark = new DataInfo("欢迎再次购买!", "#000000");
OrderData orderData = new OrderData(first, keyword1, keyword2, keyword3, keyword4, remark);
OrderTemplateMessage templateMessage = new OrderTemplateMessage();
templateMessage.setTouser(wechatUser.getId());
templateMessage.setTemplate_id(orderTemplateId);//模版ID
templateMessage.setData(orderData);
OkHttpUtil.getInstance().doPost(WechatConstant.getTemplateUrl(wechatAccessTokenService.takeAccessToken()),
JSON.toJSONString(templateMessage));
}
简单介绍 OkHttpUtil
OkHttp是一个第三方类库,用于Android中请求网络。
public String doPost(String url, String param) {
MediaType );
RequestBody body = RequestBody.create(JSON, param);
Request request = new Request.Builder()
.url(url)
.post(body)
.build();
Call call = okHttpClient.newCall(request);
try {
Response response = call.execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
注意配置订单模版ID
@Value("#{setting.ordertemplateid}")
private String orderTemplateId;
来源:http://www.cnblogs.com/PreachChen/p/8652404.html


猜你喜欢
- mysql有个字段是bit,只存储1和0,是二进制存储,那么在java的dao层如何映射成boolean呢@Column(name=&quo
- 实体对象之间相互传值,如:VO对象的值赋给Entity对象,是代码中常用功能,如果通过get、set相互赋值,则很麻烦,借助工具类BeanU
- 本文实例为大家分享了android使用OPENGL ES绘制圆柱体的具体代码,供大家参考,具体内容如下效果图:编写jiem.java&nbs
- 最近在维护项目,app遇到安装在高版本的Android时,以往直接授权和new File(path)的形式不再支持,日志也是说Permiss
- 本文实例为大家分享了C#使用NPOI将excel导入到list的具体代码,供大家参考,具体内容如下这个是确定是实体类接收/// <su
- Android安装apk文件并适配Android 7.0详解首先在AndroidManifest.xml文件,activity同级节点注册p
- String[, ,] items = new String[,,] { { { "A1", "A2"
- 序目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段。C# 6.0 虽说
- System.Web.Caching.Cache Insert和Add方法的区别Add()object Add(string key, ob
- 前言:在看这个变更之前,我们需要回忆下 Android 12 的一个安全性变更, 即声明了 <intent-filter&g
- dynamic关键字和动态语言运行时(DLR)是.Net 4.0中新增的功能。什么是"动态"?编程语言有时可以划分为静态
- @Value("${xxx}")取properties时中文乱码(1)检查spring的配置文件中,properties
- JAVA虽然是在C++基础上发展而来,但却对C++的许多缺陷有所改进,其中一个不得不提的就是字符串,我们知道,随着学习的深入,进入MFC时,
- 前言进入到 SpringBoot2.7 时代,有小伙伴发现有一个常用的类忽然过期了:在 Spring Security 时代,这个类可太重要
- 现在看我文章的多数是一些老Android了,相信每个人使用起LayoutInflater都是家常便饭,信手拈来。但即使是这样,我仍然觉得这个
- 一、线程间的共享1.1 ynchronized内置锁用处Java支持多个线程同时访问一个对象或者对象的成员变量关键字synchronized
- Android 监听手机GPS打开状态实现代码GPS_Presenterpackage com.yiba.core;import andro
- public class MainActivity extends Activity { private Handler hand
- 实际需求<if test="computationRule == '1'"> F
- 写在前面为什么会突然想说说委托?原因吗,起于一个同事的想法,昨天下班的路上一直在想这个问题,如果给委托注册多个方法,会不会都执行呢?为了一探