in src/api-server/src/main/java/com/google/abmedge/apiserver/ApiServerController.java [344:367]
private Optional<String> makePayment(
PaymentType paymentType,
BigDecimal amountOnRequest,
BigDecimal totalCost,
List<PaymentUnit> payUnits)
throws IOException, InterruptedException {
String endpoint = PAYMENTS_SERVICE + PAY_EP;
BigDecimal paidAmount = paymentType == PaymentType.CARD ? totalCost : amountOnRequest;
Payment payment = new Payment(payUnits, PaymentType.CARD, paidAmount);
String jsonString = GSON.toJson(payment, Payment.class);
HttpRequest request =
HttpRequest.newBuilder()
.POST(HttpRequest.BodyPublishers.ofString(jsonString))
.uri(URI.create(endpoint))
.setHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
.build();
HttpResponse<String> response = HTTP_CLIENT.send(request, HttpResponse.BodyHandlers.ofString());
int statusCode = response.statusCode();
if (isSuccessResponse(statusCode)) {
return Optional.of(response.body());
}
LOGGER.error(String.format("Failed to process payment via '%s'", endpoint));
return Optional.empty();
}