簡介
TNW: TypeScript(The) + Node.js(Next) + WeChat 微信公眾號開發腳手架,支援 http 模組擴充套件、支援任何 Node.js 的服務端框架(Express、NestJS、eggjs 等)
概述
微信公眾號模板訊息的使用許可權、設定所屬行業、規則、申請、新增、刪除以及大家問得比較多的問題可以參考之前寫的一篇文章,此文章到目前為止(2019.4.28) 已有 8w+的閱讀量 90+的評論 微信公眾號開發之模板訊息
同時也可以參考官方模板訊息介面文件 點選這裡
access_token
是公眾號的全域性唯一介面呼叫憑據,公眾號呼叫各介面時都需使用 access_token
獲取 access_token
詳細介紹請參考之前寫的文章
TNW 中已實現的介面
export class TemplateApi {
public static sendTemplateUrl = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s'
private static setIndustryUrl = 'https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=%s';
private static getIndustryUrl = 'https://api.weixin.qq.com/cgi-bin/template/get_industry?access_token=%s';
private static getTemplateIdUrl = 'https://api.weixin.qq.com/cgi-bin/template/api_add_template?access_token=%s';
private static delTemplateUrl = 'https://api.weixin.qq.com/cgi-bin/template/del_private_template?access_token=%s';
private static getAllTemplateUrl = 'https://api.weixin.qq.com/cgi-bin/template/get_all_private_template?access_token=%s';
/**
* 傳送模板訊息
* @param tempJson
*/
public static async send(tempJson: string) {
let accessToken = await AccessTokenApi.getAccessToken();
let url = util.format(this.sendTemplateUrl, (<AccessToken>accessToken).getAccessToken);
return HttpKit.getHttpDelegate.httpPost(url, tempJson);
}
/**
* 設定所屬行業
* @param industry_id1 公眾號模板訊息所屬行業編號
* @param industry_id2 公眾號模板訊息所屬行業編號
*/
public static async setIndustry(industry_id1: string, industry_id2: string) {
let accessToken = await AccessTokenApi.getAccessToken();
let url = util.format(this.setIndustryUrl, (<AccessToken>accessToken).getAccessToken);
return HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
"industry_id1": industry_id1,
"industry_id2": industry_id2
}));
}
/**
* 獲取設定的行業資訊
*/
public static async getIndustry() {
let accessToken = await AccessTokenApi.getAccessToken();
let url = util.format(this.getIndustryUrl, (<AccessToken>accessToken).getAccessToken);
return HttpKit.getHttpDelegate.httpGet(url);
}
/**
* 獲取模板列表
* @param templateIdShort 模板庫中模板的編號
*/
public static async getTemplateId(templateIdShort: string) {
let accessToken = await AccessTokenApi.getAccessToken();
let url = util.format(this.getTemplateIdUrl, (<AccessToken>accessToken).getAccessToken);
return HttpKit.getHttpDelegate.httpPost(url, JSON.stringify({
"template_id_short": templateIdShort
}));
}
/**
* 刪除模板
*/
public static async delTemplate() {
let accessToken = await AccessTokenApi.getAccessToken();
let url = util.format(this.delTemplateUrl, (<AccessToken>accessToken).getAccessToken);
return HttpKit.getHttpDelegate.httpGet(url);
}
/**
* 獲取模板列表
*/
public static async getAllTemplate() {
let accessToken = await AccessTokenApi.getAccessToken();
let url = util.format(this.getAllTemplateUrl, (<AccessToken>accessToken).getAccessToken);
return HttpKit.getHttpDelegate.httpGet(url);
}
複製程式碼
傳送模板訊息
Express 示例如下:
// 傳送模板訊息
app.get('/sendTemplate', (req: any, res: any) => {
let templateJson = new TemplateData().New().
setToUser("ofkJSuGtXgB8n23e-y0kqDjJLXxk").
setTemplateId("BzC8RvHu1ICOQfO4N7kp6EWz9VAbISJjV2fO5t7MiXE").
setTemplateUrl("https://gitee.com/javen205/IJPay").
add("first", "恭喜你購買成功!", "#743A3A").
add("keyword1", "IJPay 讓支付觸手可及", "#0000FF").
add("keyword1", "聚合支付公開課", "#0000FF").
add("keyword2", "免費", "#0000FF").
add("keyword3", "Javen205", "#0000FF").
add("keyword4", "2019-03-12 13:14", "#0000FF").
add("remark", "請點選詳情直接看課程直播,祝生活愉快", "#008000").
build();
console.log("templateJson", templateJson);
TemplateApi.send(templateJson).then(data => {
res.send(data);
});
});
複製程式碼
Nest 示例如下:
// 傳送模板訊息
@Get('/sendTemplate')
sendTemplate(@Req() req: Request, @Res() res: Response) {
let templateJson = new TemplateData().New().
setToUser("ofkJSuGtXgB8n23e-y0kqDjJLXxk").
setTemplateId("BzC8RvHu1ICOQfO4N7kp6EWz9VAbISJjV2fO5t7MiXE").
setTemplateUrl("https://gitee.com/javen205/IJPay").
add("first", "恭喜你購買成功!", "#743A3A").
add("keyword1", "IJPay 讓支付觸手可及", "#0000FF").
add("keyword1", "聚合支付公開課", "#0000FF").
add("keyword2", "免費", "#0000FF").
add("keyword3", "Javen205", "#0000FF").
add("keyword4", "2019-03-12 13:14", "#0000FF").
add("remark", "請點選詳情直接看課程直播,祝生活愉快", "#008000").
build();
console.log("templateJson", templateJson);
TemplateApi.send(templateJson).then(data => {
res.send(data);
});
};
複製程式碼
上面是通過封裝的實體類來構建傳送模板訊息需要的 JSON 資料,當然你也可從配置檔案、資料庫…...中讀取 JSON 資料。
預設 nest.js 底層也是使用的 express ,當然也可以替換成其他框架,nest.js 更多介紹請參考官方文件。
開源推薦
TNW
微信公眾號開發腳手架:gitee.com/javen205/TN…IJPay
讓支付觸手可及:gitee.com/javen205/IJ…- SpringBoot 微服務高效開發
mica
工具集:gitee.com/596392912/m… Avue
一款基於 vue 可配置化的神奇框架:gitee.com/smallweigit…pig
宇宙最強微服務(架構師必備):gitee.com/log4j/pigSpringBlade
完整的線上解決方案(企業開發必備):gitee.com/smallc/Spri…