diff --git a/frontend/components/Cart.vue b/frontend/components/Cart.vue
index 9337f83..aeaef99 100644
--- a/frontend/components/Cart.vue
+++ b/frontend/components/Cart.vue
@@ -97,6 +97,9 @@
@@ -110,13 +113,15 @@ import store from '@/store';
import Picker from '@/components/ui/Picker'
import Button from '@/components/ui/Button'
import applePay from '@/components/ui/applePay';
+import stripe from '@/components/stripe';
export default {
name: 'Cart',
components: {
Picker,
Button,
- applePay
+ applePay,
+ stripe
},
computed: {
cartInventory() {
diff --git a/frontend/components/stripe.vue b/frontend/components/stripe.vue
new file mode 100644
index 0000000..5652720
--- /dev/null
+++ b/frontend/components/stripe.vue
@@ -0,0 +1,166 @@
+
+
+
+
+
+
+
diff --git a/package.json b/package.json
index f0dc99d..ed4233a 100644
--- a/package.json
+++ b/package.json
@@ -13,12 +13,14 @@
"license": "MIT",
"dependencies": {
"@babel/polyfill": "~7.2",
+ "@stripe/stripe-js": "^1.8.0",
"clean-webpack-plugin": "^3.0.0",
"extract-text-webpack-plugin": "^3.0.2",
"moment": "^2.24.0",
"mongoose": "^5.9.24",
"node-fetch": "^2.6.0",
"node-sass": "^4.13.0",
+ "stripe": "^8.76.0",
"vue": "~2.6",
"vue-router": "~3.0",
"vuex": "^3.1.1"
diff --git a/server/app.js b/server/app.js
index a7ae913..686b5d2 100644
--- a/server/app.js
+++ b/server/app.js
@@ -14,6 +14,8 @@ const PORT = 30010;
const productsController = require('./controllers/product.js');
const variationsController = require('./controllers/variation.js');
+const applePayController = require('./controllers/applePay.js');
+const stripeController = require('./controllers/stripe.js');
app.use(express.json());
// app.use(express.urlencoded());
@@ -24,6 +26,10 @@ router.post('/product', productsController.addNewProduct)
router.post('/variation/:id', variationsController.addNewVariationToProduct);
+router.post('/applepay/validateSession', applePayController.validateSession)
+router.post('/applepay/pay', applePayController.pay)
+router.post('/stripe/create-payment-intent', stripeController.createPaymentIntent)
+
app.use("/public", express.static(path.join(__dirname, "public")));
app.use("/dist", express.static(path.join(__dirname, "/../public/dist")));
app.use('/.well-known', express.static(path.join(__dirname, "/../frontend/assets/well-known")));
diff --git a/server/config.example.js b/server/config.example.js
new file mode 100644
index 0000000..0e12c15
--- /dev/null
+++ b/server/config.example.js
@@ -0,0 +1,7 @@
+
+module.exports = {
+ stripe: {
+ publicKey: '',
+ secretKey: ''
+ }
+}
diff --git a/server/controllers/stripe.js b/server/controllers/stripe.js
new file mode 100644
index 0000000..256e2d9
--- /dev/null
+++ b/server/controllers/stripe.js
@@ -0,0 +1,22 @@
+const config = require('../config')
+const Stripe = require('stripe')
+const stripe = Stripe(config.stripe.secretKey)
+
+const createPaymentIntent = async (req, res) => {
+ const { items, currency } = req.body;
+
+ const paymentIntent = await stripe.paymentIntents.create({
+ amount: 1009,
+ currency: 'NOK'
+ })
+ console.log('created payment intent:', paymentIntent);
+
+ return res.send({
+ publishableKey: config.stripe.publicKey,
+ clientSecret: paymentIntent.client_secret
+ })
+}
+
+module.exports = {
+ createPaymentIntent
+}