package wx import ( "fmt" "github.com/kirinlabs/HttpRequest" "github.com/ouxuanserver/osmanthuswine/src/helper" "hudongzhuanjia/utils/define" "net/url" ) func GetCodeUrl() string { uid := helper.CreateUUID() return fmt.Sprintf(CodeUrl, define.WxAppId, url.PathEscape(RedirectUri), uid) } func GetAccessTokenUrl(code string) string { return fmt.Sprintf(AccessTokenUrl, define.WxAppId, define.Secret, code) } func GetRefreshTokenUrl(refreshToken string) string { return fmt.Sprintf(RefreshTokenUrl, define.WxAppId, refreshToken) } func GetAuthUrl(accessToken string, openid string) string { return fmt.Sprintf(AuthUrl, accessToken, openid) } func GetUserInfoUrl(accessToken string, openid string) string { return fmt.Sprintf(UserInfoUrl, accessToken, openid) } func GetTicketUrl(ticketToken string) string { return fmt.Sprintf(TicketUrl, ticketToken) } func GetTicketTokenUrl() string { return fmt.Sprintf(TicketTokenUrl, define.WxAppId, define.Secret) } /// type Token struct { AccessToken string `json:"access_token"` ExpiresIn int64 `json:"expires_in"` RefreshToken string `json:"refresh_token"` Openid string `json:"openid"` Scope string `json:"scope"` Unionid string `json:"unionid"` } func GetToken(code string) (*Token, error) { tokenUrl := GetAccessTokenUrl(code) resp, err := HttpRequest.Get(tokenUrl) if err != nil { return nil, err } token := new(Token) err = resp.Json(token) return token, err } func RefreshToken(refreshToken string) (*Token, error) { refreshUrl := GetRefreshTokenUrl(refreshToken) resp, err := HttpRequest.Get(refreshUrl) if err != nil { return nil, err } token := new(Token) err = resp.Json(token) return token, err } type ValidMessage struct { ErrCode int `json:"err_code"` ErrMsg string `json:"err_msg"` } func ValidToken(accessToken, openid string) bool { authUrl := GetAuthUrl(accessToken, openid) resp, err := HttpRequest.Get(authUrl) if err != nil { return false } msg := new(ValidMessage) err = resp.Json(msg) if err != nil { return false } if msg.ErrCode != 0 { return false } return true } type UserInfo struct { Openid string `json:"openid"` Nickname string `json:"nickname"` Sex int `json:"sex"` Province string `json:"province"` City string `json:"city"` Country string `json:"country"` Headimgurl string `json:"headimgurl"` Privilege []string `json:"privilege"` Unionid string `json:"unionid"` } func GetUserInfo(accessToken, openid string) (*UserInfo, error) { userInfoUrl := GetUserInfoUrl(accessToken, openid) resp, err := HttpRequest.Get(userInfoUrl) if err != nil { return nil, err } userInfo := new(UserInfo) err = resp.Json(userInfo) return userInfo, err } type TicketToken struct { AccessToken string `json:"access_token"` ExpiresIn int64 `json:"expires_in"` ErrCode int `json:"err_code"` ErrMsg string `json:"err_msg"` } func GetTicketToken() (*TicketToken, error) { tokenUrl := GetTicketTokenUrl() resp, err := HttpRequest.Debug(true).Get(tokenUrl) if err != nil { return nil, err } token := new(TicketToken) err = resp.Json(token) return token, err } type ApiTicket struct { ErrCode int `json:"err_code"` ErrMsg string `json:"err_msg"` Ticket string `json:"ticket"` ExpiresIn int64 `json:"expires_in"` } func GetTicket(ticketToken string) (*ApiTicket, error) { ticketUrl := GetTicketUrl(ticketToken) resp, err := HttpRequest.Debug(true).Get(ticketUrl) if err != nil { return nil, err } ticket := new(ApiTicket) err = resp.Json(ticket) return ticket, err }