From fda1a2de0e42d45a6fb12901ff942f23ea6b07da Mon Sep 17 00:00:00 2001 From: luorijun Date: Mon, 23 Jun 2025 11:27:28 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=95=86=E7=A6=8F=E9=80=9A?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=80=9A=E7=9F=A5=E5=AD=97=E6=AE=B5=EF=BC=9B?= =?UTF-8?q?=E6=8F=90=E4=BE=9B=E4=B8=80=E4=B8=AA=E7=8E=AF=E5=A2=83=E5=8F=98?= =?UTF-8?q?=E9=87=8F=E4=BB=A5=E5=86=B3=E5=AE=9A=E6=98=AF=E5=90=A6=E6=89=93?= =?UTF-8?q?=E5=8D=B0=E5=8E=9F=E5=A7=8B=20http=20=E6=8A=A5=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/env/env.go | 30 +++++++++++++++++++++++++++++- web/globals/shangfutong.go | 24 ++++++++++++++++-------- 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/pkg/env/env.go b/pkg/env/env.go index 61548ae..34bd3b4 100644 --- a/pkg/env/env.go +++ b/pkg/env/env.go @@ -148,7 +148,8 @@ func loadRedis() { // region log var ( - LogLevel = slog.LevelDebug + LogLevel = slog.LevelDebug + LogHttpDump = false // 是否打印HTTP请求和响应的原始数据 ) func loadLog() { @@ -163,6 +164,17 @@ func loadLog() { case "error": LogLevel = slog.LevelError } + + _LogHttpDump := os.Getenv("LOG_HTTP_DUMP") + if _LogHttpDump != "" { + value, err := strconv.ParseBool(_LogHttpDump) + if err != nil { + panic("环境变量 LOG_HTTP_DUMP 的值不是布尔值") + } + LogHttpDump = value + } else { + LogHttpDump = false // 默认不打印HTTP请求和响应的原始数据 + } } // endregion @@ -355,6 +367,8 @@ var ( SftPayRouteId string SftPayAppPrivateKey string SftPayPublicKey string + SftReturnUrl *string + SftNotifyUrl *string ) func loadSftPay() { @@ -394,6 +408,20 @@ func loadSftPay() { } else { SftPayPublicKey = value } + + value = os.Getenv("SFTPAY_RETURN_URL") + if value != "" { + SftReturnUrl = &value + } else { + SftReturnUrl = nil + } + + value = os.Getenv("SFTPAY_NOTIFY_URL") + if value != "" { + SftNotifyUrl = &value + } else { + SftNotifyUrl = nil + } } // endregion diff --git a/web/globals/shangfutong.go b/web/globals/shangfutong.go index 79ddeaf..79eb712 100644 --- a/web/globals/shangfutong.go +++ b/web/globals/shangfutong.go @@ -82,12 +82,16 @@ func initSft() { func (s *SftClient) PaymentScanPay(req *PaymentScanPayReq) (*PaymentScanPayResp, error) { const url = "https://pay.rscygroup.com/api/open/payment/scanpay" + req.ReturnUrl = env.SftReturnUrl + req.NotifyUrl = env.SftNotifyUrl req.RouteNo = u.P(s.routeId) return call[PaymentScanPayResp](s, url, req) } func (s *SftClient) PaymentH5Pay(req *PaymentH5PayReq) (*PaymentH5PayResp, error) { const url = "https://pay.rscygroup.com/api/open/payment/h5pay" + req.ReturnUrl = env.SftReturnUrl + req.NotifyUrl = env.SftNotifyUrl req.RouteNo = u.P(s.routeId) return call[PaymentH5PayResp](s, url, req) } @@ -265,22 +269,26 @@ func call[T any](s *SftClient, url string, req any) (*T, error) { } request.Header.Set("Content-Type", "application/json") - reqDump, err := httputil.DumpRequest(request, true) - if err != nil { - return nil, fmt.Errorf("请求内容转储失败:%w", err) + if env.LogHttpDump == true { + reqDump, err := httputil.DumpRequest(request, true) + if err != nil { + return nil, fmt.Errorf("请求内容转储失败:%w", err) + } + println(string(reqDump) + "\n\n") } - println(string(reqDump) + "\n\n") response, err := http.DefaultClient.Do(request) if err != nil { return nil, fmt.Errorf("请求失败:%w", err) } - respDump, err := httputil.DumpResponse(response, true) - if err != nil { - return nil, fmt.Errorf("响应内容转储失败:%w", err) + if env.LogHttpDump == true { + respDump, err := httputil.DumpResponse(response, true) + if err != nil { + return nil, fmt.Errorf("响应内容转储失败:%w", err) + } + println(string(respDump) + "\n\n") } - println(string(respDump) + "\n\n") if response.StatusCode != http.StatusOK { return nil, fmt.Errorf("请求响应失败:%d", response.StatusCode)