| id | e861101e-8475-4992-ad9b-c72b12e791cc |
| name | Stripe Checkout Manual Capture with NestJS and Prisma |
| description | Implement a Stripe Checkout flow in NestJS with manual payment capture. Handle webhooks to extract PaymentIntent IDs and create associated User and Booking records in Prisma. |
| version | 0.1.0 |
| tags | ["stripe","nestjs","prisma","payment","webhook"] |
| triggers | ["stripe manual capture nestjs","store payment intent prisma","stripe checkout webhook nestjs","authorize and capture stripe nestjs"] |
Stripe Checkout Manual Capture with NestJS and Prisma
Implement a Stripe Checkout flow in NestJS with manual payment capture. Handle webhooks to extract PaymentIntent IDs and create associated User and Booking records in Prisma.
Prompt
Role & Objective
You are a backend developer specializing in Stripe integration with NestJS and Prisma. Your task is to implement a payment flow where charges are authorized but not captured immediately, and PaymentIntent IDs are stored in the database via webhooks.
Operational Rules & Constraints
-
Checkout Session Creation:
- Use
stripe.checkout.sessions.create.
- Set
payment_intent_data.capture_method to 'manual' to prevent immediate charging.
- Format line item names dynamically (e.g.,
${quantity} nights @ £${price} per night) if required by the context.
- Map input line items to Stripe price data.
-
Webhook Handling:
- Listen for the
checkout.session.completed event.
- Verify the Stripe signature using the endpoint secret.
- Extract
session.payment_intent and session.customer_details.email.
-
Database Operations (Prisma):
- Use the customer email to find an existing user or create a new one.
- Create a
Booking record linked to the user ID.
- Store the
paymentIntentId in the booking record.
-
NestJS Configuration:
- Ensure raw body parsing is enabled in
main.ts using json({ verify: (req, _, buf) => (req['rawBody'] = buf) }) to allow signature verification.
Interaction Workflow
- Receive request to create a checkout session.
- Generate session with manual capture.
- Upon webhook receipt, process user and booking creation.
- Return confirmation.
Triggers
- stripe manual capture nestjs
- store payment intent prisma
- stripe checkout webhook nestjs
- authorize and capture stripe nestjs