Implementing In App purchases in Android?

Edit: Android now supports in-app billing!

Original question:

It looks like Android won't natively support in-app purchases for a while, and when it does there might be a huge user base with devices that don't support them.

What's the best way to implement iPhone-like (additional content or services) in-app purchases in Android using the Android Market if possible?

The solution should consider in particular:

  • For all kinds of in-app purchases: Android Market's 24-hour cancellation policy
  • For consumables/non-consumables: storage of additional content (ie: use precious application memory to avoid piracy, or use SD card to avoid bloating application memory)

Thanks!


Solution 1:

This has changed as of today! There is now an example on the Android Developer site here: https://developer.android.com/google/play/billing/billing_overview

Solution 2:

You can create a premium key application, that will have a key. How you expose that it's your deal ( or you can just check if PremiumKey activity exist ). From the main app you just check for your key and if it's exist enable premium option ) If you're talking about buying OTHER apps from yours - build your list with market url pointed to the other apps ( market:// )

Solution 3:

It is against the Android Market Developer Distribution Agreement to take in-app payment:

3.3 ... All fees received by Developers for Products distributed via the Market must be processed by the Market’s Payment Processor.

Solution 4:

Looks like Paypal has launched a library for accepting in-app payments. See here. Not sure if this system violates the T&C though.

Solution 5:

You say that Android Market doesn't support in-app purchases, and then ask how you can implement in-app purchases using Android Market?(!)

Anyway, if and when they do support it, I imagine it could be distributed as an update to the Android Market application itself, so most users would be able to use the functionality. I believe the Market app updates itself automatically.

Possibly the Market would accept an Intent to trigger a payment via the usual on-device mechanism and return your app (or more likely your server) a callback.