duccong / marketbilling

Automatically exported from code.google.com/p/marketbilling
0 stars 0 forks source link

Refunded orders take too long to revert to "not owned" state in getPurchases() #88

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
STEPS TO REPRODUCE:
1. Buy a in-app non compsumable managed item
2. In developer console cancel the buy and refund the money
3. Open app and check for buyed items

EXPECTED OUTPUT: Refund items aren't available

ACTUAL OUTPUT: Refunded items are returned by the Google Play (8 hours since 
refund) :(

AFFECTED ORDER IDS (IF RELEVANT):

OS VERSION: 4.1.2

MARKET/MYAPPS VERSION: com.ryosoftware.cputweaks (com.ryosoftware.cputweaks.pro)

DEVICE: Galaxy Note

OUTPUT FROM ADB BUGREPORT ATTACHED:
(Note: The output from "adb bugreport" is required for all bug reports.)

D/IabHelper( 1500): Got sku details: SkuDetails:{"title":"CPU Adjuster - 
PRO","price":"1,22 €","type":"inapp","description":"Remove Ads\nUnlimited 
number of profiles\nMake app functional after trial 
period","productId":"com.ryosoftware.cputweaks.pro"}
D/CPUTweaks( 1500): d: Billing: Query inventory finished without errors

NOTES:

Original issue reported on code.google.com by matrix....@gmail.com on 11 Dec 2012 at 8:23

GoogleCodeExporter commented 8 years ago
Sorry, I'm refer to IAB v3

Original comment by matrix....@gmail.com on 11 Dec 2012 at 9:18

GoogleCodeExporter commented 8 years ago
After 24 hours (more or less) the pro in-app item that i've refund bia 
developer console, appears cancelled in the client play store.
seems to me that 24 hours is too many time! :(
but you can close this issue

Original comment by matrix....@gmail.com on 12 Dec 2012 at 11:45

GoogleCodeExporter commented 8 years ago
Hiw the app gets notified? Is SKU just not listed in purchased items 
(getPurchases() result) ?

Original comment by d...@antonsmirnov.name on 21 Dec 2012 at 7:55

GoogleCodeExporter commented 8 years ago
It is - even 3 days after I cancelled the (test) purchase - that's the problem.

I need to know how the 'refund' or 'cancellation' is reported to the
app - as it stands now, it appears that the app caches the 'purchased'
state (of the SKU) and it's not updated.

I uninstall and reinstalled the app - still in getPurchases() after that.

The only thing which appears to have reset it - is Factory Resetting
my (test) phone - I doubt customers will do that!!

v2 of Billing had a notification system for Refunds - does v3 not have
that - is there a way to force v3 to check a purchase is still valid?

JP

Original comment by johnp...@gmail.com on 21 Dec 2012 at 4:10

GoogleCodeExporter commented 8 years ago
Much like issue 92, and I quote something from there "It's not really clear in 
the sample code, but shouldn't you check the "purchase state" of the purchases 
returned by queryInventory and only regard the ones "purchased" or "refunded" 
as purchased, and "cancelled" as not purchased?"

Original comment by paulmdem...@gmail.com on 11 Jan 2013 at 10:32

GoogleCodeExporter commented 8 years ago
They keep coming back as 'purchased' is the main issue I think...

It does appear that they will, eventually, be cancelled - but it takes
DAYS for this to happen...

Original comment by johnp...@gmail.com on 11 Jan 2013 at 10:36

GoogleCodeExporter commented 8 years ago
That is most likely due to Google Play's Local Caching, 
http://developer.android.com/google/play/billing/api.html#caching

The amount of time it takes depends on when Google Play refreshes it's cache. 
We would need to receive an IN_APP_NOTIFY (which I'm not sure if this even 
exists in API3) and manually synchronize the Google Play cache. Can we hear 
from a dev?

Original comment by paulmdem...@gmail.com on 11 Jan 2013 at 10:43

GoogleCodeExporter commented 8 years ago
Issue 92 has been merged into this issue.

Original comment by b...@google.com on 5 Feb 2013 at 1:34

GoogleCodeExporter commented 8 years ago
Issue 94 has been merged into this issue.

Original comment by b...@google.com on 5 Feb 2013 at 1:34

GoogleCodeExporter commented 8 years ago

Original comment by b...@google.com on 5 Feb 2013 at 1:36

GoogleCodeExporter commented 8 years ago

Original comment by b...@google.com on 5 Feb 2013 at 1:36

GoogleCodeExporter commented 8 years ago

Original comment by b...@google.com on 5 Feb 2013 at 1:36

GoogleCodeExporter commented 8 years ago
I think the problem comes with Checkout. My experience:
1.- Purchased and Refunded few hours later -> in 2 or 3 days item is not owned. 
It's too much time but finally user gives up using the app for free.
2.- Purchased and Refunded few days later -> item is owned indefinitely, at 
least 1.5 months (state = 0)

In second case item appears as Shipped on Checkout

Original comment by simple4d...@gmail.com on 5 Feb 2013 at 7:58

GoogleCodeExporter commented 8 years ago
Hi,

Is this issue occurs with consumable items? As I am going to have consumable 
items in my App so just want to confirm. Did anybody try for consumable items?

Original comment by alina.ni...@gmail.com on 14 Feb 2013 at 1:00

GoogleCodeExporter commented 8 years ago
Hi lina
I don't think so, because a consumible item can't be refunded just consumed, 
but I haven't tried it
----------------------------------

Unexpectedly, one of the items now appears as not purchased. It also agreed 
that in Checkout, the order no longer appears as shipped. 16 days after the 
manual refund/cancel, the Checkout system has "unshipped" the order 
automatically and the user doesn't own the item.

If this is not an Checkout issue.....

Original comment by simple4d...@gmail.com on 14 Feb 2013 at 2:35

GoogleCodeExporter commented 8 years ago
When I was testing this, I did try consuming the purchased item. This worked 
immediately and then allowed the user to repurchase without delay.

Original comment by danjohns...@gmail.com on 14 Feb 2013 at 3:56

GoogleCodeExporter commented 8 years ago
But what if before consume call the internet connection is lost?  And before 
restarting my application my order is cancelled at check out? 

Original comment by alina.ni...@gmail.com on 15 Feb 2013 at 12:31

GoogleCodeExporter commented 8 years ago
I would like to add that the same issue plagues IAB v2 as well. It's been 2 
days since I received email notification of refund. However IAB server keeps 
returning PURCHASED rather than REFUNDED doing a restore transactions operation.

Testing these purchases is a *nightmare*. Not only do we have to use real 
credit cards, the store won't even revert the purchase in a timely manner!

Original comment by avrazgu...@gmail.com on 20 Feb 2013 at 9:04

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
I have made a refund, but the app still shows the item as PURCHASED even after 
8 days. I'm referring to IAB v3. I've already rebooted the phone, uninstalled 
and reinstalled the app but still no luck. I understand it can take up to 72 
hours but its now more than 3 days.

Original comment by sachi...@gmail.com on 9 Oct 2013 at 9:47

GoogleCodeExporter commented 8 years ago
I am seeing this issue right now (my cancelled items are still showing as being 
purchased). Because of this my UI cannot correctly update to indicate that the 
subscription has been cancelled, which will lead to a poor user experience.

I would like to second the comment regarding how hard it has been to test out 
in app subscriptions. So many headaches.

Original comment by sha...@twotalltotems.com on 7 Oct 2014 at 4:55

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
We are experiencing this issue in subscriptions. If users cancels subscription, 
it still thinks that user is subscribed. It is not because of the billing 
cycle, because we are waiting for cycle to end and then it still says user is 
subscribed. Then we clean the Play Store and Play Services cache. Voala, it 
works like it should.

Original comment by mr.theor...@gmail.com on 9 Apr 2015 at 10:57

GoogleCodeExporter commented 8 years ago
I'm also using IAB v3 and only after reboot device, that I believe the cache 
will be cleaned then it worked.

Original comment by utilappl...@gmail.com on 17 May 2015 at 11:04