8

I have an in-app managed item (not subscription) and I consume it after I record it on my server (after verifying with purchase status API). I understand that the refund/ cancellation for in-app purchases can only be done via Merchant account console. Does the Android app get notified about the cancellation/refund of a consumed item?

The queryInventoryAsync() API does not return any items after consuming. Does the app need to continue calling this API periodically to know about cancel/refunds?

I tested that the purchase status API (on server) returns the information after cancellation.

INFO: {
  "consumptionState" : 1,
  "developerPayload" : "payload",
  "kind" : "androidpublisher#inappPurchase",
  "purchaseState" : 1,
  "purchaseTime" : "1392878938499"
}

I thought the order information is cleared on Google play servers after I consume it. If so, I can't rely on purchase status API to detect cancellations.

side note: However I noticed that the consumptionState returned via purchase status API is NOT correct. I already consumed it and the queryInventoryAsync() does not return this item anymore on device. The purchaseState changed to "1" (canceled) from "0" after some time, but the consumptionState remained as 1 - yet to be consumed. I hope it works fine with real purchases (I am still in testing mode)

In the documentation, only v2 API has some info about cancelation/refunds (IN_APP_NOTIFY intent). V3 InApp billing API does not talk about handling refunds/cancelations. The TrivialDrive sample does not have any examples either.


I looked through these questions but not clear yet.

Android In-App Billing: Purchase state stays “purchased” after order cancelation Android In-App Billing: Purchase state stays "purchased" after order cancelation

Handling In-App Billing Refunds in v3 Handling In-App Billing Refunds in v3

Community
  • 1
  • 1
Kakatiyudu
  • 531
  • 5
  • 10
  • The documentation (at https://developers.google.com/android-publisher/v1_1/inapppurchases#resource) seems to be wrong..consumptionState 1 seems to be for consumed and 0 means yet to be consumed – Kakatiyudu Feb 24 '14 at 07:41
  • Updating from API v2 to v3 I seem to have the same problem, how to deal with cancelled items. Maybe a QueryInventory call will return cancelled items? -> but yeah, googles does not seem to return items that already has been consumed. – Friesgaard Mar 13 '14 at 12:22
  • helper.queryInventory.. ( ...) did not work. Seems like Google wants us to change to managed products :-/ – Friesgaard Mar 13 '14 at 12:53
  • Do you have any answer for this issue? And now `only be done via Merchant account console.` is nolonger true. User can fill request refund [form](https://support.google.com/googleplay/contact/play_request_refund_apps?rd=2&rd=1&ctx=problems_with_inapp_purchases) directly to Google. And the money is return in about 5mins. I tested myself – Trung Nguyen May 09 '16 at 02:18
  • @Friesgaard Hello, can you explain where you got this? "-> but yeah, googles does not seem to return items that already has been consumed." I want to see the policy for this. Because right now I'm developing in-app virtual coin. It will be very stressful if user refund some coin (which had consumed for buying an item/power up). Looking forward for your answer. Thank you. – Darari Nur Amali Jan 31 '19 at 01:30
  • @DarariNurAmali - this lies way back, but "in the old days" inn-app purchase were consumed at the moment the pressed buy (and entered their password) and the developer had to handle everything after that. This lead to a few issues where the purchase was lost (e.g. to network issues). Google change all purchases to be managed (three types back then), so you have to explicitly tell the server the product has been consumed (e.g. when they received their virtual coin or downloaded an extension). – Friesgaard Feb 01 '19 at 07:33
  • @Friesgaard so they will not refund consumed purchase although user can request refund directly to them? – Darari Nur Amali Feb 01 '19 at 12:26
  • @DarariNurAmali - Users cannot get a consumed product returned automatically. They have to contact Googles customer support with valid arguments). – Friesgaard Feb 11 '19 at 18:40

0 Answers0