redpacketcover.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package redpacketcover
  2. import (
  3. "fmt"
  4. "github.com/silenceper/wechat/v2/miniprogram/context"
  5. "github.com/silenceper/wechat/v2/util"
  6. )
  7. const (
  8. getRedPacketCoverURL = "https://api.weixin.qq.com/redpacketcover/wxapp/cover_url/get_by_token?access_token=%s"
  9. )
  10. // RedPacketCover struct
  11. type RedPacketCover struct {
  12. *context.Context
  13. }
  14. // NewRedPacketCover 实例
  15. func NewRedPacketCover(context *context.Context) *RedPacketCover {
  16. redPacketCover := new(RedPacketCover)
  17. redPacketCover.Context = context
  18. return redPacketCover
  19. }
  20. // GetRedPacketCoverRequest 获取微信红包封面参数
  21. type GetRedPacketCoverRequest struct {
  22. // openid 可领取用户的openid
  23. OpenID string `json:"openid"`
  24. // ctoken 在红包封面平台获取发放ctoken(需要指定可以发放的appid)
  25. CToken string `json:"ctoken"`
  26. }
  27. // GetRedPacketCoverResp 获取微信红包封面
  28. type GetRedPacketCoverResp struct {
  29. util.CommonError
  30. Data struct {
  31. URL string `json:"url"`
  32. } `json:"data"` // 唯一请求标识
  33. }
  34. // GetRedPacketCoverURL 获得指定用户可以领取的红包封面链接。获取参数ctoken参考微信红包封面开放平台
  35. // 文档地址: https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/red-packet-cover/getRedPacketCoverUrl.html
  36. func (cover *RedPacketCover) GetRedPacketCoverURL(coderParams GetRedPacketCoverRequest) (res GetRedPacketCoverResp, err error) {
  37. accessToken, err := cover.GetAccessToken()
  38. if err != nil {
  39. return
  40. }
  41. uri := fmt.Sprintf(getRedPacketCoverURL, accessToken)
  42. response, err := util.PostJSON(uri, coderParams)
  43. if err != nil {
  44. return
  45. }
  46. // 使用通用方法返回错误
  47. err = util.DecodeWithError(response, &res, "GetRedPacketCoverURL")
  48. return
  49. }