附近小店
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

74 lines
2.0 KiB

  1. package weapp
  2. const (
  3. apiSendUniformMessage = "/cgi-bin/message/wxopen/template/uniform_send"
  4. )
  5. // UniformMsgData 模板消息内容
  6. type UniformMsgData map[string]UniformMsgKeyword
  7. // UniformMsgKeyword 关键字
  8. type UniformMsgKeyword struct {
  9. Value string `json:"value"`
  10. Color string `json:"color,omitempty"`
  11. }
  12. // UniformWeappTmpMsg 小程序模板消息
  13. type UniformWeappTmpMsg struct {
  14. TemplateID string `json:"template_id"`
  15. Page string `json:"page"`
  16. FormID string `json:"form_id"`
  17. Data UniformMsgData `json:"data"`
  18. EmphasisKeyword string `json:"emphasis_keyword,omitempty"`
  19. }
  20. // UniformMsgMiniprogram 小程序
  21. type UniformMsgMiniprogram struct {
  22. AppID string `json:"appid"`
  23. PagePath string `json:"pagepath"`
  24. }
  25. // UniformMpTmpMsg 公众号模板消息
  26. type UniformMpTmpMsg struct {
  27. AppID string `json:"appid"`
  28. TemplateID string `json:"template_id"`
  29. URL string `json:"url"`
  30. Miniprogram UniformMsgMiniprogram `json:"miniprogram"`
  31. Data UniformMsgData `json:"data"`
  32. }
  33. // Miniprogram 小程序
  34. type Miniprogram struct {
  35. AppID string `json:"appid"`
  36. PagePath string `json:"pagepath"`
  37. }
  38. // UniformMsgSender 统一服务消息
  39. type UniformMsgSender struct {
  40. ToUser string `json:"touser"` // 用户 openid
  41. UniformWeappTmpMsg UniformWeappTmpMsg `json:"weapp_template_msg,omitempty"`
  42. UniformMpTmpMsg UniformMpTmpMsg `json:"mp_template_msg,omitempty"`
  43. }
  44. // Send 统一服务消息
  45. //
  46. // token access_token
  47. func (msg *UniformMsgSender) Send(token string) (*CommonError, error) {
  48. api := baseURL + apiSendUniformMessage
  49. return msg.send(api, token)
  50. }
  51. func (msg *UniformMsgSender) send(api, token string) (*CommonError, error) {
  52. api, err := tokenAPI(api, token)
  53. if err != nil {
  54. return nil, err
  55. }
  56. res := new(CommonError)
  57. if err := postJSON(api, msg, res); err != nil {
  58. return nil, err
  59. }
  60. return res, nil
  61. }