因此,我需要创建一个PhoneGap应用程序,在注册过程中,要求用户注册一个定期的每月订阅。PhoneGap - iOS - 周期性订阅应用程序 - 购买问题
我发现PhoneGap的这一优良教程在购买应用程式:https://fovea.cc/blog/index.php/3-steps-tutorial-for-phonegap-2x-in-app-purchase-on-ios/
并且遵循它(代码如下)。
所以我的问题是,我点击订阅按钮,并通过所有的iOS从对话框中行走,onPurchase似乎并不叫...
如果我关闭应用程序,回来并且onPurchase会立即被调用,然后每次加载应用程序时都会调用它。
一个想法是,iOS告诉我这个用户有一个积极的订阅,这很酷...但它似乎并没有告诉我什么时候第一次成功完成购买。
购买按钮只是说,他们开始的过程...他们可以随时取消,所以我不能离开。我需要告诉我用户已成功注册我的每月订阅。
想法?
var IAP = {
list: [config.IAP],
products: {}
};
// Called when I load the app on a device
function InitializePayment(){
LogInfo("Loading IAPs " + IAP.list[0]);
// Check availability of the storekit plugin
if (!window.storekit) {
HandleError('In-App Purchases not available');
return;
}
storekit.init({
ready: IAP.onReady,
purchase: IAP.onPurchase,
restore: IAP.onRestore,
error: IAP.onError
});
}
// IN APP PAYMENT
IAP.onReady = function() {
// Once setup is done, load all product data.
storekit.load(IAP.list, function (products, invalidIds) {
LogInfo('IAPs Loaded...');
for (var j = 0; j < products.length; ++j) {
var p = products[j];
LogInfo('Loaded IAP(' + j + '). title:' + p.title + ' description:' + p.description + ' price:' + p.price + ' id:' + p.id);
IAP.products[p.id] = p;
}
IAP.loaded = true;
for (var i = 0; i < invalidIds.length; ++i) {
HandleError("Error: could not load " + invalidIds[i]);
}
});
};
IAP.onPurchase = function (transactionId, productId, receipt) {
LogInfo("IAP Purchase Success!!!");
LogInfo("Transaction: " + transactionId);
LogInfo("Product: " + productId);
LogInfo("Receipt: " + receipt);
var n = (_localStorage['storekit.' + productId]|0) + 1;
_localStorage['storekit.' + productId] = n;
if (IAP.purchaseCallback) {
IAP.purchaseCallback(productId);
delete IAP.purchaseCallback;
}
PaymentSignup(transactionId, receipt, function() {
MovePageLeft("#pageSignupWelcome", _currentPage);
});
};
IAP.onError = function (errorCode, errorMessage) {
if (errorMessage == 'Cannot connect to iTunes Store'){
// this just means that they cancelled a payment...no problem.
return;
}
HandleError('IAP Error: ' + errorMessage);
};
IAP.buy = function (productId, callback) {
LogInfo("User clicked the subscribe button. Woot.");
IAP.purchaseCallback = callback;
storekit.purchase(productId);
};
IAP.onRestore = function (transactionId, productId, transactionReceipt) {
var n = (localStorage['storekit.' + productId]|0) + 1;
localStorage['storekit.' + productId] = n;
};
IAP.restore = function() {
storekit.restore();
};
var renderIAPs = function (el) {
if (IAP.loaded) {
var html = "<ul>";
for(var id in IAP.products) {
var prod = IAP.products[id];
html += "<li>" +
"<div class='iapTitle'>" + prod.title + "</div>" +
"<div class='iapDescription'>" + prod.description + "</div>" +
"<button type='button' " +
"onclick='IAP.buy(\"" + id + "\")'>Subscribe</button>" +
"</li>";
}
html += "</ul>";
el.innerHTML = html;
}
else {
el.innerHTML = "In-App Purchases not available.";
}
};
我正在运行4.0 ...将检查4.1。谢谢! – David