From 765c6a42135b9334b616c26b22c816edd06e382a Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sun, 15 Sep 2019 23:05:26 -0700 Subject: refactor --- stripe.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 stripe.js (limited to 'stripe.js') diff --git a/stripe.js b/stripe.js new file mode 100644 index 00000000..ba1f68f7 --- /dev/null +++ b/stripe.js @@ -0,0 +1,40 @@ +const config = require("./config"); + +module.exports = (auth, app, db, emit) => { + app.post("/buy", auth, async (req, res) => { + const stripe = require("stripe")(config.stripe); + const { token, amount, sat } = req.body; + let dollarAmount = parseInt(amount / 100); + + if (dollarAmount > req.user.limit) return res.status(500).end(); + + try { + const charge = await stripe.charges.create({ + amount, + currency: "cad", + description: "Bitcoin", + source: token + }); + + req.user.balance += parseInt(sat); + req.user.limit -= dollarAmount; + await req.user.save(); + emit(req.user.username, "user", req.user); + + await db.Payment.create({ + user_id: req.user.id, + hash: charge.balance_transaction, + amount: parseInt(sat), + currency: "CAD", + rate: app.get("rates").ask, + received: true, + tip: 0 + }); + + res.send(`Bought ${amount}`); + } catch (e) { + console.log(e); + res.status(500).send(e); + } + }); +}; -- cgit v1.2.3