I have an application-driven control (not a subscription) and I use it after writing to my server (after checking with the purchase status API). I understand that refunding / canceling in-app purchases can only be done through the console of your Merchant account. Is the Android application reporting a cancellation / return of a product being consumed?
The queryInventoryAsync() API does not return any items after consumption. Does the application need to constantly access this API to learn about cancellation / refund?
I tested that the purchase status API (on the server) returns information after cancellation.
INFO: { "consumptionState" : 1, "developerPayload" : "payload", "kind" : "androidpublisher#inappPurchase", "purchaseState" : 1, "purchaseTime" : "1392878938499" }
I thought that order information is cleared on Google game servers after using it. If so, I cannot rely on the purchase status API to detect cancellations.
side of the note: However, I noticed that the ConsumState returned via the purchase status API is NOT correct. I already used it, and queryInventoryAsync () no longer returns this element on the device. Upon purchase, the PurchaseState changed after a while to “1” (canceled) from “0”, but the consumable remained 1, but it was not consumed yet. I hope it works great with real purchases (I'm still in testing mode)
In the documentation, only API v2 has some information about cancellation / refund (intent IN_APP_NOTIFY). The InApp Billing API V3 does not talk about refund / cancellation processing. The TrivialDrive sample also has no examples.
I looked through these questions, but did not understand yet.
Android In-App Billing: purchase status remains “purchased” after the order is canceled Android In-App Billing: purchase and purchase status "after the order is canceled
Processing invoice refunds in applications in version 3 Processing invoice refunds in applications in version 3