Cocoon.InApp class provides a multiplatform, easy to use and secure in-app purchase API. Built-in support for local and server-side receipt validation, consumable and non-consumable purchase tracking and local products cache. Single JavaScript API for multiple IAP providers.
Example
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
// Basic usage, register callbacks first
service = Cocoon.InApp;
service.on("purchase", {
start: function(productId) {
console.log("purchase started " + productId);
},
error: function(productId, error) {
console.log("purchase failed " + productId + " error: " + JSON.stringify(error));
},
complete: function(purchase) {
console.log("purchase completed " + JSON.stringify(purchase));
}
});
// Service initialization
service.initialize({
autofinish: true
},
function(error){
if(error){
console.log("Error: " + error);
}
});
// Fetching products from server
service.fetchProducts(productIds, function(products, error){
if(error){
console.log("Error: " + error);
}
else {
var next = [];
for (var i = 0; i < products.length; ++i) {
var product = products[i];
console.log(product);
}
}
});
// Purchasing products
service.purchase(product.productId, 3, function(error) { // Optional sugar callback
if(error){
console.log("Error: " + error);
}
else {
console.log("Successfully purchased);
}
});
Methods
-
<static> canPurchase() → {boolean}
-
This method allows you to check is the InApp service is available and enabled in this platform. Not all iOS and Android devices will have the InApp service available or enabled. so you should check if it is before calling any other method.
Returns:
True if the service is available and false otherwise. Cocoon.InApp.canPurchase();
- Type
- boolean
-
<static> consume(productId, quantity, callback)
-
Consumes a purchase. This makes that product to be purchasable again (on Android).
Parameters:
Name Type Description productId
string The id or alias of the product to be consumed.
quantity
number The quantity to be consumed, default value 1.
callback
function The callback function. It receives the following parameters:
- Consumed - The quantity consumed.
- Error.
Example
-
<static> fetchProducts(productIds, callback)
-
Fetches the products information from the store.
Parameters:
Name Type Description productIds
object Array of ids of products.
callback
function The callback function.
- An array of Cocoon.InApp.Product.
- Error.
Example
-
<static> finishPurchase(transactionId)
-
Finishes a purchase transaction and removes the transaction from the transaction queue. You don't need to finish purchases if the autoFinishPurchases param is enabled in initialization (enabled by default) This method must be called after a purchase finishes successfully and the "success" event inside of the "on purchase products" callback has been received. If the purchase includes some asset to download from an external server this method must be called after the asset has been successfully downloaded. If you do not finish the transaction because the asset has not been correctly downloaded the "purchase" event will be called again later on.
Parameters:
Name Type Description transactionId
string The transactionId of the purchase to finish.
Example
1
Cocoon.InApp.finishPurchase(product.TransactionId);
-
<static> getProducts() → {object}
-
Returns all the locally cached InApp products.
Returns:
An array of Cocoon.InApp.Product that represents all the local products.
- Type
- object
Example
1
var products = Cocoon.InApp.getProducts();
-
<static> initialize(params, callback)
-
Starts the InApp Service. This will make the system to initialize the InApp callbacks will start to be received after calling this method. Because of this, you should have set your event handler before calling this method, so you won't lose any callback.
Parameters:
Name Type Description params
Cocoon.InApp.Settings The initialization params.
callback
function The callback function.It receives the following parameters:
- Error.
Example
-
<static> isPurchased(productId) → {boolean}
-
Returns if a product has been already purchased or not.
Parameters:
Name Type Description productId
string The product id of the product to be checked.
Returns:
A boolean that indicates whether the product has been already purchased.
- Type
- boolean
Example
1
console.log(Cocoon.InApp.isPurchased(productId));
-
<static> productForId(productId) → {Cocoon.InApp.Product}
-
Gets the product information given a product indetifier. It uses a local cache, so fetchProducts have to be called before if products are not saved from previous execution.
Parameters:
Name Type Description productId
string The product id of the product to be checked.
Returns:
The product. var product = Cocoon.InApp.productForId(productId);
- Type
- Cocoon.InApp.Product
-
<static> purchase(productId, quantity, callback)
-
Requests a product purchase given its product id.
Parameters:
Name Type Description productId
string The id or alias of the product to be purchased.
quantity
number The quantity to be purchased, default value 1.
callback
function The callback function. It receives the following parameters:
- Error.
Example
-
<static> restorePurchases(callback)
-
Restores all the purchases from the platform's market. For each already purchased product the event "purchase" will be called.
Parameters:
Name Type Description callback
function The callback function. It receives the following parameters:
- Error.
Example
-
<static> setLudeiServerValidationHandler()
-
Use Ludei's server to validate purchases. To enable validation using Ludei's server you first need to create an account in Ludei's Cloud server and create a project with you bundleId.
Example
1
Cocoon.InApp.setLudeiServerValidationHandler();
-
<static> setValidationHandler(validationHandler)
-
Sets a custom function to validate purchases with your own server
Parameters:
Name Type Description validationHandler
function Example
-
<static> stockOfProduct(productId) → {number}
-
Returns the quantity of available items for a specific productId.
Parameters:
Name Type Description productId
string The product id of the product to be checked.
Returns:
A Number that indicates the available quantity of a productId to consume.
- Type
- number
Example
1
console.log(Cocoon.InApp.stockOfProduct(product.productId));
Events
-
On purchase
-
Allows to listen to events about the purchasing process.
- The callback 'start' receives a parameter the product id of the product being purchased when the purchase of a product starts.
- The callback 'complete' receives as parameter the Cocoon.InApp.PurchaseInfo object of the product being purchased when the purchase of a product is completed.
- The callback 'error' receives a parameters the product id and an error message when the purchase of a product fails.
Example
1 2 3 4 5 6 7 8 9 10 11
Cocoon.InApp.on("purchase", { start: function(productId) { console.log("purchase started " + productId); }, error: function(productId, error) { console.log("purchase failed " + productId + " error: " + JSON.stringify(error)); }, complete: function(purchase) { console.log("purchase completed " + JSON.stringify(purchase)); } });
Members
-
<static> Product
-
The object that represents a product in the store.
Properties:
Name Type Description Cocoon.InApp.Product
object The object itself
Properties
Name Type Description productId
string The id of the product.
title
string The title of the product.
description
string The description of the product.
localizedPrice
number The price of the product in local currency.
price
number The price of the product.
-
<static> PurchaseInfo
-
The object that represents the information of a purchase.
Properties:
Name Type Description Cocoon.InApp.PurchaseInfo
object The object itself
Properties
Name Type Description productId
string The product id of the purchase.
transactionId
string The transaction id of the purchase.
purchaseDate
timestamp The date when the purchase was completed.
quantity
number The number of products of the productId kind purchased in this transaction.
-
<static> Settings
-
The object that represents a product in the store.
Properties:
Name Type Description Cocoon.InApp.Settings
object The object itself
Properties
Name Type Description autofinish
boolean If True, the transactions will finish automatically.