mirror of
https://github.com/koodiklinikka/koodiklinikka.fi-api.git
synced 2026-02-23 17:56:02 +00:00
Merge pull request #9 from koodiklinikka/remove-stripe-payment
remove stripe payment
This commit is contained in:
@@ -1,8 +1,5 @@
|
|||||||
{
|
{
|
||||||
"development": {
|
"development": {
|
||||||
"stripe": {
|
|
||||||
"secretKey": ""
|
|
||||||
},
|
|
||||||
"slack": {
|
"slack": {
|
||||||
"token": "",
|
"token": "",
|
||||||
"privateChannel": "",
|
"privateChannel": "",
|
||||||
@@ -24,9 +21,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"production": {
|
"production": {
|
||||||
"stripe": {
|
|
||||||
"secretKey": ""
|
|
||||||
},
|
|
||||||
"slack": {
|
"slack": {
|
||||||
"token": "",
|
"token": "",
|
||||||
"privateChannel": "",
|
"privateChannel": "",
|
||||||
@@ -42,6 +36,5 @@
|
|||||||
"tokenSecret": ""
|
"tokenSecret": ""
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"all": {
|
"all": {}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
1161
package-lock.json
generated
1161
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -33,10 +33,9 @@
|
|||||||
"morgan": "^1.5.1",
|
"morgan": "^1.5.1",
|
||||||
"newrelic": "^1.18.0",
|
"newrelic": "^1.18.0",
|
||||||
"node-twitter": "0.5.2",
|
"node-twitter": "0.5.2",
|
||||||
"stripe": "^4.23.1",
|
"snyk": "^1.38.1",
|
||||||
"superagent": "^2.0.0",
|
"superagent": "^2.0.0",
|
||||||
"validator": "^3.27.0",
|
"validator": "^3.27.0"
|
||||||
"snyk": "^1.38.1"
|
|
||||||
},
|
},
|
||||||
"snyk": true
|
"snyk": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var Promise = require('bluebird');
|
var Promise = require('bluebird');
|
||||||
var GoogleSpreadsheet = require('google-spreadsheet');
|
var GoogleSpreadsheet = require('google-spreadsheet');
|
||||||
var async = require('async');
|
var async = require('async');
|
||||||
var moment = require('moment');
|
var moment = require('moment');
|
||||||
var Joi = require('joi');
|
var Joi = require('joi');
|
||||||
|
|
||||||
var slack = require('../services/slack');
|
var slack = require('../services/slack');
|
||||||
var config = require('../lib/config');
|
var config = require('../lib/config');
|
||||||
var stripe = require('stripe')(config.stripe.secretKey);
|
|
||||||
var validateRequest = require('../utils/validateRequest');
|
var validateRequest = require('../utils/validateRequest');
|
||||||
|
|
||||||
function log(message) {
|
function log(message) {
|
||||||
@@ -17,45 +16,54 @@ function log(message) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function addNewMemberToSheets(data, callback) {
|
function addNewMemberToSheets(data, callback) {
|
||||||
var {name, email, address, postcode, city, handle} = data;
|
var { name, email, address, postcode, city, handle } = data;
|
||||||
var doc = new GoogleSpreadsheet(config.google.spreadsheetId);
|
var doc = new GoogleSpreadsheet(config.google.spreadsheetId);
|
||||||
|
|
||||||
async.waterfall([
|
async.waterfall(
|
||||||
function setAuth(cb) {
|
[
|
||||||
console.log('Start Google Spreadsheed auth.');
|
function setAuth(cb) {
|
||||||
doc.useServiceAccountAuth({
|
console.log('Start Google Spreadsheed auth.');
|
||||||
client_email: config.google.clientEmail,
|
doc.useServiceAccountAuth(
|
||||||
private_key: config.google.privateKey
|
{
|
||||||
}, (err) => cb(err));
|
client_email: config.google.clientEmail,
|
||||||
},
|
private_key: config.google.privateKey,
|
||||||
function getInfoAndWorksheets(cb) {
|
},
|
||||||
console.log('Start Google Spreadsheet info fetch.');
|
err => cb(err),
|
||||||
doc.getInfo(function(err, info) {
|
);
|
||||||
if(err) {
|
},
|
||||||
cb(err);
|
function getInfoAndWorksheets(cb) {
|
||||||
} else {
|
console.log('Start Google Spreadsheet info fetch.');
|
||||||
cb(null, info.worksheets[0]);
|
doc.getInfo(function(err, info) {
|
||||||
}
|
if (err) {
|
||||||
});
|
cb(err);
|
||||||
},
|
} else {
|
||||||
function addRow(sheet, cb) {
|
cb(null, info.worksheets[0]);
|
||||||
console.log('Start Google Spreadsheet row write.');
|
}
|
||||||
sheet.addRow({
|
});
|
||||||
'jäsenmaksu': true,
|
},
|
||||||
'koko nimi': name,
|
function addRow(sheet, cb) {
|
||||||
'liittymispäivä': moment().format('DD.MM.YYYY'),
|
console.log('Start Google Spreadsheet row write.');
|
||||||
'lisääjä': 'Koodiklinikka.fi-api',
|
sheet.addRow(
|
||||||
'katuosoite': address,
|
{
|
||||||
'postinumero': postcode,
|
jäsenmaksu: false,
|
||||||
'paikkakunta': city,
|
'koko nimi': name,
|
||||||
'slack': handle,
|
liittymispäivä: moment().format('DD.MM.YYYY'),
|
||||||
'sähköposti': email
|
lisääjä: 'Koodiklinikka.fi-api',
|
||||||
}, cb);
|
katuosoite: address,
|
||||||
}
|
postinumero: postcode,
|
||||||
], callback);
|
paikkakunta: city,
|
||||||
|
slack: handle,
|
||||||
|
sähköposti: email,
|
||||||
|
},
|
||||||
|
cb,
|
||||||
|
);
|
||||||
|
},
|
||||||
|
],
|
||||||
|
callback,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = function (app) {
|
module.exports = function(app) {
|
||||||
/*
|
/*
|
||||||
* POST /membership
|
* POST /membership
|
||||||
* Endpoint for adding a new member to the association
|
* Endpoint for adding a new member to the association
|
||||||
@@ -68,50 +76,27 @@ module.exports = function (app) {
|
|||||||
handle: Joi.string().required(),
|
handle: Joi.string().required(),
|
||||||
address: Joi.string().required(),
|
address: Joi.string().required(),
|
||||||
city: Joi.string().required(),
|
city: Joi.string().required(),
|
||||||
postcode: Joi.string().required()
|
postcode: Joi.string().required(),
|
||||||
}),
|
}),
|
||||||
stripeToken: Joi.string().required()
|
});
|
||||||
})
|
|
||||||
|
|
||||||
app.post('/membership', validateRequest(schema), function(req, res, next) {
|
app.post('/membership', validateRequest(schema), function(req, res, next) {
|
||||||
|
console.log(
|
||||||
|
`Start membership addition with body: ${JSON.stringify(req.body)}`,
|
||||||
|
);
|
||||||
|
|
||||||
console.log(`Start membership addition with body: ${JSON.stringify(req.body)}`);
|
addNewMemberToSheets(req.body.userInfo, err => {
|
||||||
|
|
||||||
const { handle, name, email } = req.body.userInfo
|
|
||||||
|
|
||||||
const createCustomer = (callback) =>
|
|
||||||
stripe.customers.create({
|
|
||||||
description: `${handle} - ${name}`,
|
|
||||||
email: email,
|
|
||||||
source: req.body.stripeToken,
|
|
||||||
metadata: req.body.userInfo
|
|
||||||
}, callback)
|
|
||||||
|
|
||||||
const createSubscription = (customer, callback) =>
|
|
||||||
stripe.subscriptions.create({
|
|
||||||
customer: customer.id,
|
|
||||||
plan: 'koodiklinikka'
|
|
||||||
}, callback)
|
|
||||||
|
|
||||||
async.waterfall([
|
|
||||||
createCustomer,
|
|
||||||
createSubscription
|
|
||||||
], (err) => {
|
|
||||||
if (err) {
|
if (err) {
|
||||||
log(`Membership payment FAILED for: ${JSON.stringify(req.body.userInfo.email)}. Reason: ${err.message}`);
|
log(
|
||||||
res.status(500).send('payment_error');
|
`Storing membership info FAILED for: ${JSON.stringify(
|
||||||
|
req.body.userInfo.email,
|
||||||
|
)}. Reason: ${err.message}`,
|
||||||
|
);
|
||||||
|
res.status(200).send('membership_storage_error');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
res.status(200).send('membership_added');
|
||||||
log(`Membership payment SUCCESSFUL for: ${JSON.stringify(req.body.userInfo.email)}`);
|
return;
|
||||||
addNewMemberToSheets(req.body.userInfo, (err) => {
|
|
||||||
if(err) {
|
|
||||||
log(`Storing membership info FAILED for: ${JSON.stringify(req.body.userInfo.email)}. Reason: ${err.message}`);
|
|
||||||
res.status(500).send('membership_storage_error');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
res.status(200).send('payment_success');
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user