royalrick / weapp

微信小程序服务端 SDK (for Golang)
https://pkg.go.dev/github.com/medivhzhan/weapp/v3
Apache License 2.0
1.47k stars 281 forks source link

新模板消息集成 #25

Closed AnsonCode closed 3 years ago

AnsonCode commented 5 years ago

最近微信升级了模板消息功能,什么时候能集成下呢?

`// Package template 模版消息 package subscribe

import ( // "fmt" "encoding/json" "errors" "net/http" "strings"

"github.com/medivhzhan/weapp"
"github.com/medivhzhan/weapp/util"

)

const ( sendAPI = "/cgi-bin/message/subscribe/send" )

// Message 模版消息体 type Message map[string]interface{}

// Send 发送模板消息 // // @openid 接收者(用户)的 openid // @template 所需下发的模板消息的id // @page 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 // @formID 表单提交场景下,为 submit 事件带上的 formId;支付场景下,为本次支付的 prepay_id // @data 模板内容,不填则下发空模板 // @emphasisKeyword 模板需要放大的关键词,不填则默认无放大 func Send(openid, template, page string, data Message,token string) error { api, err := util.TokenAPI(weapp.BaseURL+sendAPI, token) if err != nil { return err }

for key := range data {
    data[key] = Message{"value": data[key]}
}

body := map[string]interface{}{
    "touser":           openid,
    "template_id":      template,
    "page":             page,
    "data":             data,
}

payload, err := json.Marshal(body)
if err != nil {
    return err
}

res, err := http.Post(api, "application/json", strings.NewReader(string(payload)))
if err != nil {
    return err
}
defer res.Body.Close()

if res.StatusCode != 200 {
    err = errors.New(weapp.WeChatServerError)
    return err
}

var resp weapp.Response
if err = json.NewDecoder(res.Body).Decode(&resp); err != nil {
    return err
}
// fmt.Println("订阅消息:",api,string(payload),resp)
if resp.Errcode != 0 {
    return errors.New(resp.Errmsg)
}

return nil

} `

royalrick commented 5 years ago

请注意,小程序模板消息接口将于2020年1月10日下线,