component_token.go 1.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package service
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "gitee.com/yansen_zh/wechat-oplatform-sdk/api"
  6. "gitee.com/yansen_zh/wechat-oplatform-sdk/entity"
  7. "gitee.com/yansen_zh/wechat-oplatform-sdk/utils/request"
  8. )
  9. // ComponentTokenParam 获取令牌参数
  10. type ComponentTokenParam struct {
  11. ComponentAppId string `json:"component_appid"`
  12. ComponentAppSecret string `json:"component_appsecret"`
  13. ComponentVerifyTicket string `json:"component_verify_ticket"`
  14. }
  15. // ComponentTokenResult 获取令牌结果
  16. type ComponentTokenResult struct {
  17. entity.Error
  18. ComponentAccessToken string `json:"component_access_token"`
  19. ExpiresIn float64 `json:"expires_in"`
  20. }
  21. // ComponentVerifyTicket 获取令牌
  22. func ComponentToken(param ComponentTokenParam) (*ComponentTokenResult, error) {
  23. if param.ComponentAppId == "" {
  24. return nil, errors.New("获取令牌 第三方平台的 appid 不能为空")
  25. }
  26. if param.ComponentAppSecret == "" {
  27. return nil, errors.New("获取令牌 第三方平台的 appsecret 不能为空")
  28. }
  29. if param.ComponentVerifyTicket == "" {
  30. return nil, errors.New("获取令牌 推送 ticket 不能为空")
  31. }
  32. data, e1 := json.Marshal(param)
  33. if e1 != nil {
  34. return nil, e1
  35. }
  36. resp, e2 := request.PostJSON(api.ComponentToken, data)
  37. if e2 != nil {
  38. return nil, e2
  39. }
  40. result := ComponentTokenResult{}
  41. if err := json.Unmarshal(resp, &result); err != nil {
  42. return nil, err
  43. }
  44. if result.Code != 0 {
  45. return &result, result.Error
  46. }
  47. return &result, nil
  48. }