Allow cancellation of an expired purchaseToken

This commit is contained in:
Ravi Khadiwala 2025-03-07 15:12:30 -06:00 committed by ravi-signal
parent 469955aec9
commit b7fee7b426
2 changed files with 13 additions and 1 deletions

View File

@ -219,7 +219,9 @@ public class GooglePlayBillingManager implements SubscriptionPaymentProcessor {
return executeTokenOperation(pub ->
pub.purchases().subscriptions().cancel(packageName, purchase.getProductId(), purchaseToken));
});
})
// If the subscription is not found, no need to do anything
.exceptionally(ExceptionUtils.exceptionallyHandler(SubscriptionException.NotFound.class, e -> null));
}
@Override

View File

@ -181,6 +181,16 @@ class GooglePlayBillingManagerTest {
verify(cancel, times(wanted)).execute();
}
@Test
public void cancelMissingSubscription() throws IOException {
final HttpResponseException mockException = mock(HttpResponseException.class);
when(mockException.getStatusCode()).thenReturn(404);
when(subscriptionsv2Get.execute()).thenThrow(mockException);
assertThatNoException().isThrownBy(() ->
googlePlayBillingManager.cancelAllActiveSubscriptions(PURCHASE_TOKEN).join());
verifyNoInteractions(cancel);
}
@Test
public void getReceiptUnacknowledged() throws IOException {
when(subscriptionsv2Get.execute()).thenReturn(new SubscriptionPurchaseV2()