From 201c76b8616bcb872289496e54047407fb6cc81b Mon Sep 17 00:00:00 2001 From: Katherine Date: Wed, 8 Nov 2023 10:54:14 -0800 Subject: [PATCH] Add charge failure details to `/v1/subscription/{subscriberId}/receipt_credentials` 402 response --- .../textsecuregcm/subscriptions/StripeManager.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java b/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java index 6e24b13f8..dfa146674 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java @@ -593,7 +593,14 @@ public class StripeManager implements SubscriptionProcessorManager { throw new WebApplicationException(Status.NO_CONTENT); } if (!StringUtils.equalsIgnoreCase("paid", latestSubscriptionInvoice.getStatus())) { - throw new WebApplicationException(Status.PAYMENT_REQUIRED); + final Response.ResponseBuilder responseBuilder = Response.status(Status.PAYMENT_REQUIRED); + if (latestSubscriptionInvoice.getChargeObject() != null) { + final Charge charge = latestSubscriptionInvoice.getChargeObject(); + if (charge.getFailureCode() != null || charge.getFailureMessage() != null) { + responseBuilder.entity(Map.of("chargeFailure", createChargeFailure(charge))); + } + } + throw new WebApplicationException(responseBuilder.build()); } return getInvoiceLineItemsForInvoice(latestSubscriptionInvoice).thenCompose(invoiceLineItems -> {