private Optional makePayment()

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();
  }