diff options
| author | Adam Soltys <[email protected]> | 2019-09-15 23:05:26 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2019-09-15 23:05:26 -0700 |
| commit | 765c6a42135b9334b616c26b22c816edd06e382a (patch) | |
| tree | 05da4f343358fb5e9a9083e348783f0fab973dd8 /stripe.js | |
| parent | 087fdd27f3683a1deb9376b7a72aa608e6fd8e6a (diff) | |
| download | coinos-server-765c6a42135b9334b616c26b22c816edd06e382a.tar.gz coinos-server-765c6a42135b9334b616c26b22c816edd06e382a.zip | |
refactor
Diffstat (limited to 'stripe.js')
| -rw-r--r-- | stripe.js | 40 |
1 files changed, 40 insertions, 0 deletions
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); + } + }); +}; |
