this repo has no description

:sparkles: using providers in service endpoint

Changed files
+18 -8
cmd
app
internal
+6 -1
cmd/app/main.go
··· 4 4 "log" 5 5 "os" 6 6 7 + "github.com/Tulkdan/payment-gateway/internal/providers" 7 8 "github.com/Tulkdan/payment-gateway/internal/service" 8 9 "github.com/Tulkdan/payment-gateway/internal/web" 9 10 ) ··· 16 17 } 17 18 18 19 func main() { 19 - paymentsService := service.NewPaymentService() 20 + providers := providers.NewUseProviders([]providers.Provider{ 21 + providers.NewBraintreeProvider(getEnv("BRAINTREE_URL", "localhost:8000")), 22 + providers.NewStripeProvider(getEnv("STRIPE_URL", "localhost:8001")), 23 + }) 24 + paymentsService := service.NewPaymentService(providers) 20 25 21 26 server := web.NewServer(paymentsService, "8000") 22 27 server.ConfigureRouter()
+1 -1
internal/providers/braintree.go
··· 39 39 40 40 func (b BraintreeProvider) Charge(request *domain.Payment) (*domain.Provider, error) { 41 41 body := b.createChargeBody(request) 42 - response, err := http.Post(b.Url, "application/json", bytes.NewBuffer(body)) 42 + response, err := http.Post(b.Url+"/charges", "application/json", bytes.NewBuffer(body)) 43 43 if err != nil { 44 44 return nil, err 45 45 }
+1 -1
internal/providers/stripe.go
··· 35 35 36 36 func (b StripeProvider) Charge(request *domain.Payment) (*domain.Provider, error) { 37 37 body := b.createChargeBody(request) 38 - response, err := http.Post(b.Url, "application/json", bytes.NewBuffer(body)) 38 + response, err := http.Post(b.Url+"/transactions", "application/json", bytes.NewBuffer(body)) 39 39 if err != nil { 40 40 return nil, err 41 41 }
+10 -5
internal/service/payment_service.go
··· 2 2 3 3 import ( 4 4 "context" 5 - "fmt" 6 5 7 6 "github.com/Tulkdan/payment-gateway/internal/domain" 8 7 "github.com/Tulkdan/payment-gateway/internal/dto" 8 + "github.com/Tulkdan/payment-gateway/internal/providers" 9 9 ) 10 10 11 - type PaymentService struct{} 11 + type PaymentService struct { 12 + providers *providers.UseProviders 13 + } 12 14 13 - func NewPaymentService() *PaymentService { 14 - return &PaymentService{} 15 + func NewPaymentService(providers *providers.UseProviders) *PaymentService { 16 + return &PaymentService{providers: providers} 15 17 } 16 18 17 19 func (p *PaymentService) CreatePayment(ctx context.Context, input dto.PaymentInput) (*dto.PaymentOutput, error) { ··· 20 22 return nil, err 21 23 } 22 24 23 - fmt.Printf("%+v", payment) 25 + _, err = p.providers.Payment(payment) 26 + if err != nil { 27 + return nil, err 28 + } 24 29 25 30 return &dto.PaymentOutput{Message: "Processed successfully"}, nil 26 31 }