In-App Purchases for Cordova
Need professional help and support? Contact Me.
I dedicate a considerable amount of my free time to developing and maintaining this Cordova plugin, along with my other Open Source software. To help ensure this plugin is kept updated, new features are added and bugfixes are implemented quickly, please donate a couple of dollars (or a little more if you can stretch) as this will help me to afford to dedicate time to its maintenance. Please consider donating if you're using this plugin in an app that makes you money, if you're being paid to make the app, if you're asking for new features or priority bug fixes. Thank you!
This plugin allows In-App Purchases to be made from Cordova, PhoneGap and Ionic applications.
It lets you handle in-app purchases on many platforms with a single codebase.
ios | android | win-8 | win-10/uwp | mac | |
---|---|---|---|---|---|
consumables | ✅ | ✅ | ✅ | ✅ | ✅ |
non consumables | ✅ | ✅ | ✅ | ✅ | ✅ |
subscriptions | ✅ | ✅ | ✅ | ✅ | ✅ |
restore purchases | ✅ | ✅ | ✅ | ✅ | ✅ |
receipt validations | ✅ | ✅ | ✅ | ✅ | |
downloadable content | ✅ | ✅ | |||
introductory prices | ✅ | ✅ | ✅ | ✅ |
- iOS version 6.0 or higher.
- Android version 2.2 (API level 8) or higher
- with Google Play client version 3.9.16 or higher
- Windows Store/Phone 8.1 or higher
- Windows 10 Mobile
- macOS version 10
- Xbox One
- (and any platform supporting Microsoft's UWP)
cordova plugin add cordova-plugin-purchase
Add the following to your config.xml
file:
<gap:plugin name="cordova-plugin-purchase" source="npm" version="9.0.0"></gap:plugin>
Install cordova-plugin-network-information (click for details).
Sometimes, the plugin cannot connect to the app store because it has no network connection. It will then retry either:
- periodically after a certain amount of time;
- when the device fires an 'online' event.
The cordova-plugin-network-information plugin is required in order for the 'online'
event to be properly received in the Cordova application. Without it, this plugin will only be able to use the periodic check to determine if the device is back online.
Install cordova-plugin-advanced-http (click for details).
When making receipt validation requests, the purchase plugin uses by default the browser's ajax capabilities. This sometime causes issues with CORS restriction. CORS also imposes an extra back-and-forth with the server (the CORS preflight request) to ensure the server allows for such request to be made. By installing the advanced-http plugin, you get rid of those issue and benefit from the extra feature of this plugin (like advanced authentication option). Read the advanced-http plugin documentation for details.
See Setup iOS Applications and Setup Android Applications.
If you don't know much about In-App Purchases, you'll find a good overview on the subject from those guys:
- Apple:
- Google:
- Microsoft
They all share the same concepts, so they are a good reads in all cases, with some advice that apply to all platforms.
To ease the beggining of your journey into the intimidating world of In-App Purchase with Cordova, we wrote a guide which hopefully will help you get things done: https://purchase.cordova.fovea.cc/
In short, you'll have two main tasks to accomplish:
- Setup your application and In-App Products on AppStore, Play or Azure platforms using their respective web interfaces.
- Add In-App Purchase code to your application.
For platform setup, the wiki contains good information.
For the code itself, the API Documentation is a definitely a recommended read.
- In-App Purchase Configuration Guide for AppStore Connect
- Learn how to set up and manage In-App Purchases with AppStore Connect.
Have a very simple need? Maybe this will help.
- Simple Non-Renewing Subscriptions
- The easiest way to integrate purchase into an app that only needs a non-renewing subscription.
For proper subscription support, you need a receipt validation server. You can implement your own or use Fovea's receipt validation service.
- Jean-Christophe Hoelt, Author
- Josef Fröhle, Support
- Guillaume Charhon, (now defunct) v1 for android
- Matt Kane, initial iOS code
- Mohammad Naghavi, original unification attempt
- Dave Alden @dpa99c (Apple-hosted IAPs for iOS)
For sponsoring most of JC's work on the plugin.
Ionic Framework Team (http://ionicframework.com/)
For sponsoring the UWP platform.- Maxwell C. Moore (MCM Consulting, LLC)
- Justin Noel @calendee
- Those guys
The MIT License
Copyright (c) 2014-2019, Jean-Christophe Hoelt and contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.