package main import ( "encoding/json" "fmt" "io/ioutil" "log" "net/http" ) func onSubscribe(in InWechatMsg) { openID := in.header.FromUserName log.Println(openID) } /* { "subscribe": 1, "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", "nickname": "Band", "sex": 1, "language": "zh_CN", "city": "广州", "province": "广东", "country": "中国", "headimgurl": "http://wx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "subscribe_time": 1382694957, "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" "remark": "", "groupid": 0, "tagid_list":[128,2] } */ type WechatUserInfo struct { Subscribe int32 `json:"subscribe"` OpenID string `json:"openid"` NickName string `json:"nickname"` Sex int32 `json:"sex"` Language string `json:"language"` City string `json:"city"` Province string `json:"province"` Country string `json:"country"` Avatar string `json:"headimgurl"` SubscribeTime int32 `json:"subscribe_time"` UnionID string `json:"unionid"` Remark string `json:"remark"` GroupID int32 `json:"groupid"` TagIDList []int32 `json:"tagid_list"` } func getUserInfo(openID string, lang string) (result WechatUserInfo) { url := result.getURL(openID, lang) resp, err := http.Get(url) if err != nil { } b, err := ioutil.ReadAll(resp.Body) err = json.Unmarshal(b, &result) return } func (m *WechatUserInfo) getURL(openID, lang string) string { atk, _ := GetAccessToken() u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s", atk, openID, lang) return u } func (m *WechatUserInfo) save2CRM() { }