Robustness

This commit is contained in:
Sebastian Rindom committed 2020-07-14 17:23:43 +02:00
1 parent 44c7177e43
commit 312e405588
21 files changed
+152 -74

No files matched your search

@@ -5,10 +5,10 @@ import middlewares from "../../middlewares"
const route = Router()
export default (app) => {
app.use("/hooks", route)
app.use("/stripe", route)
route.post(
"/stripe",
"/hooks",
// stripe constructEvent fails without body-parser
bodyParser.raw({ type: "application/json" }),
middlewares.wrap(require("./stripe").default)
@@ -12,27 +12,37 @@ export default async (req, res) => {
const paymentIntent = event.data.object
const cartService = req.scope.resolve("cartService")
const orderService = req.scope.resolve("orderService")
const cartId = paymentIntent.metadata.cart_id
const order = await orderService.retrieveByCartId(cartId)
.catch(() => undefined)
// handle payment intent events
switch (event.type) {
case "payment_intent.succeeded":
await orderService.update(order._id, {
payment_status: "captured",
})
if (order) {
await orderService.update(order._id, {
payment_status: "captured",
})
}
break
case "payment_intent.cancelled":
await orderService.update(order._id, {
status: "cancelled",
})
if (order) {
await orderService.update(order._id, {
status: "cancelled",
})
}
break
case "payment_intent.payment_failed":
// TODO: Not implemented yet
break
case "payment_intent.amount_capturable_updated":
// TODO: Not implemented yet
if (!order) {
const cart = await cartService.retrieve(cartId)
await orderService.createFromCart(cart)
}
break
default:
res.status(400)
@@ -158,6 +158,15 @@ class StripeProviderService extends PaymentService {
}
}
async deletePayment(data) {
try {
const { id } = data
return this.stripe_.paymentIntents.cancel(id)
} catch (error) {
throw error
}
}
/**
* Updates customer of Stripe PaymentIntent.
* @param {string} cart - the cart to update payment intent for
@@ -60,7 +60,7 @@ class CartSubscriber {
}
if (stripeCustomer.id !== paymentIntent.customer) {
await this.stripeProviderService_.cancelPayment(paymentIntent.id)
await this.stripeProviderService_.cancelPayment(paymentIntent)
const newPaymentIntent = await this.stripeProviderService_.createPayment(
cart
)