From e38f8bf4eff5be34765c0b1fcb8e3eece527cfe3 Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Thu, 11 Jun 2015 22:16:09 +0200 Subject: [PATCH] amazon payments: wip --- website/src/controllers/payments/amazon.js | 36 +++++++++++++++++++--- website/src/controllers/payments/index.js | 1 + website/src/routes/payments.js | 1 + 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/website/src/controllers/payments/amazon.js b/website/src/controllers/payments/amazon.js index f6c79f07ea..4c48f354ef 100644 --- a/website/src/controllers/payments/amazon.js +++ b/website/src/controllers/payments/amazon.js @@ -1,6 +1,7 @@ var amazonPayments = require('amazon-payments'); var nconf = require('nconf'); var async = require('async'); +var shared = require('../../../../common'); var isProd = nconf.get("NODE_ENV") === 'production'; var payment = amazonPayments.connect({ @@ -28,32 +29,59 @@ exports.checkout = function(req, res, next){ return res.json(400, {err: 'Order Reference Id not supplied.'}); } + var orderReferenceId = req.body.orderReferenceId; + async.series({ setOrderReferenceDetails: function(cb){ + console.log('setOrderReferenceDetails') payment.offAmazonPayments.setOrderReferenceDetails({ - + AmazonOrderReferenceId: orderReferenceId, + OrderReferenceAttributes: { + OrderTotal: { + CurrencyCode: 'USD', + Amount: 5 + }, + SellerNote: 'HabitRPG Gems', + SellerOrderAttributes: { + SellerOrderId: shared.uuid(), + StoreName: 'HabitRPG' + } + } }, cb); }, confirmOrderReference: function(cb){ + console.log('confirmOrderReference') payment.offAmazonPayments.confirmOrderReference({ - + AmazonOrderReferenceId: orderReferenceId }, cb); }, authorize: function(cb){ + console.log('authorize') payment.offAmazonPayments.authorize({ - + AmazonOrderReferenceId: orderReferenceId, + AuthorizationReferenceId: shared.uuid().substring(0, 32), + AuthorizationAmount: { + CurrencyCode: 'USD', + Amount: 5 + }, + SellerAuthorizationNote: 'HabitRPG Donation', + TransactionTimeout: 0, + CaptureNow: true }, cb); }, closeOrderReference: function(cb){ + console.log('closeOrderReference') payment.offAmazonPayments.closeOrderReference({ - + AmazonOrderReferenceId: orderReferenceId }, cb); } }, function(err, results){ + if(err) return next(err); + res.send(200); }); }; \ No newline at end of file diff --git a/website/src/controllers/payments/index.js b/website/src/controllers/payments/index.js index 51b39a6c92..00b72ace62 100644 --- a/website/src/controllers/payments/index.js +++ b/website/src/controllers/payments/index.js @@ -171,6 +171,7 @@ exports.paypalCheckoutSuccess = paypal.executePayment; exports.paypalIPN = paypal.ipn; exports.amazonVerifyAccessToken = amazon.verifyAccessToken; +exports.amazonCheckout = amazon.checkout; exports.iapAndroidVerify = iap.androidVerify; exports.iapIosVerify = iap.iosVerify; diff --git a/website/src/routes/payments.js b/website/src/routes/payments.js index 007ca2fd68..a8f75b577e 100644 --- a/website/src/routes/payments.js +++ b/website/src/routes/payments.js @@ -18,6 +18,7 @@ router.post("/stripe/subscribe/edit", auth.auth, i18n.getUserLanguage, payments. router.get("/stripe/subscribe/cancel", auth.authWithUrl, i18n.getUserLanguage, payments.stripeSubscribeCancel); router.post('/amazon/verifyAccessToken', auth.auth, i18n.getUserLanguage, payments.amazonVerifyAccessToken); +router.post('/amazon/checkout', auth.auth, i18n.getUserLanguage, payments.amazonCheckout); router.post("/iap/android/verify", auth.authWithUrl, /*i18n.getUserLanguage, */payments.iapAndroidVerify); router.post("/iap/ios/verify", auth.auth, /*i18n.getUserLanguage, */ payments.iapIosVerify);