2016-01-07 21:34:26 +01:00

132 lines
3.6 KiB
JavaScript

/*
* Copyright (C) 2012-2013 by Guillaume Charhon
* Modifications 10/16/2013 by Brian Thurlow
*/
var log = function (msg) {
console.log("InAppBilling[js]: " + msg);
};
var InAppBilling = function () {
this.options = {};
};
InAppBilling.prototype.init = function (success, fail, options, skus) {
options || (options = {});
this.options = {
showLog: options.showLog !== false
};
if (this.options.showLog) {
log('setup ok');
}
var hasSKUs = false;
//Optional Load SKUs to Inventory.
if(typeof skus !== "undefined"){
if (typeof skus === "string") {
skus = [skus];
}
if (skus.length > 0) {
if (typeof skus[0] !== 'string') {
var msg = 'invalid productIds: ' + JSON.stringify(skus);
if (this.options.showLog) {
log(msg);
}
fail(msg);
return;
}
if (this.options.showLog) {
log('load ' + JSON.stringify(skus));
}
hasSKUs = true;
}
}
if(hasSKUs){
return cordova.exec(success, fail, "InAppBillingPlugin", "init", [skus]);
}else {
//No SKUs
return cordova.exec(success, fail, "InAppBillingPlugin", "init", []);
}
};
InAppBilling.prototype.getPurchases = function (success, fail) {
if (this.options.showLog) {
log('getPurchases called!');
}
return cordova.exec(success, fail, "InAppBillingPlugin", "getPurchases", ["null"]);
};
InAppBilling.prototype.refreshPurchases = function (success, fail) {
if (this.options.showLog) {
log('refreshPurchases called!');
}
var self = this;
var onSuccess = function() {
self.getPurchases(function(purchases) {
success(purchases);
}, fail);
};
return cordova.exec(onSuccess, fail, "InAppBillingPlugin", "refreshPurchases", ["null"]);
};
InAppBilling.prototype.buy = function (success, fail, productId) {
if (this.options.showLog) {
log('buy called!');
}
return cordova.exec(success, fail, "InAppBillingPlugin", "buy", [productId]);
};
InAppBilling.prototype.subscribe = function (success, fail, productId) {
if (this.options.showLog) {
log('subscribe called!');
}
return cordova.exec(success, fail, "InAppBillingPlugin", "subscribe", [productId]);
};
InAppBilling.prototype.consumePurchase = function (success, fail, productId) {
if (this.options.showLog) {
log('consumePurchase called!');
}
return cordova.exec(success, fail, "InAppBillingPlugin", "consumePurchase", [productId]);
};
InAppBilling.prototype.getAvailableProducts = function (success, fail) {
if (this.options.showLog) {
log('getAvailableProducts called!');
}
return cordova.exec(success, fail, "InAppBillingPlugin", "getAvailableProducts", ["null"]);
};
InAppBilling.prototype.getProductDetails = function (success, fail, skus) {
if (this.options.showLog) {
log('getProductDetails called!');
}
if (typeof skus === "string") {
skus = [skus];
}
if (!skus.length) {
// Empty array, nothing to do.
return;
}else {
if (typeof skus[0] !== 'string') {
var msg = 'invalid productIds: ' + JSON.stringify(skus);
log(msg);
fail(msg);
return;
}
if (this.options.showLog) {
log('load ' + JSON.stringify(skus));
}
return cordova.exec(success, fail, "InAppBillingPlugin", "getProductDetails", [skus]);
}
};
InAppBilling.prototype.isPurchaseOpen = function (success, fail) {
var onSuccess = function(state) {
var bool = (state == "true") ? true : false;
success(bool);
};
return cordova.exec(onSuccess, fail, "InAppBillingPlugin", "isPurchaseOpen", []);
}
module.exports = new InAppBilling();