【微信公眾平臺開發】傳送模板訊息
阿新 • • 發佈:2018-12-19
post資料示例如下:
{ "touser":"OPENID", "template_id":"TEMPLATEID", "data":{ "first": { "value":"恭喜你購買成功!", "color":"#173177" }, "product":{ "value":"巧克力", "color":"#173177" }, "amount": { "value":"39.8元", "color":"#173177" }, "time": { "value":"2014年9月22日", "color":"#173177" }, "remark":{ "value":"歡迎再次購買!", "color":"#173177" } } }
但是template_id和openid怎麼獲取呢 三、微信公眾平臺提供了公眾平臺測試賬號,有許可權限制的介面都可以在這裡測試 1、介面測試號申請: URL是啟動你自己的專案後某個介面的請求地址,但要是外網的地址;Token是自己隨意寫的。 URL如果沒有自己的地址,沒關係,可以使用nettools,做內網穿透,對映到本地80埠即可: 2、掃描關注二維碼,模擬使用者,微訊號為使用者openid: 3、新增模板 模板內容有填寫規則: 填寫後如下示例: 好了,到現在openid和templateid都有了,我們開始測試。 返回成功! 測試環境跑通,我們只要將需要傳的引數帶上,請求騰訊的介面,就可以完成一次模板訊息的傳送。
java後端程式碼,我們需要封裝實體:
@Data
public class WxTemplateDomain implements Serializable {
private String toUser;
private String templateId;
private String url;
private Map<String, TemplateParam> data;
}
@Data public class TemplateParam { private String value; private String color; }
然後在邏輯處理service層呼叫騰訊介面:
public static final String TEMPLATE_URL = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=";
/**
* 傳送模板訊息
* @param wxTemplateDomain
* @return
*/
public JSONObject getTemplate(WxTemplateDomain wxTemplateDomain,String token){
//傳送模板訊息
String domain = JSONSerializer.toJSON(wxTemplateDomain).toString();
String result = HttpUtils.postJson(TEMPLATE_URL+token,domain);
JSONObject object = JSONObject.parseObject(result);
if (object != null) {
int errcode = object.getIntValue("errcode");
if (errcode != 0) {
throw new ApiException(1, object.getString("errmsg"));
}
}
return object;
}
在發post請求呼叫騰訊介面的時候,原來我用的是post(String url,Map<String,?>requestParam),但每次到這裡都報錯47001,JSON/xml解析錯誤,網上查了多種解答,試過後無效,所以乾脆用了postjson這種方式。