diff --git a/app.js b/app.js index 26cb5ae..47c6f98 100644 --- a/app.js +++ b/app.js @@ -51,6 +51,7 @@ const itemsRouter = require('./routes/items'); const eventsRouter = require('./routes/events'); const pathsRouter = require('./routes/paths'); const emailRouter = require('./routes/email'); +const paymentsRouter = require('./routes/payments'); app.get('/', (req, res) => { res.json('Welcome to BruinBot API!'); @@ -61,6 +62,7 @@ app.use('/items', itemsRouter); app.use('/events', eventsRouter); app.use('/paths', pathsRouter); app.use('/email', emailRouter); +app.use('/payments', paymentsRouter); module.exports.app = app; module.exports.db = uri; diff --git a/package-lock.json b/package-lock.json index bb478e2..18001d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -795,8 +795,7 @@ "@types/node": { "version": "14.14.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.9.tgz", - "integrity": "sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw==", - "dev": true + "integrity": "sha512-JsoLXFppG62tWTklIoO4knA+oDTYsmqWxHRvd4lpmfQRNhX6osheUOWETP2jMoV/2bEHuMra8Pp3Dmo/stBFcw==" }, "@types/superagent": { "version": "3.8.7", @@ -5360,6 +5359,15 @@ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, + "stripe": { + "version": "8.191.0", + "resolved": "https://registry.npmjs.org/stripe/-/stripe-8.191.0.tgz", + "integrity": "sha512-3oyuIbuW3WDsbGnMUtIZPkr+sOUJ3NEtEwghd81ZuWc+Tq09MrgWXGekbVnbxA3TMFwfKOILw6QoiPA7za4JUg==", + "requires": { + "@types/node": ">=8.1.0", + "qs": "^6.6.0" + } + }, "stubs": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", diff --git a/package.json b/package.json index af9dad4..5314fd2 100644 --- a/package.json +++ b/package.json @@ -30,6 +30,7 @@ "multer": "^1.4.2", "multer-gridfs-storage": "^4.2.0", "node-forge": "^0.10.0", + "stripe": "^8.191.0", "ws": "^7.4.3" }, "devDependencies": { diff --git a/routes/payments.js b/routes/payments.js new file mode 100644 index 0000000..32ff773 --- /dev/null +++ b/routes/payments.js @@ -0,0 +1,22 @@ +const express = require('express'); + +const router = express.Router(); +// TODO: set up API keys +const stripe = require('stripe')(process.env.STRIPE_API_KEY); + +router.route('/createPaymentIntent').post(async (req, res) => { + const { items } = req.body; + + // Create a PaymentIntent with the order amount and currency + const paymentIntent = await stripe.paymentIntents.create({ + amount: items.length, + currency: 'usd', + automatic_payment_methods: { + enabled: true, + }, + }); + + res.send({ + clientSecret: paymentIntent.client_secret, + }); +});