Related github link that I'm pretty sure nobody will answer
As you know, Google has enforcing the developers who sells subscriptions to integrate account hold handling mechanism until November 1st. It's good and all as long as we have some reference to use from, but if somehow app gets deleted and re-installed, we are expected to handle this issue. However, BillingClient.queryPurchaseHistoryAsync()
method returns an empty list if app gets deleted while a subscription is active, or, after the user switch devices while using the same account on both of them.
At this point I am pretty sure BillingClient.queryPurchaseHistoryAsync()
method fails to query the actual purchase history from Google's own API because on a different device, the purchase does not return, even though they are both synchronized with the same account. It also fails to do it if the app is deleted and reinstalled. This creates a problem.
If we are expected to handle account hold status, we need to use Google Play Developer API where it returns the expiry time of a purchase and the purchase's state. It works, as long as we hold a reference to the purchase itself or from the purchase history, but once the purchase reaches account hold state, BillingClient.queryPurchases()
stops the purchase from returning. This makes sense because premium features are not granted in such state, but, BillingClient.queryPurchaseHistoryAsync()
also returns empty in this case. And since the developer API requires both sku and purchase token, it becomes impossible to query such information, hence, it's not possible to track down a purchase state if a purchase is made on a device and the app is used in another.
How are you guys handling this so far? Any help or opinion is appreciated here, thanks.