ls před 4 roky
rodič
revize
c136da22c1
2 změnil soubory, kde provedl 53 přidání a 0 odebrání
  1. 32 0
      wechat/client.go
  2. 21 0
      wechat/structure.go

+ 32 - 0
wechat/client.go

@@ -217,6 +217,38 @@ func (wc Client) GetMenu() (menu Menu, err error) {
 	return
 }
 
+// CreateMenu 创建自定义菜单
+func (wc Client) CreateMenu(menu FormMenu) (err error) {
+	uri := BaseURL + "/cgi-bin/menu/create?"
+
+	if wc.AccessToken, err = wc.getToken(); err != nil {
+		return
+	}
+
+	args := url.Values{}
+
+	args.Add("access_token", wc.AccessToken)
+	uri += args.Encode()
+
+	var msg myth.HTTPMessage
+	msg, err = postJSON(uri, menu)
+	if err != nil {
+		return
+	}
+	jq, e := msg.JSONQuery()
+	if e != nil {
+		err = e
+		return
+	}
+	code, _ := jq.Int(`errcode`)
+	errmsg, _ := jq.String(`errmsg`)
+	if code != ErrReqOk {
+		err = errors.New(errmsg)
+	}
+
+	return
+}
+
 // GetSignPackage JS 签名
 //   uri      当前 URL
 //   nonceStr 随机字符串

+ 21 - 0
wechat/structure.go

@@ -181,6 +181,27 @@ type Menu struct {
 	Info   menuInfo `json:"selfmenu_info"`
 }
 
+type formMenuSubButton struct {
+	Type     string `json:"type,omitempty"`
+	Name     string `json:"name"`
+	Key      string `json:"key,omitempty"`
+	URL      string `json:"url,omitempty"`
+	AppID    string `json:"appid,omitempty"`
+	Pagepath string `json:"pagepath,omitempty"`
+}
+
+type formMenuInfo struct {
+	Type      string            `json:"type,omitempty"`
+	Name      string            `json:"name"`
+	Key       string            `json:"key,omitempty"`
+	SubButton formMenuSubButton `json:"sub_button,omitempty"`
+}
+
+// FormMenu menu create
+type FormMenu struct {
+	Button []formMenuInfo `json:"button"`
+}
+
 // ArticleItem article item
 type ArticleItem struct {
 	Title       string `xml:"Title" json:"Title"`