From 3232ad0de35a950c401b0c26a3ec1eecedd5c72b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E5=85=89=E6=98=A5?= Date: Mon, 3 Jan 2022 11:57:55 +0800 Subject: [PATCH] update wechatminiprogram --- service/wechatminiprogram/app.go | 55 ++++++++----------- .../cgi-bin.getcallbackip.go | 12 ++-- .../cgi-bin.message.subscribe.send.go | 22 +++----- service/wechatminiprogram/cgi-bin.token.go | 12 ++-- .../cgi-bin.wxaapp.createwxaqrcode.go | 12 ++-- .../wechatminiprogram/sns.jscode2session.go | 12 ++-- .../wxa.business.getliveinfo.go | 12 ++-- .../wechatminiprogram/wxa.generate_urllink.go | 12 ++-- .../wechatminiprogram/wxa.generatescheme.go | 12 ++-- service/wechatminiprogram/wxa.getwxacode.go | 12 ++-- .../wxa.getwxacodeunlimit.go | 12 ++-- .../wechatminiprogram/wxa.query_urllink.go | 12 ++-- service/wechatminiprogram/wxa.queryscheme.go | 39 +++++++++++-- service/wechatunion/app.go | 12 ++-- 14 files changed, 141 insertions(+), 107 deletions(-) diff --git a/service/wechatminiprogram/app.go b/service/wechatminiprogram/app.go index b575e9ee..487944c7 100644 --- a/service/wechatminiprogram/app.go +++ b/service/wechatminiprogram/app.go @@ -1,14 +1,14 @@ package wechatminiprogram import ( - "bytes" "encoding/json" + "errors" "fmt" "github.com/go-redis/redis/v8" "go.mongodb.org/mongo-driver/mongo" "go.uber.org/zap" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "gorm.io/gorm" - "io/ioutil" "net/http" ) @@ -24,36 +24,25 @@ type App struct { MDb *mongo.Client // 非关系数据库服务 } -func (app *App) request(url string, params map[string]interface{}, method string) (resp []byte, err error) { - // 请求参数 - marshal, _ := json.Marshal(params) - var req *http.Request - req, err = http.NewRequest(method, url, bytes.NewReader(marshal)) - if err != nil { - return nil, err +func (app *App) request(url string, params map[string]interface{}, method string) (resp gohttp.Response, err error) { + switch method { + case http.MethodGet: + get, err := gohttp.Get(url, params) + // 日志 + if app.ZapLog != nil { + app.ZapLog.Sugar().Info(fmt.Sprintf("wechatminiprogram %s %s %s", url, get.Header, get.Body)) + } + return get, err + case http.MethodPost: + // 请求参数 + paramsStr, err := json.Marshal(params) + postJson, err := gohttp.PostJson(url, paramsStr) + // 日志 + if app.ZapLog != nil { + app.ZapLog.Sugar().Info(fmt.Sprintf("wechatminiprogram %s %s %s", url, postJson.Header, postJson.Body)) + } + return postJson, err + default: + return resp, errors.New("请求类型不支持") } - - httpClient := &http.Client{} - var response *http.Response - response, err = httpClient.Do(req) - - if err != nil { - return nil, err - } - - // 处理成功 - defer response.Body.Close() - resp, err = ioutil.ReadAll(response.Body) - - // 日志 - if app.ZapLog != nil { - app.ZapLog.Sugar().Info(fmt.Sprintf("%s %s", url, resp)) - } - - // 检查请求错误 - if response.StatusCode == 200 { - return resp, err - } - - return nil, err } diff --git a/service/wechatminiprogram/cgi-bin.getcallbackip.go b/service/wechatminiprogram/cgi-bin.getcallbackip.go index f952b53b..105e8e53 100644 --- a/service/wechatminiprogram/cgi-bin.getcallbackip.go +++ b/service/wechatminiprogram/cgi-bin.getcallbackip.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -13,11 +14,12 @@ type GetCallBackIpResponse struct { type GetCallBackIpResult struct { Result GetCallBackIpResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewGetCallBackIpResult(result GetCallBackIpResponse, body []byte, err error) *GetCallBackIpResult { - return &GetCallBackIpResult{Result: result, Body: body, Err: err} +func NewGetCallBackIpResult(result GetCallBackIpResponse, body []byte, http gohttp.Response, err error) *GetCallBackIpResult { + return &GetCallBackIpResult{Result: result, Body: body, Http: http, Err: err} } // GetCallBackIp 获取微信callback IP地址 @@ -25,9 +27,9 @@ func NewGetCallBackIpResult(result GetCallBackIpResponse, body []byte, err error // 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 (app *App) GetCallBackIp() *GetCallBackIpResult { // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=%s", app.AccessToken), map[string]interface{}{}, http.MethodGet) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=%s", app.AccessToken), map[string]interface{}{}, http.MethodGet) // 定义 var response GetCallBackIpResponse - err = json.Unmarshal(body, &response) - return NewGetCallBackIpResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewGetCallBackIpResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/cgi-bin.message.subscribe.send.go b/service/wechatminiprogram/cgi-bin.message.subscribe.send.go index 7d0c9f10..59cf6208 100644 --- a/service/wechatminiprogram/cgi-bin.message.subscribe.send.go +++ b/service/wechatminiprogram/cgi-bin.message.subscribe.send.go @@ -3,19 +3,10 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) -// SubscribeMessageSend 入参 -type SubscribeMessageSend struct { - Touser string `json:"touser"` // 接收者(用户)的 openid - TemplateId string `json:"template_id"` // 所需下发的订阅模板id - Page string `json:"page,omitempty"` // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转。 - Data map[string]interface{} `json:"data"` // 模板内容,格式形如 { "key1": { "value": any }, "key2": { "value": any } } - MiniprogramState string `json:"miniprogram_state,omitempty"` // 跳转小程序类型:developer为开发版;trial为体验版;formal为正式版;默认为正式版 - Lang string `json:"lang,omitempty"` // 进入小程序查看”的语言类型,支持zh_CN(简体中文)、en_US(英文)、zh_HK(繁体中文)、zh_TW(繁体中文),默认为zh_CN -} - type SubscribeMessageSendResponse struct { Errcode int // 错误码 Errmsg string // 错误信息 @@ -24,11 +15,12 @@ type SubscribeMessageSendResponse struct { type SubscribeMessageSendResult struct { Result SubscribeMessageSendResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewSubscribeMessageSendResult(result SubscribeMessageSendResponse, body []byte, err error) *SubscribeMessageSendResult { - return &SubscribeMessageSendResult{Result: result, Body: body, Err: err} +func NewSubscribeMessageSendResult(result SubscribeMessageSendResponse, body []byte, http gohttp.Response, err error) *SubscribeMessageSendResult { + return &SubscribeMessageSendResult{Result: result, Body: body, Http: http, Err: err} } // SubscribeMessageSend 发送订阅消息 @@ -37,9 +29,9 @@ func (app *App) SubscribeMessageSend(notMustParams ...Params) *SubscribeMessageS // 参数 params := app.NewParamsWith(notMustParams...) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 var response SubscribeMessageSendResponse - err = json.Unmarshal(body, &response) - return NewSubscribeMessageSendResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewSubscribeMessageSendResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/cgi-bin.token.go b/service/wechatminiprogram/cgi-bin.token.go index 741269a0..7f005037 100644 --- a/service/wechatminiprogram/cgi-bin.token.go +++ b/service/wechatminiprogram/cgi-bin.token.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -16,11 +17,12 @@ type AuthGetAccessTokenResponse struct { type AuthGetAccessTokenResult struct { Result AuthGetAccessTokenResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewAuthGetAccessTokenResult(result AuthGetAccessTokenResponse, body []byte, err error) *AuthGetAccessTokenResult { - return &AuthGetAccessTokenResult{Result: result, Body: body, Err: err} +func NewAuthGetAccessTokenResult(result AuthGetAccessTokenResponse, body []byte, http gohttp.Response, err error) *AuthGetAccessTokenResult { + return &AuthGetAccessTokenResult{Result: result, Body: body, Http: http, Err: err} } // AuthGetAccessToken @@ -28,9 +30,9 @@ func NewAuthGetAccessTokenResult(result AuthGetAccessTokenResponse, body []byte, // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html func (app *App) AuthGetAccessToken() *AuthGetAccessTokenResult { // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", app.AppId, app.AppSecret), map[string]interface{}{}, http.MethodGet) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", app.AppId, app.AppSecret), map[string]interface{}{}, http.MethodGet) // 定义 var response AuthGetAccessTokenResponse - err = json.Unmarshal(body, &response) - return NewAuthGetAccessTokenResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewAuthGetAccessTokenResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/cgi-bin.wxaapp.createwxaqrcode.go b/service/wechatminiprogram/cgi-bin.wxaapp.createwxaqrcode.go index e48becba..9359ada5 100644 --- a/service/wechatminiprogram/cgi-bin.wxaapp.createwxaqrcode.go +++ b/service/wechatminiprogram/cgi-bin.wxaapp.createwxaqrcode.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -16,11 +17,12 @@ type CgiBinWxaAppCreateWxaQrCodeResponse struct { type CgiBinWxaAppCreateWxaQrCodeResult struct { Result CgiBinWxaAppCreateWxaQrCodeResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewCgiBinWxaAppCreateWxaQrCodeResult(result CgiBinWxaAppCreateWxaQrCodeResponse, body []byte, err error) *CgiBinWxaAppCreateWxaQrCodeResult { - return &CgiBinWxaAppCreateWxaQrCodeResult{Result: result, Body: body, Err: err} +func NewCgiBinWxaAppCreateWxaQrCodeResult(result CgiBinWxaAppCreateWxaQrCodeResponse, body []byte, http gohttp.Response, err error) *CgiBinWxaAppCreateWxaQrCodeResult { + return &CgiBinWxaAppCreateWxaQrCodeResult{Result: result, Body: body, Http: http, Err: err} } // CgiBinWxaAppCreateWxaQrCode 获取小程序二维码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制 @@ -32,9 +34,9 @@ func (app *App) CgiBinWxaAppCreateWxaQrCode(path string, width int) *CgiBinWxaAp param.Set("width", width) params := app.NewParamsWith(param) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 var response CgiBinWxaAppCreateWxaQrCodeResponse - err = json.Unmarshal(body, &response) - return NewCgiBinWxaAppCreateWxaQrCodeResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewCgiBinWxaAppCreateWxaQrCodeResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/sns.jscode2session.go b/service/wechatminiprogram/sns.jscode2session.go index 263bef8e..c8b667af 100644 --- a/service/wechatminiprogram/sns.jscode2session.go +++ b/service/wechatminiprogram/sns.jscode2session.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -17,18 +18,19 @@ type AuthCode2SessionResponse struct { type AuthCode2SessionResult struct { Result AuthCode2SessionResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewAuthCode2SessionResult(result AuthCode2SessionResponse, body []byte, err error) *AuthCode2SessionResult { - return &AuthCode2SessionResult{Result: result, Body: body, Err: err} +func NewAuthCode2SessionResult(result AuthCode2SessionResponse, body []byte, http gohttp.Response, err error) *AuthCode2SessionResult { + return &AuthCode2SessionResult{Result: result, Body: body, Http: http, Err: err} } func (app *App) AuthCode2Session(jsCode string) *AuthCode2SessionResult { // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", app.AppId, app.AppSecret, jsCode), map[string]interface{}{}, http.MethodGet) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", app.AppId, app.AppSecret, jsCode), map[string]interface{}{}, http.MethodGet) // 定义 var response AuthCode2SessionResponse - err = json.Unmarshal(body, &response) - return NewAuthCode2SessionResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewAuthCode2SessionResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/wxa.business.getliveinfo.go b/service/wechatminiprogram/wxa.business.getliveinfo.go index 1626f56e..e5bb98ec 100644 --- a/service/wechatminiprogram/wxa.business.getliveinfo.go +++ b/service/wechatminiprogram/wxa.business.getliveinfo.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -44,11 +45,12 @@ type BusinessGetLiveInfoResponse struct { type BusinessGetLiveInfoResult struct { Result BusinessGetLiveInfoResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewBusinessGetLiveInfoResult(result BusinessGetLiveInfoResponse, body []byte, err error) *BusinessGetLiveInfoResult { - return &BusinessGetLiveInfoResult{Result: result, Body: body, Err: err} +func NewBusinessGetLiveInfoResult(result BusinessGetLiveInfoResponse, body []byte, http gohttp.Response, err error) *BusinessGetLiveInfoResult { + return &BusinessGetLiveInfoResult{Result: result, Body: body, Http: http, Err: err} } // BusinessGetLiveInfo 获取直播间列表 @@ -58,9 +60,9 @@ func (app *App) BusinessGetLiveInfo(notMustParams ...Params) *BusinessGetLiveInf // 参数 params := app.NewParamsWith(notMustParams...) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/business/getliveinfo?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/business/getliveinfo?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 var response BusinessGetLiveInfoResponse - err = json.Unmarshal(body, &response) - return NewBusinessGetLiveInfoResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewBusinessGetLiveInfoResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/wxa.generate_urllink.go b/service/wechatminiprogram/wxa.generate_urllink.go index 48a02c6b..2fb09345 100644 --- a/service/wechatminiprogram/wxa.generate_urllink.go +++ b/service/wechatminiprogram/wxa.generate_urllink.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -15,11 +16,12 @@ type WxaGenerateUrlLinkResponse struct { type WxaGenerateUrlLinkResult struct { Result WxaGenerateUrlLinkResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewWxaGenerateUrlLinkResult(result WxaGenerateUrlLinkResponse, body []byte, err error) *WxaGenerateUrlLinkResult { - return &WxaGenerateUrlLinkResult{Result: result, Body: body, Err: err} +func NewWxaGenerateUrlLinkResult(result WxaGenerateUrlLinkResponse, body []byte, http gohttp.Response, err error) *WxaGenerateUrlLinkResult { + return &WxaGenerateUrlLinkResult{Result: result, Body: body, Http: http, Err: err} } // WxaGenerateUrlLink 获取小程序 URL Link,适用于短信、邮件、网页、微信内等拉起小程序的业务场景。通过该接口,可以选择生成到期失效和永久有效的小程序链接,有数量限制,目前仅针对国内非个人主体的小程序开放 @@ -28,9 +30,9 @@ func (app *App) WxaGenerateUrlLink(notMustParams ...Params) *WxaGenerateUrlLinkR // 参数 params := app.NewParamsWith(notMustParams...) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/generate_urllink?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/generate_urllink?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 var response WxaGenerateUrlLinkResponse - err = json.Unmarshal(body, &response) - return NewWxaGenerateUrlLinkResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewWxaGenerateUrlLinkResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/wxa.generatescheme.go b/service/wechatminiprogram/wxa.generatescheme.go index 75b54347..6555ecdc 100644 --- a/service/wechatminiprogram/wxa.generatescheme.go +++ b/service/wechatminiprogram/wxa.generatescheme.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -15,11 +16,12 @@ type WxaGenerateSchemeResponse struct { type WxaGenerateSchemeResult struct { Result WxaGenerateSchemeResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewWxaGenerateSchemeResult(result WxaGenerateSchemeResponse, body []byte, err error) *WxaGenerateSchemeResult { - return &WxaGenerateSchemeResult{Result: result, Body: body, Err: err} +func NewWxaGenerateSchemeResult(result WxaGenerateSchemeResponse, body []byte, http gohttp.Response, err error) *WxaGenerateSchemeResult { + return &WxaGenerateSchemeResult{Result: result, Body: body, Http: http, Err: err} } // WxaGenerateScheme 获取小程序 scheme 码,适用于短信、邮件、外部网页、微信内等拉起小程序的业务场景。通过该接口,可以选择生成到期失效和永久有效的小程序码,有数量限制,目前仅针对国内非个人主体的小程序开放 @@ -28,9 +30,9 @@ func (app *App) WxaGenerateScheme(notMustParams ...Params) *WxaGenerateSchemeRes // 参数 params := app.NewParamsWith(notMustParams...) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/generatescheme?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/generatescheme?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 var response WxaGenerateSchemeResponse - err = json.Unmarshal(body, &response) - return NewWxaGenerateSchemeResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewWxaGenerateSchemeResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/wxa.getwxacode.go b/service/wechatminiprogram/wxa.getwxacode.go index c98a8569..4f9c4d39 100644 --- a/service/wechatminiprogram/wxa.getwxacode.go +++ b/service/wechatminiprogram/wxa.getwxacode.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -16,11 +17,12 @@ type WxaGetWxaCodeResponse struct { type WxaGetWxaCodeResult struct { Result WxaGetWxaCodeResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewWxaGetWxaCodeResult(result WxaGetWxaCodeResponse, body []byte, err error) *WxaGetWxaCodeResult { - return &WxaGetWxaCodeResult{Result: result, Body: body, Err: err} +func NewWxaGetWxaCodeResult(result WxaGetWxaCodeResponse, body []byte, http gohttp.Response, err error) *WxaGetWxaCodeResult { + return &WxaGetWxaCodeResult{Result: result, Body: body, Http: http, Err: err} } // WxaGetWxaCode 获取小程序码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制 @@ -29,9 +31,9 @@ func (app *App) WxaGetWxaCode(notMustParams ...Params) *WxaGetWxaCodeResult { // 参数 params := app.NewParamsWith(notMustParams...) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/getwxacode?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/getwxacode?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 var response WxaGetWxaCodeResponse - err = json.Unmarshal(body, &response) - return NewWxaGetWxaCodeResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewWxaGetWxaCodeResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/wxa.getwxacodeunlimit.go b/service/wechatminiprogram/wxa.getwxacodeunlimit.go index 8d78364d..ef34f5ae 100644 --- a/service/wechatminiprogram/wxa.getwxacodeunlimit.go +++ b/service/wechatminiprogram/wxa.getwxacodeunlimit.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -16,11 +17,12 @@ type WxaGetWxaCodeUnLimitResponse struct { type WxaGetWxaCodeUnLimitResult struct { Result WxaGetWxaCodeUnLimitResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewWxaGetWxaCodeUnLimitResult(result WxaGetWxaCodeUnLimitResponse, body []byte, err error) *WxaGetWxaCodeUnLimitResult { - return &WxaGetWxaCodeUnLimitResult{Result: result, Body: body, Err: err} +func NewWxaGetWxaCodeUnLimitResult(result WxaGetWxaCodeUnLimitResponse, body []byte, http gohttp.Response, err error) *WxaGetWxaCodeUnLimitResult { + return &WxaGetWxaCodeUnLimitResult{Result: result, Body: body, Http: http, Err: err} } // WxaGetWxaCodeUnLimit 获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制 @@ -29,9 +31,9 @@ func (app *App) WxaGetWxaCodeUnLimit(notMustParams ...Params) *WxaGetWxaCodeUnLi // 参数 params := app.NewParamsWith(notMustParams...) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 var response WxaGetWxaCodeUnLimitResponse - err = json.Unmarshal(body, &response) - return NewWxaGetWxaCodeUnLimitResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewWxaGetWxaCodeUnLimitResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/wxa.query_urllink.go b/service/wechatminiprogram/wxa.query_urllink.go index 2ad4c373..b1b82a97 100644 --- a/service/wechatminiprogram/wxa.query_urllink.go +++ b/service/wechatminiprogram/wxa.query_urllink.go @@ -3,6 +3,7 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) @@ -33,11 +34,12 @@ type WxaQueryUrlLinkResponse struct { type WxaQueryUrlLinkResult struct { Result WxaQueryUrlLinkResponse // 结果 Body []byte // 内容 + Http gohttp.Response // 请求 Err error // 错误 } -func NewWxaQueryUrlLinkResult(result WxaQueryUrlLinkResponse, body []byte, err error) *WxaQueryUrlLinkResult { - return &WxaQueryUrlLinkResult{Result: result, Body: body, Err: err} +func NewWxaQueryUrlLinkResult(result WxaQueryUrlLinkResponse, body []byte, http gohttp.Response, err error) *WxaQueryUrlLinkResult { + return &WxaQueryUrlLinkResult{Result: result, Body: body, Http: http, Err: err} } // WxaQueryUrlLink 查询小程序 url_link 配置,及长期有效 quota @@ -48,9 +50,9 @@ func (app *App) WxaQueryUrlLink(urlLink string) *WxaQueryUrlLinkResult { param.Set("url_link", urlLink) params := app.NewParamsWith(param) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/query_urllink?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/query_urllink?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 var response WxaQueryUrlLinkResponse - err = json.Unmarshal(body, &response) - return NewWxaQueryUrlLinkResult(response, body, err) + err = json.Unmarshal(request.Body, &response) + return NewWxaQueryUrlLinkResult(response, request.Body, request, err) } diff --git a/service/wechatminiprogram/wxa.queryscheme.go b/service/wechatminiprogram/wxa.queryscheme.go index c8614300..f7d81082 100644 --- a/service/wechatminiprogram/wxa.queryscheme.go +++ b/service/wechatminiprogram/wxa.queryscheme.go @@ -3,18 +3,47 @@ package wechatminiprogram import ( "encoding/json" "fmt" + "gopkg.in/dtapps/go-library.v3/utils/gohttp" "net/http" ) +type WxaQuerySchemeResponse struct { + Errcode int `json:"errcode"` + Errmsg string `json:"errmsg"` + SchemeInfo struct { + Appid string `json:"appid"` + Path string `json:"path"` + Query string `json:"query"` + CreateTime int `json:"create_time"` + ExpireTime int `json:"expire_time"` + EnvVersion string `json:"env_version"` + } `json:"scheme_info"` + SchemeQuota struct { + LongTimeUsed int `json:"long_time_used"` + LongTimeLimit int `json:"long_time_limit"` + } `json:"scheme_quota"` +} + +type WxaQuerySchemeResult struct { + Result WxaQuerySchemeResponse // 结果 + Body []byte // 内容 + Http gohttp.Response // 请求 + Err error // 错误 +} + +func NewWxaQuerySchemeResult(result WxaQuerySchemeResponse, body []byte, http gohttp.Response, err error) *WxaQuerySchemeResult { + return &WxaQuerySchemeResult{Result: result, Body: body, Http: http, Err: err} +} + // WxaQueryScheme 查询小程序 scheme 码,及长期有效 quota // https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/url-scheme/urlscheme.query.html -func (app *App) WxaQueryScheme(notMustParams ...Params) *BusinessGetLiveInfoResult { +func (app *App) WxaQueryScheme(notMustParams ...Params) *WxaQuerySchemeResult { // 参数 params := app.NewParamsWith(notMustParams...) // 请求 - body, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/queryscheme?access_token=%s", app.AccessToken), params, http.MethodPost) + request, err := app.request(fmt.Sprintf("https://api.weixin.qq.com/wxa/queryscheme?access_token=%s", app.AccessToken), params, http.MethodPost) // 定义 - var response BusinessGetLiveInfoResponse - err = json.Unmarshal(body, &response) - return NewBusinessGetLiveInfoResult(response, body, err) + var response WxaQuerySchemeResponse + err = json.Unmarshal(request.Body, &response) + return NewWxaQuerySchemeResult(response, request.Body, request, err) } diff --git a/service/wechatunion/app.go b/service/wechatunion/app.go index 77f8907f..25654a87 100644 --- a/service/wechatunion/app.go +++ b/service/wechatunion/app.go @@ -2,6 +2,7 @@ package wechatunion import ( "encoding/json" + "errors" "fmt" "github.com/go-redis/redis/v8" "go.mongodb.org/mongo-driver/mongo" @@ -22,21 +23,24 @@ type App struct { } func (app *App) request(url string, params map[string]interface{}, method string) (resp []byte, err error) { - if method == http.MethodGet { + switch method { + case http.MethodGet: get, err := gohttp.Get(url, params) // 日志 if app.ZapLog != nil { - app.ZapLog.Sugar().Info(fmt.Sprintf("%s %s %s", url, get.Header, get.Body)) + app.ZapLog.Sugar().Info(fmt.Sprintf("wechatunion %s %s %s", url, get.Header, get.Body)) } return get.Body, err - } else { + case http.MethodPost: // 请求参数 paramsStr, err := json.Marshal(params) postJson, err := gohttp.PostJson(url, paramsStr) // 日志 if app.ZapLog != nil { - app.ZapLog.Sugar().Info(fmt.Sprintf("%s %s %s", url, postJson.Header, postJson.Body)) + app.ZapLog.Sugar().Info(fmt.Sprintf("wechatunion %s %s %s", url, postJson.Header, postJson.Body)) } return postJson.Body, err + default: + return nil, errors.New("请求类型不支持") } }