diff --git a/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/mks.go b/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/mks.go deleted file mode 100644 index 547a706..0000000 --- a/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/mks.go +++ /dev/null @@ -1,133 +0,0 @@ -package authorize - -import ( - "encoding/json" - "net/http" - "strconv" - "time" - "transfer/internal/pkg/request" -) - -func GetTokenByMKS(appId, secret string) (accessToken string, expiresIn int64, err error) { - - uri := "http://marketapi.1688sup.com/mks/open/v1/wechat/getToken" - - body := struct { - AppId string `json:"app_id"` - Secret string `json:"secret"` - }{ - AppId: appId, - Secret: secret, - } - - bodyBytes, err := json.Marshal(body) - if err != nil { - return "", 0, err - } - - h := http.Header{ - "Content-Type": []string{"application/json"}, - } - - hc := &http.Client{ - Timeout: 15 * time.Second, - Transport: &http.Transport{ - MaxIdleConns: 100, // 最大空闲连接数 - MaxIdleConnsPerHost: 20, // 每个主机的最大空闲连接数 - IdleConnTimeout: 30 * time.Second, // 空闲连接超时时间 - }, - } - - isSuccess := func(code int) bool { - return code == http.StatusOK || code == http.StatusCreated - } - - srv := request.NewService(request.WithHttpClient(hc), request.WithStatusCodeFunc(isSuccess)) - - _, respBody, err := srv.POST(uri, h, bodyBytes) - if err != nil { - return "", 0, err - } - - var response struct { - Code int `json:"code"` - Data struct { - Token string `json:"token"` - Ttl string `json:"ttl"` - } `json:"data"` - Message string `json:"message"` - } - - if err2 := json.Unmarshal(respBody, &response); err2 != nil { - return "", 0, err2 - } - - ttl, err := strconv.ParseInt(response.Data.Ttl, 10, 64) - if err != nil { - return "", 0, err - } - - return response.Data.Token, ttl, nil -} - -func GetJsapiTicketByMKS(appId, secret string) (accessToken string, expiresIn int64, err error) { - - uri := "http://marketapi.1688sup.com/mks/open/v1/wechat/getJsapiTicket" - - body := struct { - AppId string `json:"app_id"` - Secret string `json:"secret"` - }{ - AppId: appId, - Secret: secret, - } - - bodyBytes, err := json.Marshal(body) - if err != nil { - return "", 0, err - } - - h := http.Header{ - "Content-Type": []string{"application/json"}, - } - - hc := &http.Client{ - Timeout: 15 * time.Second, - Transport: &http.Transport{ - MaxIdleConns: 100, // 最大空闲连接数 - MaxIdleConnsPerHost: 20, // 每个主机的最大空闲连接数 - IdleConnTimeout: 30 * time.Second, // 空闲连接超时时间 - }, - } - - isSuccess := func(code int) bool { - return code == http.StatusOK || code == http.StatusCreated - } - - srv := request.NewService(request.WithHttpClient(hc), request.WithStatusCodeFunc(isSuccess)) - - _, respBody, err := srv.POST(uri, h, bodyBytes) - if err != nil { - return "", 0, err - } - - var response struct { - Code int `json:"code"` - Data struct { - JsapiTicket string `json:"jsapi_ticket"` - Ttl string `json:"ttl"` - } `json:"data"` - Message string `json:"message"` - } - - if err2 := json.Unmarshal(respBody, &response); err2 != nil { - return "", 0, err2 - } - - ttl, err := strconv.ParseInt(response.Data.Ttl, 10, 64) - if err != nil { - return "", 0, err - } - - return response.Data.JsapiTicket, ttl, nil -} diff --git a/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/model.go b/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/model.go deleted file mode 100644 index c16d956..0000000 --- a/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/model.go +++ /dev/null @@ -1,12 +0,0 @@ -package authorize - -type TransferConfigRequest struct { - JsapiTicket string // 有效的jsapi_ticket, - Url string // 当前网页的URL,不包含#及其后面部分 -} - -type TransferConfigResponse struct { - Timestamp int64 // 必填,生成签名的时间戳 - NonceStr string // 必填,生成签名的随机串 - Signature string // 必填,签名 -} diff --git a/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/token.go b/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/token.go deleted file mode 100644 index d4e977e..0000000 --- a/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/token.go +++ /dev/null @@ -1,135 +0,0 @@ -package authorize - -import ( - "context" - "fmt" - "github.com/carlmjohnson/requests" - "net/url" - "time" - "transfer/internal/pkg/wechat/utils" -) - -func AuthorizeUrl(_ context.Context, appId, redirectUri string) (url string) { - - baseUrl := "https://open.weixin.qq.com/connect/oauth2/authorize" - - responseType := "code" - scope := "snsapi_base" - - return baseUrl + "?appid=" + appId + "&redirect_uri=" + redirectUri + "&response_type=" + responseType + "&scope=" + scope + "#wechat_redirect" -} - -// GetOpenId 获取openid https://developers.weixin.qq.com/minigame/dev/api-backend/open-api/login/auth.code2Session.html -// https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-login/code2Session.html -func GetOpenId(ctx context.Context, appId, secret, authCode string) (openid string, err error) { - - var uv = url.Values{} - - uv.Set("appid", appId) - uv.Set("secret", secret) - uv.Set("code", authCode) - uv.Set("grant_type", "authorization_code") - - var response struct { - //错误时 - ErrCode int64 `json:"errcode"` - ErrMsg string `json:"errmsg"` - //正常情况下 - Openid string `json:"openid"` - Unionid string `json:"unionid"` - SessionKey string `json:"session_key"` - } - - baseurl := "https://api.weixin.qq.com/sns/oauth2/access_token" - - if err = requests.URL(baseurl).Params(uv).ToJSON(&response).Fetch(ctx); err != nil { - return openid, fmt.Errorf("请求异常,msg:" + err.Error()) - } - - if response.ErrCode != 0 { - return openid, fmt.Errorf("请求错误,%d,%s", response.ErrCode, response.ErrMsg) - } - - return response.Openid, nil -} - -// GetToken 获取授权token https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html -func GetToken(ctx context.Context, appId, secret string) (accessToken string, expiresIn int64, err error) { - - baseurl := "https://api.weixin.qq.com/cgi-bin/token" - - var uv = url.Values{} - uv.Set("grant_type", "client_credential") - uv.Set("appid", appId) - uv.Set("secret", secret) - - type OrderResp struct { - //错误时 - ErrCode int64 `json:"errcode"` - ErrMsg string `json:"errmsg"` - //正常情况下 - ExpiresIn int64 `json:"expires_in"` - AccessToken string `json:"access_token"` - } - var response OrderResp - - err = requests.URL(baseurl).Post().Params(uv).ToJSON(&response).Fetch(ctx) - if err != nil { - return accessToken, expiresIn, fmt.Errorf("请求异常,msg:" + err.Error()) - } - - if response.ErrCode != 0 { - return accessToken, expiresIn, fmt.Errorf("请求错误,ErrCode[%d],ErrMsg[%s]", response.ErrCode, response.ErrMsg) - } - return response.AccessToken, response.ExpiresIn, nil -} - -// GetJsapiTicket https://developers.weixin.qq.com/doc/service/guide/h5/jssdk.html -func GetJsapiTicket(ctx context.Context, accessToken string) (ticket string, expiresIn int64, err error) { - - baseurl := "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + accessToken + "&type=jsapi" - - type OrderResp struct { - //错误时 - ErrCode int64 `json:"errcode"` - ErrMsg string `json:"errmsg"` - //正常情况下 - ExpiresIn int64 `json:"expires_in"` - Ticket string `json:"ticket"` - } - var response OrderResp - - err = requests.URL(baseurl).ToJSON(&response).Fetch(ctx) - if err != nil { - return accessToken, expiresIn, fmt.Errorf("请求异常,msg:" + err.Error()) - } - - if response.ErrCode != 0 { - return accessToken, expiresIn, fmt.Errorf("请求错误,ErrCode[%d],ErrMsg[%s]", response.ErrCode, response.ErrMsg) - } - return response.Ticket, response.ExpiresIn, nil -} - -// WxConfig 转账通知 @link https://developers.weixin.qq.com/doc/service/guide/h5/jssdk.html#62 -// 验证工具 https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign -func WxConfig(request *TransferConfigRequest) (response *TransferConfigResponse, err error) { - - nonceStr, err := utils.GenerateNonce() - if err != nil { - return nil, err - } - - timestamp := time.Now().Unix() - params := map[string]any{ - "noncestr": nonceStr, - "jsapi_ticket": request.JsapiTicket, - "timestamp": timestamp, - "url": request.Url, - } - - return &TransferConfigResponse{ - Timestamp: timestamp, - NonceStr: nonceStr, - Signature: utils.Sha1(utils.BuildSortedQueryString(params)), - }, nil -} diff --git a/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/token_test.go b/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/token_test.go deleted file mode 100644 index 70cdb82..0000000 --- a/plugins/wechat_redpack_v2/internal/wechat/srv/authorize/token_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package authorize - -import ( - "context" - "testing" -) - -func TestAuthorizeUrl(t *testing.T) { - // 公众号登录密码 fjxw1234 - ctx := context.Background() - appId := "wxe3bd59243545fa8a" - //redirectUri := "https://lsxdwx.access.86698.cn/" - redirectUri := "https://transferweb-pre.86698.cn/home/V8X7D5ydg5jpPE9kKZ" - url := AuthorizeUrl(ctx, appId, redirectUri) - - t.Logf("AuthorizeUrl() url = %s", url) -} - -func TestGetOpenId(t *testing.T) { - ctx := context.Background() - appId := "wxe3bd59243545fa8a" - secret := "4c9649cb998f71038e187b4c58f5fda0" - //ojbqr6HpeWKFy9Sgdx8yCmmeVJiws - openId, err := GetOpenId(ctx, appId, secret, "051d57Ha15I7ZJ0YJRGa1uDBEP1d57HM") - if err != nil { - t.Errorf("GetOpenId() error = %v", err) - return - } - t.Logf("GetOpenId() openId = %ss", openId) -} - -func TestGetToken(t *testing.T) { - appId := "wxe3bd59243545fa8a" - secret := "4c9649cb998f71038e187b4c58f5fda0" - gotAccessToken, gotExpiresIn, err := GetTokenByMKS(appId, secret) - if err != nil { - t.Errorf("GetToken() error = %v", err) - return - } - t.Logf("GetToken() gotAccessToken = %v, gotExpiresIn = %v", gotAccessToken, gotExpiresIn) -} - -func TestGetJsapiTicket(t *testing.T) { - appId := "wxe3bd59243545fa8a" - secret := "4c9649cb998f71038e187b4c58f5fda0" - ticket, gotExpiresIn, err := GetJsapiTicketByMKS(appId, secret) - if err != nil { - t.Errorf("GetToken() error = %v", err) - return - } - // O3SMpm8bG7kJnF36aXbe85Ex-xY8i_9qz8lzJov4TMdcDS_pIj_GV8TaZdrDvlvz9aoiI-8BJWGmGvRwq6RqrA - t.Logf("GetToken() ticket = %v, gotExpiresIn = %v", ticket, gotExpiresIn) -}