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