package wechat import ( "errors" "fmt" ) type wx_template_msg_res struct { Errcode int `json:"errcode"` Errmsg string `json:"errmsg"` msgid int `json:"msgid"` } func SendTemplateMessage(access_token string, touser, template_id, url string, data map[string]interface{}, client_msg_id, miniapp_appid, miniapp_pagepath string) (wx_template_msg_res, error) { var res wx_template_msg_res if touser == "" { return res, errors.New("缺少用户openid") } if template_id == "" { return res, errors.New("缺少消息模板") } if access_token == "" { return res, errors.New("缺少access token") } api_url := fmt.Sprintf(MP_TEMPLATE_MESSAGE_API, access_token) msg := map[string]interface{}{ "touser": touser, "template_id": template_id, "url": url, "data": data, } if client_msg_id != "" { msg["client_msg_id"] = client_msg_id } if miniapp_appid != "" { msg["miniprogram"] = map[string]string{ "appid": miniapp_appid, "pagepath": miniapp_pagepath, } } msg_json, err := json.Marshal(msg) if err != nil { return res, err } data_byte, err := PostJson(api_url, msg_json) if err == nil { err = json.Unmarshal(data_byte, &res) } return res, err } func SendTemplateMessageApplet(access_token string, touser, template_id string, miniprogram map[string]string, data map[string]interface{}, client_msg_id, miniapp_appid, miniapp_pagepath string) (wx_template_msg_res, error) { var res wx_template_msg_res if touser == "" { return res, errors.New("缺少用户openid") } if template_id == "" { return res, errors.New("缺少消息模板") } if access_token == "" { return res, errors.New("缺少access token") } api_url := fmt.Sprintf(MP_TEMPLATE_MESSAGE_API, access_token) msg := map[string]interface{}{ "touser": touser, "template_id": template_id, "data": data, } if len(miniprogram) > 0 { msg["miniprogram"] = miniprogram } if client_msg_id != "" { msg["client_msg_id"] = client_msg_id } if miniapp_appid != "" { msg["miniprogram"] = map[string]string{ "appid": miniapp_appid, "pagepath": miniapp_pagepath, } } msg_json, err := json.Marshal(msg) if err != nil { return res, err } data_byte, err := PostJson(api_url, msg_json) if err == nil { err = json.Unmarshal(data_byte, &res) } return res, err }