微信公眾號傳送模版訊息
阿新 • • 發佈:2019-01-02
在我們購買商品或其他操作的時候,這時候微信公眾號會推送相關模版訊息。接下來簡單介紹開發流程:(本文以訂單推送為例)
測試號新建模版訊息
格式如下:
{{first.DATA}}
使用者名稱:{{keyword1.DATA}}
訂單號:{{keyword2.DATA}}
訂單金額:{{keyword3.DATA}}
商品資訊:{{keyword4.DATA}}
{{remark.DATA}
注:這裡會生成一個模版ID,後面會用到
訂單完成模版訊息資料
@Data public class OrderData { private DataInfo first; private DataInfo keyword1; private DataInfo keyword2; private DataInfo keyword3; private DataInfo keyword4; private DataInfo remark; public OrderData(DataInfo first, DataInfo keyword1, DataInfo keyword2, DataInfo keyword3, DataInfo keyword4, DataInfo remark) { this.first = first; this.keyword1 = keyword1; this.keyword2 = keyword2; this.keyword3 = keyword3; this.keyword4 = keyword4; this.remark = remark; } public OrderData(DataInfo first, DataInfo keyword1, DataInfo keyword2, DataInfo remark) { this.first = first; this.keyword1 = keyword1; this.keyword2 = keyword2; this.remark = remark; } }
模版訊息
@Data
public class TemplateMessage {
private String touser;
private String template_id;
private String url;
private Miniprogram miniprogram;
}
訂單模版訊息
@Data
public class OrderTemplateMessage extends TemplateMessage {
private OrderData data;
}
@Data public class DataInfo { private String value; private String color; }
訂單完成模版訊息
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 JSON = MediaType.parse("application/json; charset=utf-8"); 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;