mini.go 811 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package wechat
  2. import (
  3. "net/url"
  4. )
  5. func keyMini(appid string) string {
  6. return "wechat:mini:" + appid
  7. }
  8. // NewMiniClient new mini client
  9. func NewMiniClient(appID, appSecret string) *MiniClient {
  10. key := keyMini(appID)
  11. if v, ok := cache.Load(key); ok {
  12. return v.(*MiniClient)
  13. }
  14. c := &MiniClient{AppID: appID, AppSecret: appSecret}
  15. cache.Store(key, c)
  16. return c
  17. }
  18. // GetMiniOpenID get openid by code
  19. func (wc *MiniClient) GetMiniOpenID(frm FormCode) (openid string, err error) {
  20. uri := BaseURL + "/sns/jscode2session?"
  21. args := url.Values{}
  22. args.Add("grant_type", "authorization_code")
  23. args.Add("appid", wc.AppID)
  24. args.Add("secret", wc.AppSecret)
  25. args.Add("js_code", frm.Code)
  26. uri += args.Encode()
  27. var res Response
  28. if res, err = getJSON(uri); err == nil {
  29. openid = res.OpenID
  30. }
  31. return
  32. }