Fix cancelAtPeriodEnd calculation
This commit is contained in:
parent
9fb4e2d272
commit
50bd30fb1f
|
@ -12,6 +12,7 @@ import com.google.api.client.json.gson.GsonFactory;
|
|||
import com.google.api.services.androidpublisher.AndroidPublisher;
|
||||
import com.google.api.services.androidpublisher.AndroidPublisherRequest;
|
||||
import com.google.api.services.androidpublisher.AndroidPublisherScopes;
|
||||
import com.google.api.services.androidpublisher.model.AutoRenewingPlan;
|
||||
import com.google.api.services.androidpublisher.model.BasePlan;
|
||||
import com.google.api.services.androidpublisher.model.OfferDetails;
|
||||
import com.google.api.services.androidpublisher.model.RegionalBasePlanConfig;
|
||||
|
@ -244,13 +245,17 @@ public class GooglePlayBillingManager implements SubscriptionPaymentProcessor {
|
|||
case UNSPECIFIED -> SubscriptionStatus.UNKNOWN;
|
||||
};
|
||||
|
||||
final boolean autoRenewEnabled = Optional
|
||||
.ofNullable(lineItem.getAutoRenewingPlan())
|
||||
.map(AutoRenewingPlan::getAutoRenewEnabled) // returns null or false if auto-renew disabled
|
||||
.orElse(false);
|
||||
return new SubscriptionInformation(
|
||||
price,
|
||||
productIdToLevel(lineItem.getProductId()),
|
||||
billingCycleAnchor.orElse(null),
|
||||
expiration.orElse(null),
|
||||
expiration.map(clock.instant()::isBefore).orElse(false),
|
||||
lineItem.getAutoRenewingPlan() != null && lineItem.getAutoRenewingPlan().getAutoRenewEnabled(),
|
||||
!autoRenewEnabled,
|
||||
status,
|
||||
PaymentProvider.GOOGLE_PLAY_BILLING,
|
||||
PaymentMethod.GOOGLE_PLAY_BILLING,
|
||||
|
@ -467,5 +472,4 @@ public class GooglePlayBillingManager implements SubscriptionPaymentProcessor {
|
|||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import static org.mockito.Mockito.verifyNoInteractions;
|
|||
import static org.mockito.Mockito.when;
|
||||
|
||||
import com.google.api.services.androidpublisher.AndroidPublisher;
|
||||
import com.google.api.services.androidpublisher.model.AutoRenewingPlan;
|
||||
import com.google.api.services.androidpublisher.model.BasePlan;
|
||||
import com.google.api.services.androidpublisher.model.Money;
|
||||
import com.google.api.services.androidpublisher.model.OfferDetails;
|
||||
|
@ -234,6 +235,7 @@ class GooglePlayBillingManagerTest {
|
|||
.setRegionCode("US")
|
||||
.setLineItems(List.of(new SubscriptionPurchaseLineItem()
|
||||
.setExpiryTime(Instant.now().plus(Duration.ofDays(1)).toString())
|
||||
.setAutoRenewingPlan(new AutoRenewingPlan().setAutoRenewEnabled(null))
|
||||
.setProductId(PRODUCT_ID)
|
||||
.setOfferDetails(new OfferDetails().setBasePlanId(basePlanId)))));
|
||||
|
||||
|
@ -251,6 +253,8 @@ class GooglePlayBillingManagerTest {
|
|||
assertThat(info.price().currency()).isEqualTo("USD");
|
||||
assertThat(info.price().amount().compareTo(new BigDecimal("175"))).isEqualTo(0); // 175 cents
|
||||
assertThat(info.level()).isEqualTo(201L);
|
||||
assertThat(info.cancelAtPeriodEnd()).isTrue();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue