client.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package kf
  2. import (
  3. "github.com/silenceper/wechat/v2/cache"
  4. "github.com/silenceper/wechat/v2/credential"
  5. "github.com/silenceper/wechat/v2/work/config"
  6. "github.com/silenceper/wechat/v2/work/context"
  7. )
  8. // Client 微信客服实例
  9. type Client struct {
  10. corpID string // 企业ID:企业开通的每个微信客服,都对应唯一的企业ID,企业可在微信客服管理后台的企业信息处查看
  11. secret string // Secret是微信客服用于校验开发者身份的访问密钥,企业成功注册微信客服后,可在「微信客服管理后台-开发配置」处获取
  12. token string // 用于生成签名校验回调请求的合法性
  13. encodingAESKey string // 回调消息加解密参数是AES密钥的Base64编码,用于解密回调消息内容对应的密文
  14. cache cache.Cache
  15. ctx *context.Context
  16. }
  17. // NewClient 初始化微信客服实例
  18. func NewClient(cfg *config.Config) (client *Client, err error) {
  19. if cfg.Cache == nil {
  20. return nil, NewSDKErr(50001)
  21. }
  22. // 初始化 AccessToken Handle
  23. defaultAkHandle := credential.NewWorkAccessToken(cfg.CorpID, cfg.CorpSecret, cfg.AgentID, credential.CacheKeyWorkPrefix, cfg.Cache)
  24. ctx := &context.Context{
  25. Config: cfg,
  26. AccessTokenHandle: defaultAkHandle,
  27. }
  28. client = &Client{
  29. corpID: cfg.CorpID,
  30. secret: cfg.CorpSecret,
  31. token: cfg.Token,
  32. encodingAESKey: cfg.EncodingAESKey,
  33. cache: cfg.Cache,
  34. ctx: ctx,
  35. }
  36. return client, nil
  37. }