因此,我需要創建一個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