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.
Scanned 5/30/2026
Install via CLI
openskills install ECNU-ICALK/AutoSkill---
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
1. **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.
2. **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`.
3. **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.
4. **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
1. Receive request to create a checkout session.
2. Generate session with manual capture.
3. Upon webhook receipt, process user and booking creation.
4. Return confirmation.
## Triggers
- stripe manual capture nestjs
- store payment intent prisma
- stripe checkout webhook nestjs
- authorize and capture stripe nestjs
No comments yet. Be the first to comment!