package main import ( "encoding/json" "fmt" "io/ioutil" "log" "net/http" ) func onSubscribe(in InWechatMsg) { openID := in.header.FromUserName //getUser fromCRM info := WechatUserInfo{} info.getUserInfo(in.header.FromUserName, "zh-CN") log.Println(openID + " information get above onSubscribe") } //WechatUserInfo response for wechat user info. type WechatUserInfo struct { Subscribe int32 `json:"subscribe"` OpenID string `json:"openid"` NickName string `json:"nickname"` Sex int32 `json:"sex"` //0 未知 1 男 2 女 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 (m *WechatUserInfo) getUserInfo(openID string, lang string) { url := m.getURL(openID, lang) resp, err := http.Get(url) if err != nil { } b, err := ioutil.ReadAll(resp.Body) err = json.Unmarshal(b, m) log.Println(m) } //lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语 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() { }