package controller import ( "context" "video-factory/common" "video-factory/shortdrama/model/dto" "video-factory/shortdrama/service" "github.com/gogf/gf/v2/frame/g" ) type paymentOrder struct{} var PaymentOrder = new(paymentOrder) func (c *paymentOrder) Prepay(ctx context.Context, req *dto.PrepayReq) (res *dto.PrepayRes, err error) { r := g.RequestFromCtx(ctx) userId := common.GetUserId(r) orderType := req.OrderType if orderType == "" { orderType = "recharge" } order, codeUrl, prepayJson, redirectUrl, err := service.PaymentService.Prepay(ctx, userId, req.Amount, req.Channel, orderType, req.Duration) if err != nil { return nil, err } return &dto.PrepayRes{ OrderNo: order.OrderNo, Channel: order.Channel, CodeUrl: codeUrl, PrepayJson: prepayJson, RedirectUrl: redirectUrl, }, nil } func (c *paymentOrder) Status(ctx context.Context, req *dto.PaymentStatusReq) (res *dto.PaymentStatusRes, err error) { status, amount, err := service.PaymentService.GetStatus(ctx, req.OrderNo) if err != nil { return nil, err } return &dto.PaymentStatusRes{OrderNo: req.OrderNo, Status: status, Amount: amount}, nil } func (c *paymentOrder) List(ctx context.Context, req *dto.ListPaymentOrderReq) (res *dto.ListPaymentOrderRes, err error) { r := g.RequestFromCtx(ctx) userId := common.GetUserId(r) list, total, err := service.PaymentService.ListOrders(ctx, userId, req.Page, req.PageSize) if err != nil { return nil, err } return &dto.ListPaymentOrderRes{List: list, Total: total}, nil } func (c *paymentOrder) ConfirmOffline(ctx context.Context, req *dto.ConfirmOfflineReq) (res *dto.ConfirmOfflineRes, err error) { if err := service.PaymentService.ConfirmOffline(ctx, req.OrderNo); err != nil { return nil, err } status, _, _ := service.PaymentService.GetStatus(ctx, req.OrderNo) return &dto.ConfirmOfflineRes{OrderNo: req.OrderNo, Status: status}, nil } func (c *paymentOrder) NotifyWechat(ctx context.Context, req *struct{}) (res *struct{}, err error) { r := g.RequestFromCtx(ctx) body := r.GetBody() _ = service.PaymentService.HandleNotify(ctx, "wechat", body) r.Response.WriteString("") r.Exit() return nil, nil } func (c *paymentOrder) NotifyAlipay(ctx context.Context, req *struct{}) (res *struct{}, err error) { r := g.RequestFromCtx(ctx) body := r.GetBody() _ = service.PaymentService.HandleNotify(ctx, "alipay", body) r.Response.WriteString("success") r.Exit() return nil, nil }