Smooth out bugs in IAP, check for incomplete purchases at startup

master
Skylar Ittner 8 years ago
parent a3bfeb18d1
commit 0cee4fc2f8

@ -74,8 +74,8 @@ function buycoins(productId) {
});
})
.then(function () {
loadstorefront();
showShopMessage("Thanks for your purchase!", true);
showShopMessage("Thanks for your purchase!", false);
refreshcoins();
})
.catch(function (err) {
console.log("Error: " + err.message);
@ -157,9 +157,6 @@ function setcoinhtmlfromiap(coinsjson) {
+ "</div>";
});
$('#coin-list').html(coinsHtml);
/*
[{ productId: 'com.yourapp.prod1', 'title': '...', description: '...', price: '...' }, ...]
*/
})
.catch(function (err) {
console.log(err.message);
@ -188,3 +185,11 @@ function loadstorefront() {
loadinventory(); // Make sure purchases stay in sync
// Put it last in case it fails, so it doesn't crash stuff badly
}
function refreshcoins() {
$.getJSON(mkApiUrl('shopitems'), function (data) {
if (data.status == 'OK') {
$('#coinbalance').text(data.balance);
}
});
}

@ -134,3 +134,32 @@
openIntro();
}
</script>
<script>
/*
* Try to restore any broken coin purchases
*/
inAppPurchase
.restorePurchases()
.then(function (data) {
console.log(data);
data.forEach(function (prod) {
if (prod.state == 2 || prod.state == 1) { // Refunded (2) or cancelled (1), let's consume it
inAppPurchase.consume(prod.type, prod.receipt, prod.signature);
} else { // Product is active
$.getJSON(mkApiUrl('processiap', 'gs'), {
os: 'android',
data: prod.receipt,
signature: prod.signature,
id: prod.productId
}, function (result) {
if (result.status == 'OK') {
inAppPurchase.consume(prod.type, prod.receipt, prod.signature);
}
});
}
});
})
.catch(function (err) {
console.log(err);
});
</script>