diff --git a/cmd/app/main.go b/cmd/app/main.go index 9421c43..d89fcd7 100644 --- a/cmd/app/main.go +++ b/cmd/app/main.go @@ -4,6 +4,7 @@ import ( "log" "os" + "github.com/Tulkdan/payment-gateway/internal/providers" "github.com/Tulkdan/payment-gateway/internal/service" "github.com/Tulkdan/payment-gateway/internal/web" ) @@ -16,7 +17,11 @@ func getEnv(key, defaultValue string) string { } func main() { - paymentsService := service.NewPaymentService() + providers := providers.NewUseProviders([]providers.Provider{ + providers.NewBraintreeProvider(getEnv("BRAINTREE_URL", "localhost:8000")), + providers.NewStripeProvider(getEnv("STRIPE_URL", "localhost:8001")), + }) + paymentsService := service.NewPaymentService(providers) server := web.NewServer(paymentsService, "8000") server.ConfigureRouter() diff --git a/internal/providers/braintree.go b/internal/providers/braintree.go index b165d30..a10f8b7 100644 --- a/internal/providers/braintree.go +++ b/internal/providers/braintree.go @@ -39,7 +39,7 @@ type BraintreeCharge struct { func (b BraintreeProvider) Charge(request *domain.Payment) (*domain.Provider, error) { body := b.createChargeBody(request) - response, err := http.Post(b.Url, "application/json", bytes.NewBuffer(body)) + response, err := http.Post(b.Url+"/charges", "application/json", bytes.NewBuffer(body)) if err != nil { return nil, err } diff --git a/internal/providers/stripe.go b/internal/providers/stripe.go index e7f6686..799e998 100644 --- a/internal/providers/stripe.go +++ b/internal/providers/stripe.go @@ -35,7 +35,7 @@ type StripeCharge struct { func (b StripeProvider) Charge(request *domain.Payment) (*domain.Provider, error) { body := b.createChargeBody(request) - response, err := http.Post(b.Url, "application/json", bytes.NewBuffer(body)) + response, err := http.Post(b.Url+"/transactions", "application/json", bytes.NewBuffer(body)) if err != nil { return nil, err } diff --git a/internal/service/payment_service.go b/internal/service/payment_service.go index b3f635f..1e8d0ce 100644 --- a/internal/service/payment_service.go +++ b/internal/service/payment_service.go @@ -2,16 +2,18 @@ package service import ( "context" - "fmt" "github.com/Tulkdan/payment-gateway/internal/domain" "github.com/Tulkdan/payment-gateway/internal/dto" + "github.com/Tulkdan/payment-gateway/internal/providers" ) -type PaymentService struct{} +type PaymentService struct { + providers *providers.UseProviders +} -func NewPaymentService() *PaymentService { - return &PaymentService{} +func NewPaymentService(providers *providers.UseProviders) *PaymentService { + return &PaymentService{providers: providers} } func (p *PaymentService) CreatePayment(ctx context.Context, input dto.PaymentInput) (*dto.PaymentOutput, error) { @@ -20,7 +22,10 @@ func (p *PaymentService) CreatePayment(ctx context.Context, input dto.PaymentInp return nil, err } - fmt.Printf("%+v", payment) + _, err = p.providers.Payment(payment) + if err != nil { + return nil, err + } return &dto.PaymentOutput{Message: "Processed successfully"}, nil }