From c8f1828858f6ea64d61e75ca251eb56627f10879 Mon Sep 17 00:00:00 2001 From: Keksike Date: Sun, 2 Jul 2017 19:36:29 +0300 Subject: [PATCH] add endpoint for membership payments --- index.js | 3 ++- package.json | 1 + routes/invite.js | 2 +- routes/membership.js | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 routes/membership.js diff --git a/index.js b/index.js index 1eeaa59..5e48f71 100644 --- a/index.js +++ b/index.js @@ -23,8 +23,9 @@ app.use(morgan(':method :url :status :response-time ms - :res[content-length] :b require('./routes/invite')(app); require('./routes/members')(app); require('./routes/feeds')(app); +require('./routes/membership')(app); -app.use(function(err, req, res, next) { +app.use(function(err, req, res, next) { /*jshint unused:false*/ console.error(err); res.status(500).send('Internal server error'); diff --git a/package.json b/package.json index 5464060..80a4eae 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "morgan": "^1.5.1", "newrelic": "^1.18.0", "node-twitter": "0.5.2", + "stripe": "^4.23.1", "superagent": "^0.21.0", "validator": "^3.27.0" } diff --git a/routes/invite.js b/routes/invite.js index f5a0250..612b7f4 100644 --- a/routes/invite.js +++ b/routes/invite.js @@ -16,7 +16,7 @@ module.exports = function (app) { return res.status(400).send('invalid_email'); } - function success() { + function success() { res.status(200).end(); } diff --git a/routes/membership.js b/routes/membership.js new file mode 100644 index 0000000..99b2035 --- /dev/null +++ b/routes/membership.js @@ -0,0 +1,35 @@ +'use strict'; + +var Promise = require('bluebird'); +var slack = require('../services/slack'); +var config = require('../lib/config'); +var stripe = require('stripe')(config.stripe.secretKey); + +module.exports = function (app) { + /* + * POST /membership + * Endpoint for adding a new member to the association + */ + app.post('/membership', function(req, res, next) { + stripe.charges.create({ + amount: 1000, + currency: 'eur', + card: req.body.stripeToken, + description: `Koodiklinikka jäsenyys henkilölle: ${req.body.name}` + }, function(err, charge) { + if (err) { + console.log(JSON.stringify(err, null, 2)); + + var message = 'Membership payment FAILED for: ```' + JSON.stringify(req.body) + '``` Reason: ```' + err + '```'; + slack.createMessage(message); + + res.status(500).send({message: 'payment_error'}); + return; + } else { + var message = 'Membership payment SUCCESS for: ```' + JSON.stringify(req.body) + '```'; + slack.createMessage(message); + res.status(200).send({message: 'payment_success'}); + } + }); + }); +};