Update 2: +Trevor Johns informed me that the Market/Checkout implemented a variety of changes on Dec 22 that fixed a lot of issues. I can confirm that I have not had any new issues since Dec 22. However, a lot of my older orders are still unreported or are missing developer payloads.

Update 1: +Trevor Johns of the Market Developer relations team has contacted me... will keep this post updated with the results of our findings.

Don't Use Android Market In App Billing. Seriously.

Whether you are a consumer, or a developer, you do not want to purchase or use Android Market In App Billing. Why? Because there's a 3-4% reported failure rate. [1]

The way in app billing works:
1) User makes a purchase.
2) Android Market purchase begins.
3) The purchase completes, and the user is returned to the application
4) The purchase is reported to the application. [2]

Seems simple enough. The problem though is that step 4 never happens: the application never gets a report of the purchase succeeding. However, the credit card has been charged. Furthermore, you can't initiate another attempt to purchase, because the Android Market will prevent duplicate purchases. [3] To add insult to injury, the consumer does not even have the usual luxury of a 15 minute refund window, because it is not possible to refund in app purchases.

If your app is afflicted by this bug on a user's phone, it is forever broken. Even if your app requests a list of all in app purchases from the market, there is no response from the Market, and the user will not be able to access their purchases for that app.

The end result is that the user gets robbed, and the developer gets a 1 star rating and has to manually fix the user's purchase or refund it. [4]

This is not an issue just occurring with my apps. Other developers, such as +François Simond aka Supercurio, Chainfire, and +Adriano Maia aka NotifyMyAndroid, have run into this as well.

I have reached out to the Android Market team several times about this (and this is a feat in itself, I dare you to try to find a support contact that actually connects you to a live person). So, now, I write this, shamelessly leveraging my follower count, to push this issue some more and warn developers and users about the repercussions of using a broken billing system.


So, as an open invitation to the Android Market team, I will happily provide you order numbers for broken purchases. I'd love to see this get fixed, as outside of this, the Market works great. But a serious issue such as this, should not go ignored for so long. Given that +Android is taking 30% off the top of our sales, there should be some accountability and support here.



PS, Another in app purchasing bug: A managed purchase gets "cancelled" during the purchase process. The user then tries to purchase again, but can't because another purchase is in progress. This happened to me... while trying to purchase my own app.



[1] This statistic comes from my sales of ROM Manager and DeskSMS. Considering this is the reported failure rate, it can conceivably be higher. I have disabled ROM Manager's in app purchases (and use a normal paid applications instead) simply because the failure rate at that volume of sales is significant.

[2] A signed payload for the ACTION_PURCHASE_STATE_CHANGED broadcast reports the purchase that was made. This same broadcast is also supposed to occur on RESTORE_TRANSACTIONS, and also fails in that instance. 500 error in logcat from "Vending".

[3] Duplicate purchases are not allowed with "managed" in app purchases.

[4] I ended up having to create a redemption/activation code system to me to fix these broken purchases and provide the user what they paid for.
Shared publiclyView activity