Skip to content

Commit

Permalink
feat(inAppPurchase): add inAppPurhcase plugin (#423)
Browse files Browse the repository at this point in the history
* feat(inAppPurchase): add inAppPurchase

* add otherPromise option to decorator
  • Loading branch information
ihadeed committed Aug 26, 2016
1 parent 6171646 commit 8526e89
Show file tree
Hide file tree
Showing 2 changed files with 125 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/index.ts
Expand Up @@ -41,7 +41,7 @@ import { Facebook } from './plugins/facebook';
import { File } from './plugins/file';
import { Transfer } from './plugins/filetransfer';
import { Flashlight } from './plugins/flashlight';
import {Geofence} from './plugins/geofence';
import { Geofence } from './plugins/geofence';
import { Geolocation } from './plugins/geolocation';
import { Globalization } from './plugins/globalization';
import { GooglePlus } from './plugins/google-plus';
Expand All @@ -53,6 +53,7 @@ import { IBeacon } from './plugins/ibeacon';
import { ImagePicker } from './plugins/imagepicker';
import { ImageResizer } from './plugins/imageresizer';
import { InAppBrowser } from './plugins/inappbrowser';
import { InAppPurchase } from './plugins/inapppurchase';
import { Insomnia } from './plugins/insomnia';
import { Instagram } from './plugins/instagram';
import { IsDebug } from './plugins/is-debug';
Expand All @@ -65,7 +66,6 @@ import { NativeStorage } from './plugins/nativestorage';
import { MediaPlugin } from './plugins/media';
import { Network } from './plugins/network';
import { OneSignal } from './plugins/onesignal';

import { PhotoViewer } from './plugins/photo-viewer';
import { ScreenOrientation } from './plugins/screen-orientation';
import { PinDialog } from './plugins/pin-dialog';
Expand Down Expand Up @@ -158,6 +158,7 @@ export {
GooglePlus,
GoogleAnalytics,
Hotspot,
InAppPurchase,
Insomnia,
Instagram,
Keyboard,
Expand Down Expand Up @@ -236,6 +237,7 @@ window['IonicNative'] = {
ImagePicker: ImagePicker,
ImageResizer: ImageResizer,
InAppBrowser: InAppBrowser,
InAppPurchase: InAppPurchase,
Instagram: Instagram,
IsDebug: IsDebug,
Keyboard: Keyboard,
Expand Down
121 changes: 121 additions & 0 deletions src/plugins/inapppurchase.ts
@@ -0,0 +1,121 @@
import {Plugin, Cordova} from './plugin';


/**
* @name InAppPurchase
* @description
* A lightweight Cordova plugin for in app purchases on iOS/Android.
*
* @usage
* ```ts
* import {InAppPurchase} from 'ionic-native';
*
* InAppPurchase
* .getProducts(['com.yourapp.prod1', 'com.yourapp.prod2', ...])
* .then((products) => {
* console.log(products);
* // [{ productId: 'com.yourapp.prod1', 'title': '...', description: '...', price: '...' }, ...]
* })
* .catch((err) => {
* console.log(err);
* });
*
*
* InAppPurchase
* .buy('com.yourapp.prod1')
* .then((data)=> {
* console.log(data);
* // {
* // transactionId: ...
* // receipt: ...
* // signature: ...
* // }
* })
* .catch((err)=> {
* console.log(err);
* });
*
* ```
*
* @advanced
*
* ```ts
* // fist buy the product...
* InAppPurchase
* .buy('com.yourapp.consumable_prod1')
* .then(data => InAppPurchase.consume(data.productType, data.receipt, data.signature))
* .then(() => console.log('product was successfully consumed!'))
* .catch( err=> console.log(err))
* ```
*
*
*/
@Plugin({
plugin: 'cordova-plugin-inapppurchase',
pluginRef: 'inAppPurchase',
platforms: ['Android', 'iOS'],
repo: 'https://github.com/AlexDisler/cordova-plugin-inapppurchase'
})
export class InAppPurchase {

/**
* Retrieves a list of full product data from Apple/Google. This method must be called before making purchases.
* @param {array<string>} productId an array of product ids.
* @returns {Promise} Returns a Promise that resolves with an array of objects.
*/
@Cordova({
otherPromise: true
})
static getProducts(productId: string[]): Promise<any> { return; }

/**
* Buy a product that matches the productId.
* @param {string} productId A string that matches the product you want to buy.
* @returns {Promise} Returns a Promise that resolves with the transaction details.
*/
@Cordova({
otherPromise: true
})
static buy(productId: string): Promise<{transactionId: string, receipt: string, signature: string, productType: string}> { return; }

/**
* Same as buy, but for subscription based products.
* @param {string} productId A string that matches the product you want to subscribe to.
* @returns {Promise} Returns a Promise that resolves with the transaction details.
*/
@Cordova({
otherPromise: true
})
static subscribe(productId: string): Promise<{transactionId: string, receipt: string, signature: string, productType: string}> { return; }

/**
* Call this function after purchasing a "consumable" product to mark it as consumed. On Android, you must consume products that you want to let the user purchase multiple times. If you will not consume the product after a purchase, the next time you will attempt to purchase it you will get the error message:
* @param {string} productType
* @param {string} receipt
* @param {string} signature
*/
@Cordova({
otherPromise: true
})
static consume(productType: string, receipt: string, signature: string): Promise<any> { return; }

/**
* Restore all purchases from the store
* @returns {Promise} Returns a promise with an array of purchases.
*/
@Cordova({
otherPromise: true
})
static restorePurchases(): Promise<any> { return; }

/**
* Get the receipt.
* @returns {Promise<string>} Returns a promise that contains the string for the receipt
*/
@Cordova({
otherPromise: true,
platforms: ['iOS']
})
static getReceipt(): Promise<string> { return; }

}

0 comments on commit 8526e89

Please sign in to comment.