diff --git a/test/api/inAppPurchases.coffee b/test/api/inAppPurchases.coffee index b31e982e71..0256b4bd83 100644 --- a/test/api/inAppPurchases.coffee +++ b/test/api/inAppPurchases.coffee @@ -155,7 +155,7 @@ describe 'In-App Purchases', -> inApp.iosVerify(req, res, next) expect(paymentSpy).to.be.calledOnce - expect(paymentSpy).to.be.calledWith({user: res.locals.user, paymentMethod:'IAP AppleStore'}) + expect(paymentSpy).to.be.calledWith({user: res.locals.user, paymentMethod:'IAP AppleStore', amount: 5.25}) context 'error in setup', -> before -> diff --git a/website/src/controllers/payments/iap.js b/website/src/controllers/payments/iap.js index 6065673287..6da2a29606 100644 --- a/website/src/controllers/payments/iap.js +++ b/website/src/controllers/payments/iap.js @@ -101,9 +101,27 @@ exports.iosVerify = function(req, res, next) { if (iap.isValidated(appleRes)) { var purchaseDataList = iap.getPurchaseData(appleRes); if (purchaseDataList.length > 0) { - if (purchaseDataList[0].productId === 'com.habitrpg.ios.Habitica.20gems') { - //Correct receipt - payments.buyGems({user:user, paymentMethod:'IAP AppleStore'}); + var correctReceipt = true; + for (var index in purchaseDataList) { + switch (purchaseDataList[index].productId) { + case 'com.habitrpg.ios.Habitica.4gems': + payments.buyGems({user:user, paymentMethod:'IAP AppleStore', amount: 1}); + break; + case 'com.habitrpg.ios.Habitica.8gems': + payments.buyGems({user:user, paymentMethod:'IAP AppleStore', amount: 2}); + break; + case 'com.habitrpg.ios.Habitica.20gems': + case 'com.habitrpg.ios.Habitica.21gems': + payments.buyGems({user:user, paymentMethod:'IAP AppleStore', amount: 5.25}); + break; + case 'com.habitrpg.ios.Habitica.42gems': + payments.buyGems({user:user, paymentMethod:'IAP AppleStore', amount: 10.5}); + break; + default: + correctReceipt = false; + } + } + if (correctReceipt) { var resObj = { ok: true, data: appleRes diff --git a/website/src/controllers/payments/index.js b/website/src/controllers/payments/index.js index b1b444006f..1f8935645d 100644 --- a/website/src/controllers/payments/index.js +++ b/website/src/controllers/payments/index.js @@ -137,7 +137,8 @@ exports.cancelSubscription = function(data, cb) { } exports.buyGems = function(data, cb) { - var amt = data.gift ? data.gift.gems.amount/4 : 5; + var amt = data.amount || 5; + amt = data.gift ? data.gift.gems.amount/4 : amt; (data.gift ? data.gift.member : data.user).balance += amt; data.user.purchased.txnCount++; if(isProduction) {