component_token.go 1.4KB

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