diff --git a/controllers/api.js b/controllers/api.js index f59aa9a2e6..71999dc18f 100644 --- a/controllers/api.js +++ b/controllers/api.js @@ -11,6 +11,7 @@ var tumblr = require('tumblr.js'); var foursquare = require('node-foursquare')({ secrets: secrets.foursquare }); var Github = require('github-api'); var Twit = require('twit'); +var paypal = require('paypal-rest-sdk'); /** * GET /api @@ -254,3 +255,77 @@ exports.getTwitter = function(req, res, next) { }); }); }; + +/** + * GET /api/paypal + * PayPal SDK example + */ +exports.getPayPal = function(req, res, next) { + paypal.configure(secrets.paypal); + var payment_details = { + 'intent': 'sale', + 'payer': { + 'payment_method': 'paypal' + }, + 'redirect_urls': { + 'return_url': secrets.paypal.returnUrl, + 'cancel_url': secrets.paypal.cancelUrl + }, + 'transactions': [{ + 'description': 'Node.js Boilerplate', + 'amount': { + 'currency': 'USD', + 'total': '2.99' + } + }] + }; + paypal.payment.create(payment_details, function (error, payment) { + if(error){ + console.log(error); + } else { + req.session.payment_id = payment.id; + var links = payment.links; + for (var i = 0; i < links.length; i++) { + if (links[i].rel === 'approval_url') { + res.render('api/paypal', { + approval_url: links[i].href + }); + } + } + } + }); +}; + +/** + * GET /api/paypal/success + * PayPal SDK example + */ +exports.getPayPalSuccess = function(req, res, next) { + var payment_id = req.session.payment_id; + var payment_details = { 'payer_id': req.query.PayerID }; + paypal.payment.execute(payment_id, payment_details, function(error, payment){ + if(error){ + res.render('api/paypal', { + result: true, + success: false + }); + } else { + res.render('api/paypal', { + result: true, + success: true + }); + } + }); +}; + +/** + * GET /api/paypal/cancel + * PayPal SDK example + */ +exports.getPayPalCancel = function(req, res, next) { + req.session.payment_id = null; + res.render('api/paypal', { + result: true, + canceled: true + }); +}; \ No newline at end of file