1. 程式人生 > >微信公眾號傳送模版訊息

微信公眾號傳送模版訊息

    在我們購買商品或其他操作的時候,這時候微信公眾號會推送相關模版訊息。接下來簡單介紹開發流程:(本文以訂單推送為例)

測試號新建模版訊息

格式如下:
{{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;