aboutsummaryrefslogtreecommitdiffstats
path: root/stripe.js
diff options
context:
space:
mode:
authorAdam Soltys <[email protected]>2019-09-15 23:05:26 -0700
committerAdam Soltys <[email protected]>2019-09-15 23:05:26 -0700
commit765c6a42135b9334b616c26b22c816edd06e382a (patch)
tree05da4f343358fb5e9a9083e348783f0fab973dd8 /stripe.js
parent087fdd27f3683a1deb9376b7a72aa608e6fd8e6a (diff)
downloadcoinos-server-765c6a42135b9334b616c26b22c816edd06e382a.tar.gz
coinos-server-765c6a42135b9334b616c26b22c816edd06e382a.zip
refactor
Diffstat (limited to 'stripe.js')
-rw-r--r--stripe.js40
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);
+ }
+ });
+};