package wechat import ( "net/url" ) func keyMini(appid string) string { return "wechat:mini:" + appid } // NewMiniClient new mini client func NewMiniClient(appID, appSecret string) *MiniClient { key := keyMini(appID) if v, ok := cache.Load(key); ok { return v.(*MiniClient) } c := &MiniClient{AppID: appID, AppSecret: appSecret} cache.Store(key, c) return c } // GetMiniOpenID get openid by code func (wc *MiniClient) GetMiniOpenID(frm FormCode) (openid string, err error) { uri := BaseURL + "/sns/jscode2session?" args := url.Values{} args.Add("grant_type", "authorization_code") args.Add("appid", wc.AppID) args.Add("secret", wc.AppSecret) args.Add("js_code", frm.Code) uri += args.Encode() var res Response if res, err = getJSON(uri); err == nil { openid = res.OpenID } return }