Quellcode durchsuchen

feat: add/delete subscribe template (#449)

ZmJ vor 4 Jahren
Ursprung
Commit
b535cd116a
2 geänderte Dateien mit 115 neuen und 1 gelöschten Zeilen
  1. 60 0
      miniprogram/subscribe/subscribe.go
  2. 55 1
      officialaccount/message/subscribe.go

+ 60 - 0
miniprogram/subscribe/subscribe.go

@@ -16,6 +16,14 @@ const (
 	// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.getTemplateList.html
 	getTemplateURL = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate"
 
+	// 添加订阅模板
+	// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.addTemplate.html
+	addTemplateURL = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate"
+
+	// 删除私有模板
+	// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.deleteTemplate.html
+	delTemplateURL = "https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate"
+
 	// 统一服务消息
 	// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/uniform-message/uniformMessage.send.html
 	uniformMessageSend = "https://api.weixin.qq.com/cgi-bin/message/wxopen/template/uniform_send"
@@ -133,3 +141,55 @@ func (s *Subscribe) UniformSend(msg *UniformMessage) (err error) {
 	}
 	return util.DecodeWithCommonError(response, "UniformSend")
 }
+
+type resSubscribeAdd struct {
+	util.CommonError
+
+	TemplateID string `json:"priTmplId"`
+}
+
+// Add 添加订阅消息模板
+func (s *Subscribe) Add(ShortID string, kidList []int, sceneDesc string) (templateID string, err error) {
+	var accessToken string
+	accessToken, err = s.GetAccessToken()
+	if err != nil {
+		return
+	}
+	var msg = struct {
+		TemplateIDShort string `json:"tid"`
+		SceneDesc       string `json:"sceneDesc"`
+		KidList         []int  `json:"kidList"`
+	}{TemplateIDShort: ShortID, SceneDesc: sceneDesc, KidList: kidList}
+	uri := fmt.Sprintf("%s?access_token=%s", addTemplateURL, accessToken)
+	var response []byte
+	response, err = util.PostJSON(uri, msg)
+	if err != nil {
+		return
+	}
+	var result resSubscribeAdd
+	err = util.DecodeWithError(response, &result, "AddSubscribe")
+	if err != nil {
+		return
+	}
+	templateID = result.TemplateID
+	return
+}
+
+// Delete 删除私有模板
+func (s *Subscribe) Delete(templateID string) (err error) {
+	var accessToken string
+	accessToken, err = s.GetAccessToken()
+	if err != nil {
+		return
+	}
+	var msg = struct {
+		TemplateID string `json:"priTmplId"`
+	}{TemplateID: templateID}
+	uri := fmt.Sprintf("%s?access_token=%s", delTemplateURL, accessToken)
+	var response []byte
+	response, err = util.PostJSON(uri, msg)
+	if err != nil {
+		return
+	}
+	return util.DecodeWithCommonError(response, "DeleteSubscribe")
+}

+ 55 - 1
officialaccount/message/subscribe.go

@@ -10,6 +10,8 @@ import (
 const (
 	subscribeSendURL         = "https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend"
 	subscribeTemplateListURL = "https://api.weixin.qq.com/wxaapi/newtmpl/gettemplate"
+	subscribeTemplateAddURL  = "https://api.weixin.qq.com/wxaapi/newtmpl/addtemplate"
+	subscribeTemplateDelURL  = "https://api.weixin.qq.com/wxaapi/newtmpl/deltemplate"
 )
 
 //Subscribe 订阅消息
@@ -84,10 +86,62 @@ func (tpl *Subscribe) List() (templateList []*PrivateSubscribeItem, err error) {
 		return
 	}
 	var res resPrivateSubscribeList
-	err = util.DecodeWithError(response, &res, "ListSubscription")
+	err = util.DecodeWithError(response, &res, "ListSubscribe")
 	if err != nil {
 		return
 	}
 	templateList = res.SubscriptionList
 	return
 }
+
+type resSubscribeAdd struct {
+	util.CommonError
+
+	TemplateID string `json:"priTmplId"`
+}
+
+// Add 添加订阅消息模板
+func (tpl *Subscribe) Add(ShortID string, kidList []int, sceneDesc string) (templateID string, err error) {
+	var accessToken string
+	accessToken, err = tpl.GetAccessToken()
+	if err != nil {
+		return
+	}
+	var msg = struct {
+		TemplateIDShort string `json:"tid"`
+		SceneDesc       string `json:"sceneDesc"`
+		KidList         []int  `json:"kidList"`
+	}{TemplateIDShort: ShortID, SceneDesc: sceneDesc, KidList: kidList}
+	uri := fmt.Sprintf("%s?access_token=%s", subscribeTemplateAddURL, accessToken)
+	var response []byte
+	response, err = util.PostJSON(uri, msg)
+	if err != nil {
+		return
+	}
+	var result resSubscribeAdd
+	err = util.DecodeWithError(response, &result, "AddSubscribe")
+	if err != nil {
+		return
+	}
+	templateID = result.TemplateID
+	return
+}
+
+// Delete 删除私有模板
+func (tpl *Subscribe) Delete(templateID string) (err error) {
+	var accessToken string
+	accessToken, err = tpl.GetAccessToken()
+	if err != nil {
+		return
+	}
+	var msg = struct {
+		TemplateID string `json:"priTmplId"`
+	}{TemplateID: templateID}
+	uri := fmt.Sprintf("%s?access_token=%s", subscribeTemplateDelURL, accessToken)
+	var response []byte
+	response, err = util.PostJSON(uri, msg)
+	if err != nil {
+		return
+	}
+	return util.DecodeWithCommonError(response, "DeleteSubscribe")
+}