From 508ee7c0f8609397dc2873bea3ce933ed9c18c73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Mon, 20 Jun 2022 10:25:59 +0800 Subject: [PATCH] - update wechatoffice --- .../wechatoffice/cgi-bin.ticket.getticket.go | 6 +-- service/wechatoffice/cgi-bin.token.go | 6 +-- service/wechatoffice/cgi-bin.user.get.go | 6 +-- service/wechatoffice/cgi-bin.user.info.go | 6 +-- service/wechatoffice/client.go | 54 +++++-------------- service/wechatoffice/const.go | 9 ++++ .../debug.cgi-bin.ticket.check.go | 4 +- service/wechatoffice/getcallbackip.go | 6 +-- service/wechatoffice/message.template.send.go | 10 ++-- service/wechatoffice/params.go | 27 ---------- service/wechatoffice/pgsql.go | 2 +- service/wechatoffice/request.go | 35 ++++++++++++ service/wechatoffice/share.go | 4 +- service/wechatoffice/sign.go | 6 +-- service/wechatoffice/sns.jscode2session.go | 6 +-- .../wechatoffice/sns.oauth2.access_token.go | 6 +-- service/wechatoffice/sns.userinfo.go | 6 +-- 17 files changed, 93 insertions(+), 106 deletions(-) create mode 100644 service/wechatoffice/const.go delete mode 100644 service/wechatoffice/params.go create mode 100644 service/wechatoffice/request.go diff --git a/service/wechatoffice/cgi-bin.ticket.getticket.go b/service/wechatoffice/cgi-bin.ticket.getticket.go index 39cc43a2..6e4feb39 100644 --- a/service/wechatoffice/cgi-bin.ticket.getticket.go +++ b/service/wechatoffice/cgi-bin.ticket.getticket.go @@ -21,7 +21,7 @@ type CgiBinTicketGetTicketResult struct { Err error // 错误 } -func NewCgiBinTicketGetTicketResult(result CgiBinTicketGetTicketResponse, body []byte, http gorequest.Response, err error) *CgiBinTicketGetTicketResult { +func newCgiBinTicketGetTicketResult(result CgiBinTicketGetTicketResponse, body []byte, http gorequest.Response, err error) *CgiBinTicketGetTicketResult { return &CgiBinTicketGetTicketResult{Result: result, Body: body, Http: http, Err: err} } @@ -29,9 +29,9 @@ func NewCgiBinTicketGetTicketResult(result CgiBinTicketGetTicketResponse, body [ // https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html func (c *Client) CgiBinTicketGetTicket(Type string) *CgiBinTicketGetTicketResult { // request - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=%s", c.getAccessToken(), Type), map[string]interface{}{}, http.MethodGet) + request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/ticket/getticket?access_token=%s&type=%s", c.getAccessToken(), Type), map[string]interface{}{}, http.MethodGet) // 定义 var response CgiBinTicketGetTicketResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewCgiBinTicketGetTicketResult(response, request.ResponseBody, request, err) + return newCgiBinTicketGetTicketResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/cgi-bin.token.go b/service/wechatoffice/cgi-bin.token.go index 990d6bd6..1c97fc19 100644 --- a/service/wechatoffice/cgi-bin.token.go +++ b/service/wechatoffice/cgi-bin.token.go @@ -21,7 +21,7 @@ type CgiBinTokenResult struct { Err error // 错误 } -func NewCgiBinTokenResult(result CgiBinTokenResponse, body []byte, http gorequest.Response, err error) *CgiBinTokenResult { +func newCgiBinTokenResult(result CgiBinTokenResponse, body []byte, http gorequest.Response, err error) *CgiBinTokenResult { return &CgiBinTokenResult{Result: result, Body: body, Http: http, Err: err} } @@ -30,9 +30,9 @@ func NewCgiBinTokenResult(result CgiBinTokenResponse, body []byte, http goreques // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html func (c *Client) CgiBinToken() *CgiBinTokenResult { // request - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", c.getAppId(), c.getAppSecret()), map[string]interface{}{}, http.MethodGet) + request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", c.getAppId(), c.getAppSecret()), map[string]interface{}{}, http.MethodGet) // 定义 var response CgiBinTokenResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewCgiBinTokenResult(response, request.ResponseBody, request, err) + return newCgiBinTokenResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/cgi-bin.user.get.go b/service/wechatoffice/cgi-bin.user.get.go index 90e5f995..5841a362 100644 --- a/service/wechatoffice/cgi-bin.user.get.go +++ b/service/wechatoffice/cgi-bin.user.get.go @@ -23,7 +23,7 @@ type CgiBinUserGetResult struct { Err error // 错误 } -func NewCgiBinUserGetResult(result CgiBinUserGetResponse, body []byte, http gorequest.Response, err error) *CgiBinUserGetResult { +func newCgiBinUserGetResult(result CgiBinUserGetResponse, body []byte, http gorequest.Response, err error) *CgiBinUserGetResult { return &CgiBinUserGetResult{Result: result, Body: body, Http: http, Err: err} } @@ -31,9 +31,9 @@ func NewCgiBinUserGetResult(result CgiBinUserGetResponse, body []byte, http gore // https://developers.weixin.qq.com/doc/offiaccount/User_Management/Getting_a_User_List.html func (c *Client) CgiBinUserGet(nextOpenid string) *CgiBinUserGetResult { // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s", c.getAccessToken(), nextOpenid), map[string]interface{}{}, http.MethodGet) + request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/user/get?access_token=%s&next_openid=%s", c.getAccessToken(), nextOpenid), map[string]interface{}{}, http.MethodGet) // 定义 var response CgiBinUserGetResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewCgiBinUserGetResult(response, request.ResponseBody, request, err) + return newCgiBinUserGetResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/cgi-bin.user.info.go b/service/wechatoffice/cgi-bin.user.info.go index b546ff0a..935a8894 100644 --- a/service/wechatoffice/cgi-bin.user.info.go +++ b/service/wechatoffice/cgi-bin.user.info.go @@ -33,7 +33,7 @@ type CgiBinUserInfoResult struct { Err error // 错误 } -func NewCgiBinUserInfoResult(result CgiBinUserInfoResponse, body []byte, http gorequest.Response, err error) *CgiBinUserInfoResult { +func newCgiBinUserInfoResult(result CgiBinUserInfoResponse, body []byte, http gorequest.Response, err error) *CgiBinUserInfoResult { return &CgiBinUserInfoResult{Result: result, Body: body, Http: http, Err: err} } @@ -41,9 +41,9 @@ func NewCgiBinUserInfoResult(result CgiBinUserInfoResponse, body []byte, http go // https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId func (c *Client) CgiBinUserInfo(openid string) *CgiBinUserInfoResult { // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", c.getAccessToken(), openid), map[string]interface{}{}, http.MethodGet) + request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", c.getAccessToken(), openid), map[string]interface{}{}, http.MethodGet) // 定义 var response CgiBinUserInfoResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewCgiBinUserInfoResult(response, request.ResponseBody, request, err) + return newCgiBinUserInfoResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/client.go b/service/wechatoffice/client.go index 8876e4ca..1635c6bb 100644 --- a/service/wechatoffice/client.go +++ b/service/wechatoffice/client.go @@ -19,28 +19,30 @@ type ConfigClient struct { // Client 微信公众号服务 type Client struct { - client *gorequest.App // 请求客户端 - log *golog.Api // 日志服务 - logTableName string // 日志表名 - logStatus bool // 日志状态 - config *ConfigClient // 配置 + client *gorequest.App // 请求客户端 + log *golog.ApiClient // 日志服务 + logStatus bool // 日志状态 + config *ConfigClient // 配置 } -func NewClient(config *ConfigClient) *Client { +func NewClient(config *ConfigClient) (*Client, error) { + var err error c := &Client{config: config} c.client = gorequest.NewHttp() if c.config.PgsqlDb != nil { c.logStatus = true - c.logTableName = "wechatoffice" - c.log = golog.NewApi(&golog.ApiConfig{ + c.log, err = golog.NewApiClient(&golog.ConfigApiClient{ Db: c.config.PgsqlDb, - TableName: c.logTableName, + TableName: logTable, }) + if err != nil { + return nil, err + } } - return c + return c, nil } // ConfigApp 配置 @@ -49,35 +51,3 @@ func (c *Client) ConfigApp(appId, appSecret string) *Client { c.config.AppSecret = appSecret return c } - -// 请求接口 -func (c *Client) request(url string, params map[string]interface{}, method string) (resp gorequest.Response, err error) { - - // 创建请求 - client := c.client - - // 设置请求地址 - client.SetUri(url) - - // 设置方式 - client.SetMethod(method) - - // 设置格式 - client.SetContentTypeJson() - - // 设置参数 - client.SetParams(params) - - // 发起请求 - request, err := client.Request() - if err != nil { - return gorequest.Response{}, err - } - - // 日志 - if c.logStatus == true { - go c.postgresqlLog(request) - } - - return request, err -} diff --git a/service/wechatoffice/const.go b/service/wechatoffice/const.go new file mode 100644 index 00000000..445164cb --- /dev/null +++ b/service/wechatoffice/const.go @@ -0,0 +1,9 @@ +package wechatoffice + +const ( + apiUrl = "https://api.weixin.qq.com" +) + +const ( + logTable = "wechatoffice" +) diff --git a/service/wechatoffice/debug.cgi-bin.ticket.check.go b/service/wechatoffice/debug.cgi-bin.ticket.check.go index f8a0c118..25162fb5 100644 --- a/service/wechatoffice/debug.cgi-bin.ticket.check.go +++ b/service/wechatoffice/debug.cgi-bin.ticket.check.go @@ -19,7 +19,7 @@ type DebugCgiBinTicketCheckResult struct { Err error // 错误 } -func NewDebugCgiBinTicketCheckResult(result DebugCgiBinTicketCheckResponse, body []byte, http gorequest.Response, err error) *DebugCgiBinTicketCheckResult { +func newDebugCgiBinTicketCheckResult(result DebugCgiBinTicketCheckResponse, body []byte, http gorequest.Response, err error) *DebugCgiBinTicketCheckResult { return &DebugCgiBinTicketCheckResult{Result: result, Body: body, Http: http, Err: err} } @@ -31,5 +31,5 @@ func (c *Client) DebugCgiBinTicketCheck() *DebugCgiBinTicketCheckResult { // 定义 var response DebugCgiBinTicketCheckResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewDebugCgiBinTicketCheckResult(response, request.ResponseBody, request, err) + return newDebugCgiBinTicketCheckResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/getcallbackip.go b/service/wechatoffice/getcallbackip.go index 0bc945b0..8f30599a 100644 --- a/service/wechatoffice/getcallbackip.go +++ b/service/wechatoffice/getcallbackip.go @@ -18,7 +18,7 @@ type GetCallBackIpResult struct { Err error // 错误 } -func NewGetCallBackIpResult(result GetCallBackIpResponse, body []byte, http gorequest.Response, err error) *GetCallBackIpResult { +func newGetCallBackIpResult(result GetCallBackIpResponse, body []byte, http gorequest.Response, err error) *GetCallBackIpResult { return &GetCallBackIpResult{Result: result, Body: body, Http: http, Err: err} } @@ -27,9 +27,9 @@ func NewGetCallBackIpResult(result GetCallBackIpResponse, body []byte, http gore // https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_the_WeChat_server_IP_address.html#2.%20%E8%8E%B7%E5%8F%96%E5%BE%AE%E4%BF%A1callback%20IP%E5%9C%B0%E5%9D%80 func (c *Client) GetCallBackIp() *GetCallBackIpResult { // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=%s", c.getAccessToken()), map[string]interface{}{}, http.MethodGet) + request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/getcallbackip?access_token=%s", c.getAccessToken()), map[string]interface{}{}, http.MethodGet) // 定义 var response GetCallBackIpResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewGetCallBackIpResult(response, request.ResponseBody, request, err) + return newGetCallBackIpResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/message.template.send.go b/service/wechatoffice/message.template.send.go index f6e3417b..dbed4fb9 100644 --- a/service/wechatoffice/message.template.send.go +++ b/service/wechatoffice/message.template.send.go @@ -20,19 +20,19 @@ type MessageTemplateSendResult struct { Err error // 错误 } -func NewMessageTemplateSendResult(result MessageTemplateSendResponse, body []byte, http gorequest.Response, err error) *MessageTemplateSendResult { +func newMessageTemplateSendResult(result MessageTemplateSendResponse, body []byte, http gorequest.Response, err error) *MessageTemplateSendResult { return &MessageTemplateSendResult{Result: result, Body: body, Http: http, Err: err} } // MessageTemplateSend 模板消息 // https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html -func (c *Client) MessageTemplateSend(notMustParams ...Params) *MessageTemplateSendResult { +func (c *Client) MessageTemplateSend(notMustParams ...gorequest.Params) *MessageTemplateSendResult { // 参数 - params := c.NewParamsWith(notMustParams...) + params := gorequest.NewParamsWith(notMustParams...) // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s", c.getAccessToken()), params, http.MethodPost) + request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/message/template/send?access_token=%s", c.getAccessToken()), params, http.MethodPost) // 定义 var response MessageTemplateSendResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewMessageTemplateSendResult(response, request.ResponseBody, request, err) + return newMessageTemplateSendResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/params.go b/service/wechatoffice/params.go deleted file mode 100644 index 2d3a6a3d..00000000 --- a/service/wechatoffice/params.go +++ /dev/null @@ -1,27 +0,0 @@ -package wechatoffice - -// Params 请求参数 -type Params map[string]interface{} - -func NewParams() Params { - p := make(Params) - return p -} - -func (c *Client) NewParamsWith(params ...Params) Params { - p := make(Params) - for _, v := range params { - p.SetParams(v) - } - return p -} - -func (p Params) Set(key string, value interface{}) { - p[key] = value -} - -func (p Params) SetParams(params Params) { - for key, value := range params { - p[key] = value - } -} diff --git a/service/wechatoffice/pgsql.go b/service/wechatoffice/pgsql.go index c8ea71cf..6764fcc2 100644 --- a/service/wechatoffice/pgsql.go +++ b/service/wechatoffice/pgsql.go @@ -16,7 +16,7 @@ func (c *Client) postgresqlLog(request gorequest.Response) { RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口 RequestMethod: request.RequestMethod, //【请求】方式 RequestParams: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestParams)), //【请求】参数 - RequestHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestHeader)), //【返回】头部 + RequestHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestHeader)), //【请求】头部 ResponseHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.ResponseHeader)), //【返回】头部 ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码 ResponseBody: request.ResponseBody, //【返回】内容 diff --git a/service/wechatoffice/request.go b/service/wechatoffice/request.go new file mode 100644 index 00000000..3797e069 --- /dev/null +++ b/service/wechatoffice/request.go @@ -0,0 +1,35 @@ +package wechatoffice + +import "go.dtapp.net/library/utils/gorequest" + +// 请求接口 +func (c *Client) request(url string, params map[string]interface{}, method string) (gorequest.Response, error) { + + // 创建请求 + client := c.client + + // 设置请求地址 + client.SetUri(url) + + // 设置方式 + client.SetMethod(method) + + // 设置格式 + client.SetContentTypeJson() + + // 设置参数 + client.SetParams(params) + + // 发起请求 + request, err := client.Request() + if err != nil { + return gorequest.Response{}, err + } + + // 日志 + if c.logStatus == true { + go c.postgresqlLog(request) + } + + return request, err +} diff --git a/service/wechatoffice/share.go b/service/wechatoffice/share.go index 5d781734..8fb2dff8 100644 --- a/service/wechatoffice/share.go +++ b/service/wechatoffice/share.go @@ -22,7 +22,7 @@ type ShareResult struct { Err error // 错误 } -func NewShareResult(result ShareResponse, err error) *ShareResult { +func newShareResult(result ShareResponse, err error) *ShareResult { return &ShareResult{Result: result, Err: err} } @@ -38,5 +38,5 @@ func (c *Client) Share(url string) *ShareResult { t := sha1.New() _, err := io.WriteString(t, response.RawString) response.Signature = fmt.Sprintf("%x", t.Sum(nil)) - return NewShareResult(response, err) + return newShareResult(response, err) } diff --git a/service/wechatoffice/sign.go b/service/wechatoffice/sign.go index 2a6d1718..eb53fd48 100644 --- a/service/wechatoffice/sign.go +++ b/service/wechatoffice/sign.go @@ -9,13 +9,13 @@ func (c *Client) pkcs7Unpaid(data []byte, blockSize int) ([]byte, error) { if len(data)%blockSize != 0 || len(data) == 0 { return nil, errors.New("invalid PKCS7 data") } - c := data[len(data)-1] - n := int(c) + d := data[len(data)-1] + n := int(d) if n == 0 || n > len(data) { return nil, errors.New("invalid padding on input") } for i := 0; i < n; i++ { - if data[len(data)-n+i] != c { + if data[len(data)-n+i] != d { return nil, errors.New("invalid padding on input") } } diff --git a/service/wechatoffice/sns.jscode2session.go b/service/wechatoffice/sns.jscode2session.go index b83783a4..2a2dd3e8 100644 --- a/service/wechatoffice/sns.jscode2session.go +++ b/service/wechatoffice/sns.jscode2session.go @@ -22,15 +22,15 @@ type SnsJsCode2sessionResult struct { Err error // 错误 } -func NewSnsJsCode2sessionResult(result SnsJsCode2sessionResponse, body []byte, http gorequest.Response, err error) *SnsJsCode2sessionResult { +func newSnsJsCode2sessionResult(result SnsJsCode2sessionResponse, body []byte, http gorequest.Response, err error) *SnsJsCode2sessionResult { return &SnsJsCode2sessionResult{Result: result, Body: body, Http: http, Err: err} } func (c *Client) SnsJsCode2session(jsCode string) *SnsJsCode2sessionResult { // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", c.getAppId(), c.getAppSecret(), jsCode), map[string]interface{}{}, http.MethodGet) + request, err := c.request(fmt.Sprintf(apiUrl+"/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", c.getAppId(), c.getAppSecret(), jsCode), map[string]interface{}{}, http.MethodGet) // 定义 var response SnsJsCode2sessionResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewSnsJsCode2sessionResult(response, request.ResponseBody, request, err) + return newSnsJsCode2sessionResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/sns.oauth2.access_token.go b/service/wechatoffice/sns.oauth2.access_token.go index 24a0171f..570ad1db 100644 --- a/service/wechatoffice/sns.oauth2.access_token.go +++ b/service/wechatoffice/sns.oauth2.access_token.go @@ -22,7 +22,7 @@ type SnsOauth2AccessTokenResult struct { Err error // 错误 } -func NewSnsOauth2AccessTokenResult(result SnsOauth2AccessTokenResponse, body []byte, http gorequest.Response, err error) *SnsOauth2AccessTokenResult { +func newSnsOauth2AccessTokenResult(result SnsOauth2AccessTokenResponse, body []byte, http gorequest.Response, err error) *SnsOauth2AccessTokenResult { return &SnsOauth2AccessTokenResult{Result: result, Body: body, Http: http, Err: err} } @@ -30,9 +30,9 @@ func NewSnsOauth2AccessTokenResult(result SnsOauth2AccessTokenResponse, body []b // https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#0 func (c *Client) SnsOauth2AccessToken(code string) *SnsOauth2AccessTokenResult { // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", c.getAppId(), c.getAppSecret(), code), map[string]interface{}{}, http.MethodGet) + request, err := c.request(fmt.Sprintf(apiUrl+"/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", c.getAppId(), c.getAppSecret(), code), map[string]interface{}{}, http.MethodGet) // 定义 var response SnsOauth2AccessTokenResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewSnsOauth2AccessTokenResult(response, request.ResponseBody, request, err) + return newSnsOauth2AccessTokenResult(response, request.ResponseBody, request, err) } diff --git a/service/wechatoffice/sns.userinfo.go b/service/wechatoffice/sns.userinfo.go index 0383ab4f..c1df36a6 100644 --- a/service/wechatoffice/sns.userinfo.go +++ b/service/wechatoffice/sns.userinfo.go @@ -26,7 +26,7 @@ type SnsUserinfoResult struct { Err error // 错误 } -func NewSnsUserinfoResult(result SnsUserinfoResponse, body []byte, http gorequest.Response, err error) *SnsUserinfoResult { +func newSnsUserinfoResult(result SnsUserinfoResponse, body []byte, http gorequest.Response, err error) *SnsUserinfoResult { return &SnsUserinfoResult{Result: result, Body: body, Http: http, Err: err} } @@ -34,9 +34,9 @@ func NewSnsUserinfoResult(result SnsUserinfoResponse, body []byte, http goreques // https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#0 func (c *Client) SnsUserinfo(accessToken, openid string) *SnsUserinfoResult { // 请求 - request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN", accessToken, openid), map[string]interface{}{}, http.MethodGet) + request, err := c.request(fmt.Sprintf(apiUrl+"/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN", accessToken, openid), map[string]interface{}{}, http.MethodGet) // 定义 var response SnsUserinfoResponse err = json.Unmarshal(request.ResponseBody, &response) - return NewSnsUserinfoResult(response, request.ResponseBody, request, err) + return newSnsUserinfoResult(response, request.ResponseBody, request, err) }