package service import ( "context" "kra/internal/biz" "kra/internal/service/dto" ) type PaymentService struct{ uc *biz.PaymentUsecase } func NewPaymentService(uc *biz.PaymentUsecase) *PaymentService { return &PaymentService{uc: uc} } func (s *PaymentService) Configs(ctx context.Context) ([]*biz.PaymentConfig, error) { return s.uc.Configs(ctx) } func (s *PaymentService) SaveConfig(ctx context.Context, c *biz.PaymentConfig) error { return s.uc.SaveConfig(ctx, c) } func (s *PaymentService) Order(ctx context.Context, provider, tradeNo string) (*dto.PaymentOrderResponse, error) { order, err := s.uc.Order(ctx, provider, tradeNo) if err != nil { return nil, err } return &dto.PaymentOrderResponse{ Provider: order.Provider, TradeNo: order.TradeNo, ProviderTradeNo: order.ProviderTradeNo, BusinessType: order.BusinessType, BusinessID: order.BusinessID, Subject: order.Subject, PaymentMode: order.PaymentMode, OriginalAmount: order.OriginalAmount, Amount: order.Amount, PaidAmount: order.PaidAmount, PayerPaidAmount: order.PayerPaidAmount, CashPaidAmount: order.CashPaidAmount, PointPaidAmount: order.PointPaidAmount, DiscountAmount: order.DiscountAmount, ProviderDiscountAmount: order.ProviderDiscountAmount, MerchantDiscountAmount: order.MerchantDiscountAmount, SettlementAmount: order.SettlementAmount, Currency: order.Currency, PayerCurrency: order.PayerCurrency, AmountBreakdownKnown: order.AmountBreakdownKnown, PaymentStatus: order.PaymentStatus, FulfillmentStatus: order.FulfillmentStatus, RefundStatus: order.RefundStatus, RefundedAmount: order.RefundedAmount, RefundNo: order.RefundNo, CreatedAt: order.CreatedAt, UpdatedAt: order.UpdatedAt, PaidAt: order.PaidAt, FulfilledAt: order.FulfilledAt, RefundedAt: order.RefundedAt, }, nil } func (s *PaymentService) Create(ctx context.Context, req *biz.PaymentRequest) (*biz.PaymentResult, error) { return s.uc.Create(ctx, req) } func (s *PaymentService) Query(ctx context.Context, provider, tradeNo string) (*biz.PaymentResult, error) { return s.uc.Query(ctx, provider, tradeNo) } func (s *PaymentService) Refund(ctx context.Context, provider, tradeNo string, amount int64) (*biz.PaymentResult, error) { return s.uc.Refund(ctx, provider, tradeNo, amount) } func (s *PaymentService) Callback(ctx context.Context, callback *biz.PaymentCallback) (*biz.PaymentResult, error) { return s.uc.Callback(ctx, callback) }