59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package miniprogram
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/go-resty/resty/v2"
|
|
)
|
|
|
|
type SendSubscribeMessageResponse struct {
|
|
Errcode int `json:"errcode"`
|
|
Errmsg string `json:"errmsg"`
|
|
}
|
|
|
|
type SendSubscribeMessageRequest struct {
|
|
Touser string `json:"touser"`
|
|
TemplateID string `json:"template_id"`
|
|
Page string `json:"page"`
|
|
MiniprogramState string `json:"miniprogram_state"`
|
|
Lang string `json:"lang"`
|
|
Data struct {
|
|
Thing1 struct {
|
|
Value string `json:"value"`
|
|
} `json:"thing1"`
|
|
Time2 struct {
|
|
Value string `json:"value"`
|
|
} `json:"time2"`
|
|
Thing4 struct {
|
|
Value string `json:"value"`
|
|
} `json:"thing4"`
|
|
} `json:"data"`
|
|
}
|
|
|
|
// SendSubscribeMessage 发送订阅消息
|
|
// DOC: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html
|
|
func SendSubscribeMessage(accessToken string, requestData *SendSubscribeMessageRequest, resultStruct interface{}) error {
|
|
response, err := resty.New().R().
|
|
ForceContentType("application/json").
|
|
SetHeader("Content-Type", "application/json").
|
|
SetBody(requestData).
|
|
SetResult(resultStruct).
|
|
Post(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=%s", accessToken))
|
|
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// 检查响应状态码
|
|
if response.IsError() {
|
|
return fmt.Errorf("服务异常(%d)", response.StatusCode())
|
|
}
|
|
|
|
// 检查响应结果
|
|
if response.Result().(*SendSubscribeMessageResponse).Errcode != 0 {
|
|
return fmt.Errorf("服务异常(%d): %s", response.Result().(*SendSubscribeMessageResponse).Errcode, response.Result().(*SendSubscribeMessageResponse).Errmsg)
|
|
}
|
|
|
|
return nil
|
|
}
|