diff --git a/pom.xml b/pom.xml
index 34f6cb7fa..d7715eca6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -79,7 +79,7 @@
3.1.0
0.1.0
2.0.17
- 28.4.0
+ 30.2.0
2.2.36
1.21.3
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 ce24f232c..243202aba 100644
--- a/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java
+++ b/service/src/main/java/org/whispersystems/textsecuregcm/subscriptions/StripeManager.java
@@ -371,7 +371,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
public Object getSubscription(String subscriptionId) {
SubscriptionRetrieveParams params = SubscriptionRetrieveParams.builder()
.addExpand("latest_invoice")
- .addExpand("latest_invoice.charge")
+ .addExpand("latest_invoice.payments")
.build();
try {
return stripeClient.subscriptions().retrieve(subscriptionId, params, commonOptions());
@@ -557,8 +557,8 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
final Invoice invoice = subscription.getLatestInvoiceObject();
paymentProcessing = "open".equals(invoice.getStatus());
- if (invoice.getChargeObject() != null) {
- final Charge charge = invoice.getChargeObject();
+ if (invoice.getPayments().getData().getFirst() != null) {
+ final Charge charge = invoice.getPayments().getData().getFirst().getPayment().getChargeObject();
if (charge.getFailureCode() != null || charge.getFailureMessage() != null) {
chargeFailure = createChargeFailure(charge);
}
@@ -574,7 +574,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
new SubscriptionPrice(price.getCurrency().toUpperCase(Locale.ROOT), price.getUnitAmountDecimal()),
level,
Instant.ofEpochSecond(subscription.getBillingCycleAnchor()),
- Instant.ofEpochSecond(subscription.getCurrentPeriodEnd()),
+ Instant.ofEpochSecond(subscription.getItems().getData().getFirst().getCurrentPeriodEnd()),
Objects.equals(subscription.getStatus(), "active"),
subscription.getCancelAtPeriodEnd(),
getSubscriptionStatus(subscription.getStatus()),
@@ -620,7 +620,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
throw new SubscriptionReceiptRequestedForOpenPaymentException();
}
if (!StringUtils.equalsIgnoreCase("paid", latestSubscriptionInvoice.getStatus())) {
- final Charge charge = latestSubscriptionInvoice.getChargeObject();
+ final Charge charge = latestSubscriptionInvoice.getPayments().getData().getFirst().getPayment().getChargeObject();
if (charge != null && (charge.getFailureCode() != null || charge.getFailureMessage() != null)) {
// If the charge object has a failure reason we can present to the user, create a detailed exception
throw new SubscriptionChargeFailurePaymentRequiredException(getProvider(), createChargeFailure(charge));
@@ -632,7 +632,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
final Collection invoiceLineItems = getInvoiceLineItemsForInvoice(latestSubscriptionInvoice);
Collection subscriptionLineItems = invoiceLineItems.stream()
- .filter(invoiceLineItem -> Objects.equals("subscription", invoiceLineItem.getType()))
+ .filter(invoiceLineItem -> "subscription_item_details".equalsIgnoreCase(invoiceLineItem.getParent().getType()))
.toList();
if (subscriptionLineItems.isEmpty()) {
throw new IllegalStateException("latest subscription invoice has no subscription line items; subscriptionId="
@@ -657,7 +657,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
invoice.getId());
paidAt = Instant.ofEpochSecond(subscriptionLineItem.getPeriod().getStart());
}
- final Product product = getProductForPrice(subscriptionLineItem.getPrice().getId());
+ final Product product = getProductForPrice(subscriptionLineItem.getPricing().getPriceDetails().getPrice());
return new ReceiptItem(
subscriptionLineItem.getId(),
PaymentTime.periodStart(paidAt),