Android In-App Billing failure, saying "You already have a pending order for this item."
I've implemented in-app billing and I'm running into an issue with it. Here is what I see.
- Place an order for an item
- Wait for a little while for the order to go through
- If the purcha开发者_运维百科se is taking a while, the user hits the back button to cancel the purchase
- My app gets notified that the purchase was canceled and it confirms this
- The user and myself both get an email stating that the purchase was canceled
- When the user attempts to purchase the item again, the Market throws an error saying "You already have a pending order for this item."
- The response code is "Service Unavailable"
- Restore transactions yields no transactions
- You can't ever purchase this item with this account
I have found some information about this on the web. http://www.google.com/support/forum/p/Android+Market/thread?tid=375490c831e02ab5&hl=en http://code.google.com/p/marketbilling/issues/detail?id=39
I contacted Google and got an autobot response that they are looking into this.
However, I'm wondering if there is anything I could be doing to cause this.
Oh, and I've also made sure my PendingIntent is good. I have had successful orders.
Update: Here is my stock e-mail to customers that see this. It seems the Android Market has been getting better, as I get fewer and fewer of these now anyhow.
Hello,
This "pending order" error is unfortunately a bug in the Android Market that I cannot control.
To help them raise the priority of this issue, please contact Google at the following web form. http://www.google.com/support/androidmarket/bin/request.py?contact_type=market_phone_tablet
You can tell them to reference bug 5126349, which is their internal tracking number for this.
While there are issues with in-app billing like the links presented here (i was active commenter on issue 39), there are some worthwhile things to check on as well that can cause a 500 response from google.
Namely, "restore transactions" and abusing that call. Abuse of that call is done on a per user basis and i've seen a google account get blocked with a 500 for a few days, which can certainly happen during development to you depending on how you implement.
Best advice here is to expand your testers to more users (or devices with different primary google accounts), running different versions of the android market. If you can get one positive response from someone, then more than likely you're good to go and the rest is at google's door.
精彩评论