package payment import ( "gitea.pena/PenaSide/treasurer/internal/payment_provider" "github.com/gofiber/fiber/v2" "sync" "gitea.pena/PenaSide/treasurer/internal/errors" "gitea.pena/PenaSide/treasurer/internal/models" "go.uber.org/zap" ) type PaymentControllerDeps struct { Logger *zap.Logger PaymentProviders []payment_provider.PaymentProvider } type PaymentController struct { logger *zap.Logger paymentProviders []payment_provider.PaymentProvider providerMap map[models.PaymentType][]payment_provider.PaymentProvider mu sync.RWMutex } func NewPaymentController(deps PaymentControllerDeps) (*PaymentController, errors.Error) { if deps.Logger == nil { return nil, errors.NewWithMessage("Logger is nil on ", errors.ErrInvalidArgs) } if len(deps.PaymentProviders) == 0 { return nil, errors.NewWithMessage("No payment providers provided on ", errors.ErrInvalidArgs) } controller := &PaymentController{ logger: deps.Logger, paymentProviders: deps.PaymentProviders, providerMap: make(map[models.PaymentType][]payment_provider.PaymentProvider), } for _, provider := range deps.PaymentProviders { for _, method := range provider.GetSupportedPaymentMethods() { controller.providerMap[method] = append(controller.providerMap[method], provider) } } return controller, nil } // запросы на создание платежа func (receiver *PaymentController) createPayment(ctx *fiber.Ctx) error { return nil }