AutoSkill 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.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/stripe-checkout-manual-capture-with-nestjs-and-prisma" ~/.claude/skills/ecnu-icalk-autoskill-stripe-checkout-manual-capture-with-nestjs-and-prisma && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt4_8_GLM4.7/stripe-checkout-manual-capture-with-nestjs-and-prisma/SKILL.md
source content

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