For Braintree, return `active` subscription status if latest transaction also succeeded
This commit is contained in:
parent
84b56ae1b2
commit
7fbc327591
|
@ -220,9 +220,11 @@ public class BraintreeManager implements SubscriptionProcessorManager {
|
|||
}
|
||||
}
|
||||
|
||||
private static SubscriptionStatus getSubscriptionStatus(final Subscription.Status status) {
|
||||
private static SubscriptionStatus getSubscriptionStatus(final Subscription.Status status, final boolean latestTransactionFailed) {
|
||||
return switch (status) {
|
||||
case ACTIVE -> SubscriptionStatus.ACTIVE;
|
||||
// Stripe returns a PAST_DUE status if the subscription's most recent payment failed.
|
||||
// This check ensures that Braintree is consistent with Stripe.
|
||||
case ACTIVE -> latestTransactionFailed ? SubscriptionStatus.PAST_DUE : SubscriptionStatus.ACTIVE;
|
||||
case CANCELED, EXPIRED -> SubscriptionStatus.CANCELED;
|
||||
case PAST_DUE -> SubscriptionStatus.PAST_DUE;
|
||||
case PENDING -> SubscriptionStatus.INCOMPLETE;
|
||||
|
@ -435,9 +437,11 @@ public class BraintreeManager implements SubscriptionProcessorManager {
|
|||
|
||||
final Optional<Transaction> latestTransaction = getLatestTransactionForSubscription(subscription);
|
||||
|
||||
boolean latestTransactionFailed = false;
|
||||
if (latestTransaction.isPresent()){
|
||||
paymentProcessing = isPaymentProcessing(latestTransaction.get().getStatus());
|
||||
if (getPaymentStatus(latestTransaction.get().getStatus()) != PaymentStatus.SUCCEEDED) {
|
||||
latestTransactionFailed = true;
|
||||
chargeFailure = createChargeFailure(latestTransaction.get());
|
||||
}
|
||||
}
|
||||
|
@ -450,7 +454,7 @@ public class BraintreeManager implements SubscriptionProcessorManager {
|
|||
endOfCurrentPeriod,
|
||||
Subscription.Status.ACTIVE == subscription.getStatus(),
|
||||
!subscription.neverExpires(),
|
||||
getSubscriptionStatus(subscription.getStatus()),
|
||||
getSubscriptionStatus(subscription.getStatus(), latestTransactionFailed),
|
||||
latestTransaction.map(this::getPaymentMethodFromTransaction).orElse(PaymentMethod.PAYPAL),
|
||||
paymentProcessing,
|
||||
chargeFailure
|
||||
|
|
|
@ -84,7 +84,7 @@ public interface SubscriptionProcessorManager {
|
|||
INCOMPLETE("incomplete"),
|
||||
|
||||
/**
|
||||
* Payment on the latest renewal either failed or wasn't attempted.
|
||||
* Payment on the latest renewal failed but there are processor retries left, or payment wasn't attempted.
|
||||
*/
|
||||
PAST_DUE("past_due"),
|
||||
|
||||
|
|
Loading…
Reference in New Issue