From 6adcce148007f9b7ecc643e504cdfb07d045f9c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E4=BF=8A=E5=AE=8F?= <389838709@qq.com> Date: Tue, 6 Aug 2024 11:19:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9B=9E=E8=B0=83=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controllers/front/payment_controller.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/app/http/controllers/front/payment_controller.go b/app/http/controllers/front/payment_controller.go index 5f58686..4613a93 100644 --- a/app/http/controllers/front/payment_controller.go +++ b/app/http/controllers/front/payment_controller.go @@ -12,7 +12,6 @@ import ( "github.com/go-pay/gopay" "github.com/go-pay/gopay/alipay" "github.com/go-pay/gopay/wechat/v3" - "github.com/go-pay/xlog" "github.com/qit-team/snow-core/log/logger" "strconv" @@ -26,6 +25,7 @@ func WxCallback(c *gin.Context) { logger.Info(c, "WxCallback-回调数据payChannelId", payChannelId) if payChannelId == "" { c.String(http.StatusBadRequest, "%s", "fail") + return } // 查询应用下的支付配置 @@ -36,10 +36,12 @@ func WxCallback(c *gin.Context) { if code == errorcode.PayChannelNotFound { logger.Error(c, "AliCallback-回调数据未获取到支付配置,404") c.String(http.StatusBadRequest, "%s", "fail") + return } if payChannelModel.ChannelType != common.PAY_CHANNEL_WECHAT_H5 { logger.Error(c, "WxCallback-回调数据解析支付配置错误,查询的数据不是当前渠道") c.String(http.StatusBadRequest, "%s", "fail") + return } var wxConfig paymentService.WxPay @@ -47,22 +49,26 @@ func WxCallback(c *gin.Context) { if err != nil { logger.Error(c, "WxCallback-回调数据解析支付配置错误", fmt.Sprintf("错误原因:%s", err.Error())) c.String(http.StatusBadRequest, "%s", "fail") + return } if wxConfig.ApiV3Key == "" || wxConfig.MchId == "" || wxConfig.PrivateKey == "" || wxConfig.SerialNo == "" { logger.Error(c, "WxCallback-回调数据解析支付配置错误,解析出来的信息为空") c.String(http.StatusBadRequest, "%s", "fail") + return } wxConfig.AppId = payChannelModel.AppId notifyReq, err := wechat.V3ParseNotify(c.Request) if err != nil { logger.Error(c, "WxCallback-回调数据验签失败", err.Error()) + c.String(http.StatusBadRequest, "%s", "fail") return } err = paymentService.WxPayCallBack(notifyReq, wxConfig) if err != nil { logger.Error(c, "WxCallback-回调执行失败,失败原因:", err.Error()) + c.String(http.StatusBadRequest, "%s", "fail") return } @@ -70,6 +76,7 @@ func WxCallback(c *gin.Context) { // 退款通知http应答码为200且返回状态码为SUCCESS才会当做商户接收成功,否则会重试。 // 注意:重试过多会导致微信支付端积压过多通知而堵塞,影响其他正常通知。 c.JSON(http.StatusOK, &wechat.V3NotifyRsp{Code: gopay.SUCCESS, Message: "成功"}) + return } // AliCallback 支付宝支付回调 @@ -79,6 +86,7 @@ func AliCallback(c *gin.Context) { logger.Info(c, "AliCallback-回调数据APPID", payChannelId) if payChannelId == "" { c.String(http.StatusBadRequest, "%s", "fail") + return } // 查询应用下的支付配置 var payChannelModel paychannelmodel.PayChannel @@ -88,10 +96,12 @@ func AliCallback(c *gin.Context) { if code == errorcode.PayChannelNotFound { logger.Error(c, "AliCallback-回调数据未获取到支付配置,404") c.String(http.StatusBadRequest, "%s", "fail") + return } if payChannelModel.ChannelType != common.PAY_CHANNEL_ALIPAY_WEB { logger.Error(c, "AliCallback-回调数据解析支付配置错误,查询的数据不是当前渠道") c.String(http.StatusBadRequest, "%s", "fail") + return } var aliConfig paymentService.AliPay @@ -105,10 +115,12 @@ func AliCallback(c *gin.Context) { if err != nil { logger.Error(c, "AliCallback-回调数据解析支付配置错误", fmt.Sprintf("错误原因:%s", err.Error())) c.String(http.StatusBadRequest, "%s", "fail") + return } if aliConfigModel.AlipayPublicCert == "" || aliConfigModel.PrivateKey == "" || aliConfigModel.AppPublicCert == "" || aliConfigModel.AlipayRootCert == "" { logger.Error(c, "AliCallback-回调数据解析支付配置错误,解析出来的信息为空") c.String(http.StatusBadRequest, "%s", "fail") + return } aliConfig.AppId = payChannelModel.AppId aliConfig.PrivateKey = aliConfigModel.PrivateKey @@ -118,14 +130,16 @@ func AliCallback(c *gin.Context) { notifyReq, err := alipay.ParseNotifyToBodyMap(c.Request) // c.Request 是 gin 框架的写法 if err != nil { - xlog.Error(err) + c.String(http.StatusBadRequest, "%s", "fail") return } err = paymentService.ALiCallBack(notifyReq, aliConfig) if err != nil { logger.Error(c, "AliCallback-回调执行失败,失败原因:", err.Error()) + c.String(http.StatusBadRequest, "%s", "fail") return } c.String(http.StatusOK, "%s", "success") + return }