Adds createFromCart and order.completed subscribers
This commit is contained in:
1 parent
1e48ab3d74
commit
08cf7c7f2b
8 files changed
+119
-10
No files matched your search
@@ -12,19 +12,31 @@ export default async (req, res) => {
|
||||
|
||||
const paymentIntent = event.data.object
|
||||
|
||||
const orderService = req.scope.resolve("orderService")
|
||||
|
||||
// handle payment intent events
|
||||
switch (event.type) {
|
||||
case "payment_intent.succeeded":
|
||||
const cartId = paymentIntent.metadata.cart_id
|
||||
const order = await orderService.retrieveByCartId(cartId)
|
||||
|
||||
await orderService.update(order._id, {
|
||||
payment_status: "captured",
|
||||
})
|
||||
break
|
||||
case "payment_intent.canceled":
|
||||
break
|
||||
case "payment_intent.created":
|
||||
case "payment_intent.cancelled":
|
||||
const cartId = paymentIntent.metadata.cart_id
|
||||
const order = await orderService.retrieveByCartId(cartId)
|
||||
|
||||
await orderService.update(order._id, {
|
||||
status: "cancelled",
|
||||
})
|
||||
break
|
||||
case "payment_intent.payment_failed":
|
||||
// TODO: Not implemented yet
|
||||
break
|
||||
case "payment_intent.amount_capturable_updated":
|
||||
break
|
||||
case "payment_intent.processing":
|
||||
// TODO: Not implemented yet
|
||||
break
|
||||
default:
|
||||
res.status(400)
|
||||
|
||||
@@ -104,6 +104,8 @@ class StripeProviderService extends PaymentService {
|
||||
customer: stripeCustomerId,
|
||||
amount: amount * 100, // Stripe amount is in cents
|
||||
currency: currency_code,
|
||||
capture_method: "manual",
|
||||
metadata: { cart_id: cart._id },
|
||||
})
|
||||
|
||||
return paymentIntent
|
||||
|
||||
@@ -10,13 +10,14 @@ class CartSubscriber {
|
||||
this.stripeProviderService_ = stripeProviderService
|
||||
this.eventBus_ = eventBusService
|
||||
|
||||
this.eventBus_.subscribe("cart.created", (data) => {
|
||||
console.log(data)
|
||||
})
|
||||
|
||||
this.eventBus_.subscribe("cart.customer_updated", async (cart) => {
|
||||
await this.onCustomerUpdated(cart)
|
||||
})
|
||||
|
||||
this.eventBus_.subscribe("order.completed", async (order) => {
|
||||
const paymentData = order.payment_method.data
|
||||
await this.stripeProviderService_.capturePayment(paymentData)
|
||||
})
|
||||
}
|
||||
|
||||
async onCustomerUpdated(cart) {
|
||||
|
||||
Reference in new issue
Block a user