Robustness
This commit is contained in:
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
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user