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,
|
// 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
|
// and needs to call create_payment_method to create a customer for the given payment method
|
||||||
new ClientErrorException(Status.CONFLICT)))
|
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());
|
.thenApply(customer -> Response.ok().build());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import com.google.common.collect.Lists;
|
||||||
import com.stripe.StripeClient;
|
import com.stripe.StripeClient;
|
||||||
import com.stripe.exception.CardException;
|
import com.stripe.exception.CardException;
|
||||||
import com.stripe.exception.IdempotencyException;
|
import com.stripe.exception.IdempotencyException;
|
||||||
|
import com.stripe.exception.InvalidRequestException;
|
||||||
import com.stripe.exception.StripeException;
|
import com.stripe.exception.StripeException;
|
||||||
import com.stripe.model.Charge;
|
import com.stripe.model.Charge;
|
||||||
import com.stripe.model.Customer;
|
import com.stripe.model.Customer;
|
||||||
|
@ -171,6 +172,9 @@ public class StripeManager implements CustomerAwareSubscriptionPaymentProcessor
|
||||||
try {
|
try {
|
||||||
stripeClient.customers().update(customerId, params, commonOptions());
|
stripeClient.customers().update(customerId, params, commonOptions());
|
||||||
return null;
|
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) {
|
} catch (StripeException e) {
|
||||||
throw new CompletionException(e);
|
throw new CompletionException(e);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue