In-App Purchases are a wonderful, wonderful thing, and have in a few short years created a multi-billion dollar industry of their own. They’re convenient, they’re fast and, most of all, they stop you from having to type out your card details every time you want to buy something.
That all said, we know that there are a number of situations in which In-App Purchases (IAPs) just don’t really make sense. Perhaps access to content is bundled as part of a bigger membership package, or perhaps you don’t fancy Apple, Google and Amazon taking their 30% commission from your sales.
ANOTHER WAY TO PAY?
So, what are your alternatives if you don’t want to run your content purchasing through IAPs? On iOS, Apple makes your options pretty clear: there are none. Here’s the official wording:
“If you want to unlock features or functionality within your app, (by way of example: subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use in-app purchase. Apps may not use their own mechanisms to unlock content or functionality, such as license keys, augmented reality markers, QR codes, etc. Apps and their metadata may not include buttons, external links, or other calls to action that direct customers to purchasing mechanisms other than in-app purchase.”
Trying to circumvent this is a very fast way to get your app rejected. Spotify are a notable example of how closely developers have to hew to these guidelines. Tapping the “Premium” button on iOS will take you to a lovely screen detailing the benefits of premium alongside the line “Spotify Premium can’t be purchased in this app”. No URL, no hint of where one might be able to subscribe, no nothing.
Google and Amazon, pleasingly, don’t have any such restrictions and you’re free to allow your users to purchase their subscriptions using whatever payment gateway and method you like.
Perhaps, though, you’re looking for a deeper relationship with your customers, and your real goal is to bring them fully into your ecosystem without sacrificing the ease of IAPs. With that goal in mind we’ve integrated with the Apple and Google app stores to allow you to harness the ease of In-App Purchases while still allowing you to create and maintain a record of your user and their subscriptions.
THE BEST OF BOTH
Pugpig receipt postback follows a relatively simple flow. Once a user has successfully purchased a subscription via IAP, we immediately present them with a simple screen encouraging them to create an account with you, the publisher. They can follow the prompts there and then to create this account, which we’ll securely send to your subscription system.
To avoid being too onerous for users (and to stay on the good side of the App Store Review Guidelines) this process can be dismissed at any time. However, we’ve also made it accessible from the settings so that unregistered users can launch the sign-up flow at any point.
Our default receipt postback user flow
Now that the user exists in your database, you need to know a little more about them. Specifically, you need to know what kind of subscription they’ve purchased and whether it’s still valid or not. We can provide you with the information needed to securely validate the user’s subscription with the app store. This will enable you to check what kind of subscription the user has purchased, whether it’s still active and when it’s due to expire.
Your subscription system can then validate the receipt again when necessary. This is in tandem with the validation we already perform to ensure a user has the correct access.
Setting up receipt postback isn't quite plug-and-play, it requires a little custom work to hook up to your desired system and theme correctly, and it will require an app release to enable the feature for new and existing users.
Integrating receipt postback into your existing auth
When a user purchases an in-app purchase, you will get sent the user info and the receipt. We recommend that you validate the token of the receipt, read the receipt and subsequently add any applicable subscriptions or single issue purchases to the user.
Please be aware that a receipt can have multiple subscriptions/multiple single-issue purchases.
You can refer to Apple's documentation on receipt validation here. Google Play has documentation for checking the purchase and consumption status of an in-app item (i.e. single issue purchase) and documentation for checking whether a user's subscription purchase is valid and returns its expiry time here.
If you've got any questions about subscriptions, receipts, or anything else for that matter, don't hesitate to get in touch at firstname.lastname@example.org