+6
-1
cmd/app/main.go
+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
+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
+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
+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
}