package wechat import ( "fmt" "log" ) type wx_access_token_res struct { AccessToken string `json:"access_token"` ExpiresIn int `json:"expires_in"` Errcode int `json:"errcode"` Errmsg string `json:"errmsg"` } /** * 从微信api取access_token */ func GetAccessToken(appid, secret string) (wx_access_token_res, error) { url := fmt.Sprintf(ACCESS_TOKEN_API, appid, secret) data_byte, err := SendHttp("GET", url, nil) var data wx_access_token_res if err == nil { err = json.Unmarshal(data_byte, &data) if err != nil { log.Println("get access token from WX api error:", err) } if data.Errcode != 0 { log.Println("get access token from WX api fail:", data.Errcode, data.Errmsg) } } return data, err } /** * 从微信api取access_token */ func GetStableAccessToken(appid, secret string) (wx_access_token_res, error) { var err error var data wx_access_token_res p_data := map[string]interface{}{} p_data["grant_type"] = "client_credential" p_data["appid"] = appid p_data["secret"] = secret p_data["force_refresh"] = false requestDataJson, err := json.Marshal(p_data) if err != nil { log.Println("getStableAccessToken Marshal err", err) return data, err } response, err := PostJson("https://api.weixin.qq.com/cgi-bin/stable_token", requestDataJson) if err != nil { log.Println("getStableAccessToken PostJson err", err) return data, err } err = json.Unmarshal(response, &data) if err != nil { // 有错,但能解析 log.Println("getStableAccessToken Unmarshal err", err) } return data, err }