mirror of
https://github.com/signalapp/Signal-Server.git
synced 2025-12-05 01:10:13 +00:00
Migrate Stripe usage to V1Services
This commit is contained in:
@@ -156,7 +156,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
}
|
||||
|
||||
try {
|
||||
final Customer customer = stripeClient.customers()
|
||||
final Customer customer = stripeClient.v1().customers()
|
||||
.create(builder.build(), commonOptions(generateIdempotencyKeyForSubscriberUser(subscriberUser)));
|
||||
return new ProcessorCustomer(customer.getId(), getProvider());
|
||||
} catch (StripeException e) {
|
||||
@@ -167,7 +167,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
public Customer getCustomer(String customerId) {
|
||||
CustomerRetrieveParams params = CustomerRetrieveParams.builder().build();
|
||||
try {
|
||||
return stripeClient.customers().retrieve(customerId, params, commonOptions());
|
||||
return stripeClient.v1().customers().retrieve(customerId, params, commonOptions());
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -182,7 +182,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.build())
|
||||
.build();
|
||||
try {
|
||||
stripeClient.customers().update(customerId, params, commonOptions());
|
||||
stripeClient.v1().customers().update(customerId, params, commonOptions());
|
||||
} catch (InvalidRequestException e) {
|
||||
// Could happen if the paymentMethodId was bunk or the client didn't actually finish setting it up
|
||||
throw new SubscriptionInvalidArgumentsException(e.getMessage());
|
||||
@@ -197,7 +197,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.setCustomer(customerId)
|
||||
.build();
|
||||
try {
|
||||
return stripeClient.setupIntents().create(params, commonOptions()).getClientSecret();
|
||||
return stripeClient.v1().setupIntents().create(params, commonOptions()).getClientSecret();
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -230,7 +230,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
}
|
||||
|
||||
try {
|
||||
return stripeClient.paymentIntents().create(builder.build(), commonOptions());
|
||||
return stripeClient.v1().paymentIntents().create(builder.build(), commonOptions());
|
||||
} catch (StripeException e) {
|
||||
final String errorCode = StringUtils.lowerCase(e.getCode(), Locale.ROOT);
|
||||
switch (errorCode) {
|
||||
@@ -247,7 +247,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
try {
|
||||
final PaymentIntentRetrieveParams params = PaymentIntentRetrieveParams.builder()
|
||||
.addExpand("latest_charge").build();
|
||||
final PaymentIntent paymentIntent = stripeClient.paymentIntents().retrieve(paymentIntentId, params, commonOptions());
|
||||
final PaymentIntent paymentIntent = stripeClient.v1().paymentIntents().retrieve(paymentIntentId, params, commonOptions());
|
||||
|
||||
ChargeFailure chargeFailure = null;
|
||||
if (paymentIntent.getLatestChargeObject() != null) {
|
||||
@@ -304,7 +304,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
//
|
||||
// If the client tells the server several times in a row before the initial creation of a subscription to
|
||||
// create a subscription, we want to ensure only one gets created.
|
||||
final Subscription subscription = stripeClient.subscriptions().create(
|
||||
final Subscription subscription = stripeClient.v1().subscriptions().create(
|
||||
params,
|
||||
commonOptions(generateIdempotencyKeyForCreateSubscription(customerId, lastSubscriptionCreatedAt)));
|
||||
return new SubscriptionId(subscription.getId());
|
||||
@@ -334,7 +334,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
|
||||
List<SubscriptionUpdateParams.Item> items = new ArrayList<>();
|
||||
try {
|
||||
final StripeCollection<SubscriptionItem> subscriptionItems = stripeClient.subscriptionItems()
|
||||
final StripeCollection<SubscriptionItem> subscriptionItems = stripeClient.v1().subscriptionItems()
|
||||
.list(SubscriptionItemListParams.builder().setSubscription(subscription.getId()).build(),
|
||||
commonOptions());
|
||||
for (final SubscriptionItem item : subscriptionItems.autoPagingIterable()) {
|
||||
@@ -357,7 +357,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.setPaymentBehavior(SubscriptionUpdateParams.PaymentBehavior.ERROR_IF_INCOMPLETE)
|
||||
.addAllItem(items)
|
||||
.build();
|
||||
final Subscription subscription1 = stripeClient.subscriptions().update(subscription.getId(), params,
|
||||
final Subscription subscription1 = stripeClient.v1().subscriptions().update(subscription.getId(), params,
|
||||
commonOptions(generateIdempotencyKeyForSubscriptionUpdate(subscription.getCustomer(), idempotencyKey)));
|
||||
return new SubscriptionId(subscription1.getId());
|
||||
} catch (IdempotencyException e) {
|
||||
@@ -375,7 +375,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.addExpand("latest_invoice.payments.data.payment")
|
||||
.build();
|
||||
try {
|
||||
return stripeClient.subscriptions().retrieve(subscriptionId, params, commonOptions());
|
||||
return stripeClient.v1().subscriptions().retrieve(subscriptionId, params, commonOptions());
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -386,7 +386,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.addExpand("latest_charge")
|
||||
.build();
|
||||
try {
|
||||
return stripeClient.paymentIntents().retrieve(paymentIntentId, params, commonOptions());
|
||||
return stripeClient.v1().paymentIntents().retrieve(paymentIntentId, params, commonOptions());
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -396,7 +396,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
ChargeRetrieveParams params = ChargeRetrieveParams.builder()
|
||||
.build();
|
||||
try {
|
||||
return stripeClient.charges().retrieve(chargeId, params, commonOptions());
|
||||
return stripeClient.v1().charges().retrieve(chargeId, params, commonOptions());
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -431,7 +431,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.build();
|
||||
try {
|
||||
return Lists.newArrayList(
|
||||
stripeClient.subscriptions().list(params, commonOptions()).autoPagingIterable());
|
||||
stripeClient.v1().subscriptions().list(params, commonOptions()).autoPagingIterable());
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -452,7 +452,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
private Subscription cancelSubscriptionImmediately(Subscription subscription) {
|
||||
SubscriptionCancelParams params = SubscriptionCancelParams.builder().build();
|
||||
try {
|
||||
return stripeClient.subscriptions().cancel(subscription.getId(), params, commonOptions());
|
||||
return stripeClient.v1().subscriptions().cancel(subscription.getId(), params, commonOptions());
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -463,7 +463,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.setCancelAtPeriodEnd(true)
|
||||
.build();
|
||||
try {
|
||||
return stripeClient.subscriptions().update(subscription.getId(), params, commonOptions());
|
||||
return stripeClient.v1().subscriptions().update(subscription.getId(), params, commonOptions());
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -471,7 +471,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
|
||||
public Collection<SubscriptionItem> getItemsForSubscription(Subscription subscription) {
|
||||
try {
|
||||
final StripeCollection<SubscriptionItem> subscriptionItems = stripeClient.subscriptionItems().list(
|
||||
final StripeCollection<SubscriptionItem> subscriptionItems = stripeClient.v1().subscriptionItems().list(
|
||||
SubscriptionItemListParams.builder().setSubscription(subscription.getId()).build(), commonOptions());
|
||||
return Lists.newArrayList(subscriptionItems.autoPagingIterable());
|
||||
|
||||
@@ -513,7 +513,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
public Product getProductForPrice(String priceId) {
|
||||
PriceRetrieveParams params = PriceRetrieveParams.builder().addExpand("product").build();
|
||||
try {
|
||||
return stripeClient.prices().retrieve(priceId, params, commonOptions()).getProductObject();
|
||||
return stripeClient.v1().prices().retrieve(priceId, params, commonOptions()).getProductObject();
|
||||
} catch (StripeException e) {
|
||||
throw new UncheckedIOException(new IOException(e));
|
||||
}
|
||||
@@ -536,7 +536,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.build())
|
||||
.build();
|
||||
try {
|
||||
ArrayList<Invoice> invoices = Lists.newArrayList(stripeClient.invoices().list(params, commonOptions())
|
||||
ArrayList<Invoice> invoices = Lists.newArrayList(stripeClient.v1().invoices().list(params, commonOptions())
|
||||
.autoPagingIterable());
|
||||
invoices.sort(Comparator.comparingLong(Invoice::getCreated).reversed());
|
||||
return invoices;
|
||||
@@ -724,7 +724,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
|
||||
public Collection<InvoiceLineItem> getInvoiceLineItemsForInvoice(Invoice invoice) {
|
||||
try {
|
||||
final StripeCollection<InvoiceLineItem> lineItems = stripeClient.invoices().lineItems()
|
||||
final StripeCollection<InvoiceLineItem> lineItems = stripeClient.v1().invoices().lineItems()
|
||||
.list(invoice.getId(), commonOptions());
|
||||
return Lists.newArrayList(lineItems.autoPagingIterable());
|
||||
} catch (final StripeException e) {
|
||||
@@ -738,7 +738,7 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||
.addExpand("latest_attempt")
|
||||
.build();
|
||||
try {
|
||||
final SetupIntent setupIntent = stripeClient.setupIntents().retrieve(setupIntentId, params, commonOptions());
|
||||
final SetupIntent setupIntent = stripeClient.v1().setupIntents().retrieve(setupIntentId, params, commonOptions());
|
||||
if (setupIntent.getLatestAttemptObject() == null
|
||||
|| setupIntent.getLatestAttemptObject().getPaymentMethodDetails() == null
|
||||
|| setupIntent.getLatestAttemptObject().getPaymentMethodDetails().getIdeal() == null
|
||||
|
||||
@@ -6,12 +6,14 @@
|
||||
package org.whispersystems.textsecuregcm.subscriptions;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
|
||||
import static org.junit.jupiter.api.Assertions.assertTimeoutPreemptively;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.stripe.StripeClient;
|
||||
import com.stripe.exception.ApiException;
|
||||
import com.stripe.exception.StripeException;
|
||||
import com.stripe.service.SubscriptionService;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
@@ -19,9 +21,7 @@ import java.util.UUID;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import com.stripe.exception.ApiException;
|
||||
import com.stripe.exception.StripeException;
|
||||
import com.stripe.service.SubscriptionService;
|
||||
import com.stripe.service.V1Services;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -29,6 +29,7 @@ import org.junit.jupiter.api.Test;
|
||||
class StripeManagerTest {
|
||||
|
||||
private StripeClient stripeClient;
|
||||
private SubscriptionService subscriptionService;
|
||||
private StripeManager stripeManager;
|
||||
private ExecutorService executor;
|
||||
|
||||
@@ -42,6 +43,12 @@ class StripeManagerTest {
|
||||
"idempotencyKey".getBytes(StandardCharsets.UTF_8),
|
||||
"boost",
|
||||
Map.of(PaymentMethod.CARD, Set.of("usd")));
|
||||
|
||||
final V1Services v1Services = mock(V1Services.class);
|
||||
when(stripeClient.v1()).thenReturn(v1Services);
|
||||
|
||||
subscriptionService = mock(SubscriptionService.class);
|
||||
when(v1Services.subscriptions()).thenReturn(subscriptionService);
|
||||
}
|
||||
|
||||
@AfterEach
|
||||
@@ -52,12 +59,10 @@ class StripeManagerTest {
|
||||
|
||||
@Test
|
||||
void paymentRequiresAction() throws StripeException {
|
||||
final SubscriptionService subscriptionService = mock(SubscriptionService.class);
|
||||
final ApiException stripeException = new ApiException("Payment intent requires action",
|
||||
UUID.randomUUID().toString(), "subscription_payment_intent_requires_action", 400, new Exception());
|
||||
|
||||
when(subscriptionService.create(any(), any())).thenThrow(stripeException);
|
||||
when(stripeClient.subscriptions()).thenReturn(subscriptionService);
|
||||
assertThatExceptionOfType(SubscriptionPaymentRequiresActionException.class).isThrownBy(() ->
|
||||
stripeManager.createSubscription("customerId", "priceId", 1, 0));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user