package callback import ( "github.com/gofiber/fiber/v2" "github.com/break/junhong_cmp_fiber/internal/model" orderService "github.com/break/junhong_cmp_fiber/internal/service/order" "github.com/break/junhong_cmp_fiber/pkg/errors" "github.com/break/junhong_cmp_fiber/pkg/response" ) type PaymentHandler struct { orderService *orderService.Service } func NewPaymentHandler(orderService *orderService.Service) *PaymentHandler { return &PaymentHandler{orderService: orderService} } type WechatPayCallbackRequest struct { OrderNo string `json:"order_no" xml:"out_trade_no"` } func (h *PaymentHandler) WechatPayCallback(c *fiber.Ctx) error { var req WechatPayCallbackRequest if err := c.BodyParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } if req.OrderNo == "" { return errors.New(errors.CodeInvalidParam, "订单号不能为空") } if err := h.orderService.HandlePaymentCallback(c.UserContext(), req.OrderNo, model.PaymentMethodWechat); err != nil { return err } return response.Success(c, map[string]string{"return_code": "SUCCESS"}) } type AlipayCallbackRequest struct { OrderNo string `json:"out_trade_no" form:"out_trade_no"` } func (h *PaymentHandler) AlipayCallback(c *fiber.Ctx) error { var req AlipayCallbackRequest if err := c.BodyParser(&req); err != nil { return errors.New(errors.CodeInvalidParam, "请求参数解析失败") } if req.OrderNo == "" { return errors.New(errors.CodeInvalidParam, "订单号不能为空") } if err := h.orderService.HandlePaymentCallback(c.UserContext(), req.OrderNo, model.PaymentMethodAlipay); err != nil { return err } return c.SendString("success") }