Return 409 when setting a payment method that hasn't finished initialization
This commit is contained in:
parent
a96c0ec7a3
commit
6460327372
|
@ -712,6 +712,11 @@ public class SubscriptionController {
|
|||
// a missing customer ID indicates the client made requests out of order,
|
||||
// and needs to call create_payment_method to create a customer for the given payment method
|
||||
new ClientErrorException(Status.CONFLICT)))
|
||||
.exceptionally(ExceptionUtils.exceptionallyHandler(SubscriptionException.InvalidArguments.class, e -> {
|
||||
// Here, invalid arguments must mean that the client has made requests out of order, and needs to finish
|
||||
// setting up the paymentMethod first
|
||||
throw new ClientErrorException(Status.CONFLICT);
|
||||
}))
|
||||
.thenApply(customer -> Response.ok().build());
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ import com.google.common.collect.Lists;
|
|||
import com.stripe.StripeClient;
|
||||
import com.stripe.exception.CardException;
|
||||
import com.stripe.exception.IdempotencyException;
|
||||
import com.stripe.exception.InvalidRequestException;
|
||||
import com.stripe.exception.StripeException;
|
||||
import com.stripe.model.Charge;
|
||||
import com.stripe.model.Customer;
|
||||
|
@ -171,6 +172,9 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
|||
try {
|
||||
stripeClient.customers().update(customerId, params, commonOptions());
|
||||
return null;
|
||||
} catch (InvalidRequestException e) {
|
||||
// Could happen if the paymentMethodId was bunk or the client didn't actually finish setting it up
|
||||
throw ExceptionUtils.wrap(new SubscriptionException.InvalidArguments(e.getMessage()));
|
||||
} catch (StripeException e) {
|
||||
throw new CompletionException(e);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue