LeeMyoungYeol / marketbilling

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

Purchase state notifications seem to get lost and not retransmitted #14

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
"Purchase completed" state for about 4-6% of in-app orders for my app is never 
received by the application on the phone.

My code is based on the Dungeons sample, and it seems to listen for all the 
right notifications, and yet, several hours after the order has been processed 
the app still doesn't receive the notification.

Removing the app and reinstalling, i.e. making it request "restore transaction 
state" resolved the issue every time.

This makes me think that something sometimes goes wrong in the flow of data 
from Google Checkout back to the application, to confirm the purchase after 
it's processed.

Again, this affects only 4 to 6% of purchases, so overall it's very good, but 
having proper retransmits, the way it's supposed to work, would remove the 
issue altogether.

Original issue reported on code.google.com by kmans...@gmail.com on 12 Apr 2011 at 10:04

GoogleCodeExporter commented 8 years ago
This is a known issue, but we've been having difficultly reliably reproducing 
it on our end.

If you experience this, please post your order number and the output from "adb 
bugreport" here. THanks.

Original comment by trevorjohns@google.com on 20 Apr 2011 at 7:45

GoogleCodeExporter commented 8 years ago
>>
If you experience this, please post your order number and the output from "adb 
bugreport" here. THanks.
<<

I don't experience this - my users do.

Please contact me privately over email and I will provide a few specific order 
numbers.

Original comment by kmans...@gmail.com on 20 Apr 2011 at 8:09

GoogleCodeExporter commented 8 years ago
I am running into this issue as well on my development phones. I don't have 
in-app billing deployed yet as I am still testing my implementation. It is also 
based on the Dungeons example. My "solution" was to perform a restore 
transactions before performing a purchase request to determine if the product 
has already been bought.

I believe I am running into other problems with this as on one of my phones I 
am no longer able to make "restore transactions" requests (they just always 
timeout) even though I _am_ able to make a purchase request. I'm assuming this 
has something to do with the quota mentioned in Issue 17.

Original comment by ashug...@gmail.com on 20 Apr 2011 at 11:47

GoogleCodeExporter commented 8 years ago
I too am seeing this issue albeit in a poor network area. By allowing the user 
to do a manual restore of their transaction state I have fixed the issue but 
its not ideal. While testing I paid for the item twice and got e mails from 
Google but I did not get a purchased notification so I was not able to update 
my database and confirm purchase. I have yet to test in god network conditions.

Original comment by jonathan...@gmail.com on 1 May 2011 at 10:45

GoogleCodeExporter commented 8 years ago
Well I've noticed that sometimes transaction confirmations come late and in a 
batch.

Such late transactions should get processed by your app in 
ResponseHandler.purchaseResponse method.

Original comment by i...@simplabs.si on 3 May 2011 at 7:57

GoogleCodeExporter commented 8 years ago
Any delay greater then ~15 seconds completely destroyed the user experience!

Look a magic fire dragon appeared. Oh wait, let me quickly buy that inflammable 
armor... 

Original comment by NicolasG...@gmail.com on 3 May 2011 at 8:03

GoogleCodeExporter commented 8 years ago
Referring to comment 5 - I have the code to handle notifications at any time 
after purchase is requested but they were not forthcoming. I have therefore 
published the app on the market  with a separate "restore" button which can be 
pressed if the user experiences this problem. The latter is also useful when 
the database is "cleaned out"  and the user needs to get back their purchase 
state. This proved very useful for me during testing and will probably be of 
use to others using the app. I must say I debated doing the restore at start up 
but I wanted to give the user more control. As for comment 6 I would settle for 
notification at > 15 sec - its better than none at all. As for user experience 
having to press a "restore" button to get what they have paid for - well. I'll 
leave that for the users to decide but its not ideal.... 

Original comment by jon.id...@gmail.com on 5 May 2011 at 10:34

GoogleCodeExporter commented 8 years ago
Hi, we are working on the game called "Paradise Island". And this problem is 
rather serious. Every day we receive lots of angry emails, where people say 
that they have been robbed and more "good" words. We need some official 
solution. Thanks.

Original comment by opengen...@gmail.com on 13 May 2011 at 7:56

GoogleCodeExporter commented 8 years ago
I haven't experienced big delays when testing with just one device, but when I 
test with two devices logged with the same Google account, one of the devices 
doesn't get some notifications. For example, if I purchase a product from a 
device, both devices get the purchased notification but if I cancel/refund, 
only one of them gets the notification. This happens for me almost always.
On one device the logs show how the notification is received but in the other 
nothing.

Original comment by imanol.m...@gmail.com on 19 May 2011 at 2:08

GoogleCodeExporter commented 8 years ago
I'm (actually my users) experiencing this too. I had a complaint today that 
even though the user was billed, the application didn't automatically upgrade 
to the premium version, even after waiting a while. I've advised the user to 
try to re-install the app (which triggers transaction restore), but I've still 
to get a confirmation if this works. 

For another order, the notification was never received, even after 
re-installing the application (Galaxy Tab, Android 2.2). Eventually I had to 
refund the purchase. 

Original comment by nikolay....@gmail.com on 23 May 2011 at 11:13

GoogleCodeExporter commented 8 years ago
I just want to add my vote in here for the good folks at Google to bump up the 
priority for the work required to fix this bug.  All of our transactions in our 
game are unmanaged virtual currency purchases.  On a daily basis, about 3% of 
our paying users encounter this issue.  Any hints from others as to 
work-arounds much appreciated.  

Original comment by mike.jim...@gmail.com on 2 Jun 2011 at 2:24

GoogleCodeExporter commented 8 years ago
Hey Googlers, wake up. This seems like a bug warranting a code-yellow. Would 
Larry accept a 3% failure on ad-sales? Eat your own dogfood.

Original comment by g...@scoompa.com on 22 Jun 2011 at 5:12

GoogleCodeExporter commented 8 years ago
Had this happen again yesterday and today with two customers, and there is a 
pattern.

Both had to place two orders each: the first one didn't go through with this 
message:

>>
Ihre Bestellung konnte nicht abgeschlossen werden. Überprüfen Sie Ihre 
Zahlungsinformationen in Google Checkout und versuchen Sie es erneut.
<<

and 

>>
Message sent to customer: Our attempt to authorize the transaction failed.
<<

Then the second order placed by either custom seemed to go through, but the 
application never received the notification. Reinstalling my application (which 
triggers a restore_transactions) did not help either.

In the end, I refunded both orders.

This is quite annonying, the bug was reported over two months ago and still no 
progress.

Original comment by kmans...@gmail.com on 22 Jun 2011 at 12:19

GoogleCodeExporter commented 8 years ago
We're also having problems with this one. This Exception we're seeing might be 
related to the issue:

class java.lang.NoClassDefFoundError
Msg: com.company.internal.BillingService.restoreTransactions:471 
(com.company.internal.BillingService$RestoreTransactions)

Coming from this method:

public boolean restoreTransactions() {
    return new RestoreTransactions().runRequest();
}

The BillingService code is taken from the SDK example code: 
extras/google/market_billing.

Original comment by jla...@gmail.com on 22 Jun 2011 at 12:32

GoogleCodeExporter commented 8 years ago
Also getting this problem, have tried two phones with two different accounts. 
This is what happens:
1. The first attempt fails - order is automatically cancelled. User gets email 
telling them "attempt to authorise the transaction failed."
2. The second attempt appears to succeed - although the "Authorizing" window 
remains open for a long time (over a minute). While the "Authorizing" window is 
still open, the email is received saying the purchase succeeded. 
3. Despite the credit card being charged, the purchase message is not received 
by the app. Doing a "Restore Transactions" also has no effect.

Am essentially using the standard example billing code (without the UI).
This issue is preventing release of my apps that would otherwise be ready. 
Please fix ASAP!

Original comment by spwebga...@gmail.com on 24 Jun 2011 at 10:58

GoogleCodeExporter commented 8 years ago
Sounds like you're having the bug mentioned in Issue#32, which I believe is 
different from this one.

The good news is they have a fix for #32 and are pushing it out soon (see 
Trevor's comment on that issue for details)

Original comment by rejeanpo...@gmail.com on 24 Jun 2011 at 11:07

GoogleCodeExporter commented 8 years ago
If this happens for purchases, then it probably happens for refunds and 
cancellations too - a user who gets a refund may well end up keeping the 
application because the message is not delivered.

Any solution yet? Perhaps a more frequent "Restore Transactions"?

Original comment by theol...@gmail.com on 17 Aug 2011 at 11:41

GoogleCodeExporter commented 8 years ago
Actually, at this time, for my app, the in-app billing seems to work very well.

During the month of July there was a really unplesant bug, issue #32, but 
that's gone now. There was also a bug in my applicaiton's billing code, which I 
recently fixed.

Judging by the comments above, there was still another cause of lost 
notifications on Google's side, but I'm not seeing any complaints at this time, 
so as far as I'm concerned, it appears to be fixed as well.

My app uses one managed item, which is a free-to-premium upgrade.

Original comment by kmans...@gmail.com on 18 Aug 2011 at 10:00

GoogleCodeExporter commented 8 years ago
This problems seems to have increased tremendously over the last 2 days. I have 
had no such problems for almost a month, but now I have seen 5 transactions 
where Google charged the user but did not send a notification to my app, and 
hence the purchase wasn't activated for the user.

My application hasn't changed, but I do know that many users are being upgraded 
to Android Market 3.0.27

I strongly suspect that this is a problem with 3.0.27 (along with Issue 39). 

Why isn't anyone siggned to look at this 'Accepted' bug which is marked as 
'Critical' and has been open for >4 months now?

Original comment by virajm...@gmail.com on 19 Aug 2011 at 5:16

GoogleCodeExporter commented 8 years ago
I am also facing the exact same problem. My App is not published yet, but I am 
testing the in-app billing implementation. The purchase is successful however, 
the application does not receive any purchase notification, so the required 
content is not downloaded.

I am following all the implementation steps mentioned on the developer help 
site. And it works perfect for my other app.

Original comment by jjpaulla...@gmail.com on 18 Sep 2011 at 11:21

GoogleCodeExporter commented 8 years ago
We are experiencing this issue. It is very rare and unable to properly 
reproduce it. Please fix this Google!
Thanks!
Sasa

Original comment by sasa.ske...@gmail.com on 15 Nov 2011 at 9:42

GoogleCodeExporter commented 8 years ago
I have problem with the android market notification too. When the app sends the 
purchase request, it might get the notification from server after 10 minutes or 
more occasionally.

Anyone could verify that?

Thanx.

Original comment by m.endeav...@gmail.com on 24 Nov 2011 at 9:23

GoogleCodeExporter commented 8 years ago
Suddenly android.test.purchased request sent from google's Dungeons sample is 
not being responded by the android market. Anyone facing this issue ? Test 
accounts & public keys are properly setup, but still not getting purchase state 
changed notification. Any clues ?

Original comment by mobabs...@gmail.com on 2 Dec 2011 at 7:02

GoogleCodeExporter commented 8 years ago
Market does never send back IN_APP_NOTIFY. 
Running in app billing with the android test item runs well tho.

Original comment by schnitze...@gmail.com on 27 Jan 2012 at 1:18

GoogleCodeExporter commented 8 years ago
Dear Google,

Why is this not fixed?  This is a serious bug where people pay good money and 
our apps are not always told when somebody buys something.  A billing system 
should be transactional in the sense that you do not charge the person unless 
you hear back from us.  We are paying 30% of our sales to you and I don't even 
see where Google adds serious value.  Apple's billing system at least works and 
their users are happy.  When they purchase something the app feature is enabled 
because they have a reasonable design.

Original comment by mmich...@audiogalaxy.com on 1 Mar 2012 at 2:25

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
In the past month, we've been having a real problem with "stuck" purchases 
(reports 'already purchased' even though all transactions have been 
refunded/cancelled) and with never-arriving IN_APP_NOTIFY's

Original comment by avrazgu...@gmail.com on 6 Sep 2012 at 2:13

GoogleCodeExporter commented 8 years ago
small update to my last comment (#27). We were able to trap a new account (new 
email + new credit card) into the purchase--cancel cycle by doing the following:

1. Make an in-app purchase as usual (this is the first purchase for this 
account)
2. Go to the merchant console. At this point the purchase should be marked as 
shipped, but not charged.
3. Cancel the purchase.
4. Now any subsequent purchases (at least of the same product) will not receive 
IN_APP_NOTIFY and subsequently be cancelled

Original comment by avrazgu...@gmail.com on 6 Sep 2012 at 10:41

GoogleCodeExporter commented 8 years ago
We experience absolutely same issue with our test account for over a month now. 
I submitted the issue to the development support three times with no answer. 
Auto-reply sais "If you are concerned about canceled/refunded orders, please 
note that Google Play team strives to keep our services available to developers 
at all times. We consistently investigate instances of problematic transactions 
and work hard to resolve these issues as soon as possible. No action is needed 
on your part." It looks they have a fraud detection system which cancels new 
orders in our case, and they cannot control it properly. This is very 
frustrating.

Original comment by beworker on 7 Sep 2012 at 4:58

GoogleCodeExporter commented 8 years ago
Agree with @beworker. We are experiencing this issue ever more frequently over 
the last two-three weeks. It was difficult to explain to users when we simply 
had no more information. Until it stopped working for our own accounts. Now I 
am not able to make IAP in my own app! #DoubleFrustration

Original comment by jan.d...@sleekbit.com on 7 Sep 2012 at 7:11

GoogleCodeExporter commented 8 years ago
Adding fuel to the fire.  We see about 1-3 cases per day of users asking where 
their content is after purchasing in app and telling them to use the "restore 
purchases" option in the app always resolves the problem.

Original comment by r...@equazi.com on 13 Sep 2012 at 1:00

GoogleCodeExporter commented 8 years ago
This is a problem we have also come across with our released app.  We get about 
2-3 customers every day complaining that they have not received their purchases 
(this is for unmanaged items).

It's not something we have been able to directly reproduce ourselves, although 
during our testing we did notice that sending a restore transaction request 
will also send any in app notify messages again that we haven't sent a confirm 
back for, even for unmanaged items.  So now we're considering sending this 
message every time the app starts, not ideal and not something either Google or 
ourselves want but we have no option it seems.

Original comment by ObeliskD...@gmail.com on 17 Sep 2012 at 10:30

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
We see this happening all the time across all of our products.
We have a good workaround for managed purchases which utilizes "restore 
transactions", but for unmanaged purchases - we have no such workaround, and 
get a couple of user reports daily.

It happens more frequently when the same user tries to purchase the same 
unmanaged product twice (or more) in a row.

Original comment by guy.tavor on 24 Oct 2012 at 8:14

GoogleCodeExporter commented 8 years ago
I personally don't think google is doing anything about this issue. It's been a 
long time already.

Original comment by wimvanbe...@gmail.com on 24 Oct 2012 at 8:15

GoogleCodeExporter commented 8 years ago
There is a work around, which although not ideal, does work and is also 
retroactive.

If you send a restore transactions message then not only will you receive 
transactions for managed purchases; you will also receive transactions for 
unmanaged transactions *that have not been sent the CONFIRM_NOTIFICATIONS 
message*.

It would, of course, be much better if Google found and fixed the issue.  Or 
even better, throw away the whole mess they call their IAP implementation and 
present something much simpler to developers (take a page from the clean and 
simple Amazon implementation and learn from them).

Original comment by ObeliskD...@gmail.com on 29 Oct 2012 at 4:11

GoogleCodeExporter commented 8 years ago
Ping. I have to manually credit people for purchases daily because of lost 
unmanaged transactions.
Am I missing something here, or is IAP for unmanaged transactions broken, and 
not being fixed?

Original comment by guy.tavor on 5 Nov 2012 at 9:40

GoogleCodeExporter commented 8 years ago
Dear Googlers, please do fix it ASAP!

We are getting tons of unsatisfied customers and bad ratings because of this 
bug, and we have to manually instruct each customer to uninstall & install our 
apps to work around this bug...

Original comment by dim...@gmail.com on 9 Nov 2012 at 10:09

GoogleCodeExporter commented 8 years ago
Hi all - we've seen this daily, and have had to manually credit our users, who 
also went on to down-rate our product because of this, BUT

Finally - Here is a workaround we have implemented, that works for both managed 
and unmanaged transactions.

http://stackoverflow.com/questions/13330146/android-in-app-purchase-lost-transac
tions

Please note, though, that if you credited your users "manually", this will 
re-credit them with their lost transactions.

Original comment by g...@scoompa.com on 11 Nov 2012 at 10:07

GoogleCodeExporter commented 8 years ago
Please, this should be the top priority for the entire android dev team at 
google.
A sizeable chunk of all customers currently gets ripped off by not receiving 
what they paid for.
How is this not a red alert at google?

Every day I have to instruct customers to delete and reinstall, in order to 
receive their virtual goods.
Most customers have been very polite and patient, which surprised me.
It is the nr1 source of one star reviews for my game though.

Original comment by b.st...@gmail.com on 20 Nov 2012 at 8:38

GoogleCodeExporter commented 8 years ago
Has anyone here tried IAB v3 and can confirm this issue doesn't occur anymore?  

Original comment by i2g4andr...@gmail.com on 4 Jan 2013 at 2:23

GoogleCodeExporter commented 8 years ago
IABv3 is synchronous and confirmed to solve the issue

Original comment by g...@scoompa.com on 4 Jan 2013 at 6:07

GoogleCodeExporter commented 8 years ago
Yes i am havin this problem it wont give me preimium levels and im willing to 
pay

Original comment by ginop...@gmail.com on 28 Jan 2013 at 2:59

GoogleCodeExporter commented 8 years ago
Got it here also. Do you know if there's some way to solve this with IABv2? I 
cannot use IABv3 because I need also subscriptions. 

Let me know as soon as possible.

Original comment by stermi on 7 Feb 2013 at 9:31

GoogleCodeExporter commented 8 years ago
Does v3 really solve this issue?
I'm having same issue in v3. When network connection is lost while completing 
purchase in Google Play app, app never get the purchase.
This is even worse than v2 cause v3 depends heavily on local cache. Unlike 
restore_transactions, getPurchase() just keeps reading empty cache and returns 
nothing.

Original comment by sol...@gmail.com on 26 Feb 2013 at 7:06

GoogleCodeExporter commented 8 years ago
I am also experiencing this issue with v3. The code used is the one from the 
samples.

I get some reports from users that their card is charged but the app shows my 
error dialog telling them there was a problem with the purchase (and 
accordingly not getting what they paid for). For some, telling them to 
reinstall the app works but for some it doesn't. I had to refund a couple of 
people because of this.

Original comment by catalin....@gmail.com on 19 Aug 2013 at 9:19

GoogleCodeExporter commented 8 years ago
Priority: Critical
Action: None
Status: Unknown
Users Impacted: All Android Developers

Does Google care? Or is 97% enough for them?

Original comment by cory.tr...@gmail.com on 6 Nov 2013 at 3:39

GoogleCodeExporter commented 8 years ago
In the past few days we see a steap jump in "lost transactions" in code that 
has not been changed, nor did it get additional traffic.
Does anyone else experience this?

Original comment by g...@scoompa.com on 21 May 2014 at 12:14