S SmartDocs
Serie: Bridget java 58 righe · Aggiornato 2026-04-18

BankClient.java

Bridget/payment_solutions/src/main/java/com/checkout/payment/gateway/client/BankClient.java

package com.checkout.payment.gateway.client;

import com.checkout.payment.gateway.exception.BankServiceException;
import com.checkout.payment.gateway.model.BankRequest;
import com.checkout.payment.gateway.model.BankResponse;
import io.github.resilience4j.circuitbreaker.annotation.CircuitBreaker;
import io.github.resilience4j.retry.annotation.Retry;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.HttpServerErrorException;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;

@Component
public class BankClient {

    private static final Logger LOG = LoggerFactory.getLogger(BankClient.class);

    private final RestTemplate restTemplate;
    private final String bankUrl;

    public BankClient(RestTemplate restTemplate,
                      @Value("${bank.simulator.url}") String bankUrl) {
        this.restTemplate = restTemplate;
        this.bankUrl = bankUrl;
    }

    @Retry(name = "bank")
    @CircuitBreaker(name = "bank")
    public BankResponse processPayment(BankRequest request) {
        String url = bankUrl + "/payments";
        LOG.info("Calling acquiring bank at {} (card and CVV not logged)", url);

        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<BankRequest> entity = new HttpEntity<>(request, headers);

        try {
            ResponseEntity<BankResponse> response =
                    restTemplate.postForEntity(url, entity, BankResponse.class);
            LOG.info("Bank responded with HTTP {}", response.getStatusCode());
            return response.getBody();
        } catch (HttpServerErrorException e) {
            LOG.error("Bank returned server error: {}", e.getStatusCode());
            throw new BankServiceException(
                    "Bank returned error status: " + e.getStatusCode(), e);
        } catch (RestClientException e) {
            LOG.error("Failed to communicate with bank: {}", e.getClass().getSimpleName());
            throw new BankServiceException("Failed to communicate with bank", e);
        }
    }
}

Articoli correlati

Bridget java Aggiornato 2026-03-30

PaymentGatewayApplication.java

PaymentGatewayApplication.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/PaymentGatewayApplication.java).

Leggi l'articolo →
Bridget java Aggiornato 2026-03-20

ApplicationConfiguration.java

ApplicationConfiguration.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/configuration/ApplicationConfiguration.java).

Leggi l'articolo →
Bridget java Aggiornato 2026-03-30

RequestResponseLogger.java

RequestResponseLogger.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/configuration/RequestResponseLogger.java).

Leggi l'articolo →
Bridget java Aggiornato 2026-04-14

PaymentGatewayController.java

PaymentGatewayController.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/controller/PaymentGatewayController.java).

Leggi l'articolo →
Bridget java Aggiornato 2026-03-20

PaymentStatus.java

PaymentStatus.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/enums/PaymentStatus.java).

Leggi l'articolo →
Bridget java Aggiornato 2026-03-29

BankErrorException.java

BankErrorException.java — java source code from the Bridget learning materials (Bridget/payment-gateway-challenge-java/src/main/java/com/checkout/payment/gateway/exception/BankErrorException.java).

Leggi l'articolo →