payload icon indicating copy to clipboard operation
payload copied to clipboard

Stripe Webhook Error

Open mikecebul opened this issue 1 year ago • 1 comments

Describe the Bug

The Stripe Webhooks quit working in my application. My build error is

src/app/api/webhooks/stripe/route.ts
Type error: File '/home/mike/Code/cvx-junior-golf/src/app/api/webhooks/stripe/route.ts' is not a module.

Link to the code that reproduces this issue

N/A

Reproduction Steps

  • Add the Stripe plugin in the config
stripePlugin({
      isTestKey: process.env.STRIPE_SECRET_KEY?.includes('sk_test'),
      stripeSecretKey: process.env.STRIPE_SECRET_KEY || '',
      stripeWebhooksEndpointSecret: process.env.STRIPE_WEBHOOKS_ENDPOINT_SECRET,
      webhooks: {
        'checkout.session.completed': checkoutSessionCompleted,
      },
      logs: true,
    }),

This is my webhook

import type { StripeWebhookHandler } from '@payloadcms/plugin-stripe/types'
import type Stripe from 'stripe'

export const checkoutSessionCompleted: StripeWebhookHandler<{
  data: {
    object: Stripe.Checkout.Session
  }
}> = async ({ event, payload }) => {
  console.log('checkoutSessionCompleted handler called')

  const { id: sessionId, metadata, amount_total } = event.data.object
  const submissionId = metadata?.submissionId

  if (!submissionId) {
    payload.logger.error('No submissionId found in checkout session metadata')
    return
  }
  try {
    await payload.update({
      collection: 'form-submissions',
      id: submissionId,
      overrideAccess: true,
      data: {
        paymentStatus: 'paid',
        amount: amount_total ? `$${(amount_total / 100).toFixed(2)}` : '$0.00',
      },
    })

    payload.logger.info(
      `Successfully updated form submission ${submissionId} for checkout session ${sessionId}`,
    )
  } catch (error) {
    payload.logger.error(`Error updating form submission: ${error}`)
  }
}
  • Add the env vars
  • Test the webhook

Which area(s) are affected? (Select all that apply)

plugin: stripe

Environment Info

Binaries:
  Node: 20.14.0
  npm: 10.7.0
  Yarn: 1.22.22
  pnpm: 9.7.0
Relevant Packages:
  payload: 3.0.0-beta.134
  next: 15.0.0
  @payloadcms/db-mongodb: 3.0.0-beta.134
  @payloadcms/email-resend: 3.0.0-beta.134
  @payloadcms/graphql: 3.0.0-beta.134
  @payloadcms/live-preview: 3.0.0-beta.134
  @payloadcms/live-preview-react: 3.0.0-beta.134
  @payloadcms/next/utilities: 3.0.0-beta.134
  @payloadcms/plugin-cloud-storage: 3.0.0-beta.134
  @payloadcms/plugin-form-builder: 3.0.0-beta.134
  @payloadcms/plugin-redirects: 3.0.0-beta.134
  @payloadcms/plugin-seo: 3.0.0-beta.134
  @payloadcms/plugin-stripe: 3.0.0-beta.134
  @payloadcms/richtext-lexical: 3.0.0-beta.134
  @payloadcms/storage-s3: 3.0.0-beta.134
  @payloadcms/translations: 3.0.0-beta.134
  @payloadcms/ui/shared: 3.0.0-beta.134
  react: 19.0.0-rc-65a56d0e-20241020
  react-dom: 19.0.0-rc-65a56d0e-20241020
Operating System:
  Platform: linux
  Arch: x64
  Version: #1 SMP Tue Nov 5 00:21:55 UTC 2024
  Available memory (MB): 15847
  Available CPU cores: 16

mikecebul avatar Nov 18 '24 22:11 mikecebul

Please add a reproduction in order for us to be able to investigate.

Depending on the quality of reproduction steps, this issue may be closed if no reproduction is provided.

Why was this issue marked with the invalid-reproduction label?

To be able to investigate, we need access to a reproduction to identify what triggered the issue. We prefer a link to a public GitHub repository created with create-payload-app@beta -t blank or a forked/branched version of this repository with tests added (more info in the reproduction-guide).

To make sure the issue is resolved as quickly as possible, please make sure that the reproduction is as minimal as possible. This means that you should remove unnecessary code, files, and dependencies that do not contribute to the issue. Ensure your reproduction does not depend on secrets, 3rd party registries, private dependencies, or any other data that cannot be made public. Avoid a reproduction including a whole monorepo (unless relevant to the issue). The easier it is to reproduce the issue, the quicker we can help.

Please test your reproduction against the latest version of Payload to make sure your issue has not already been fixed.

I added a link, why was it still marked?

Ensure the link is pointing to a codebase that is accessible (e.g. not a private repository). "example.com", "n/a", "will add later", etc. are not acceptable links -- we need to see a public codebase. See the above section for accepted links.

Useful Resources

github-actions[bot] avatar Nov 18 '24 22:11 github-actions[bot]

@mikecebul I was unable to reproduce this. If you could provide a working reproduction, I can look into this further. Closing for now.

jacobsfletch avatar Nov 19 '24 18:11 jacobsfletch

Thank you Jacob for taking the time to look at this. I tried again just now after updating to 3.0.1 from beta.134 and it's working without issue.

mikecebul avatar Nov 19 '24 20:11 mikecebul

My issue was completely user error. Somehow I ended up with a blank file and folder path to api/webhooks/stripe/route.ts. I'll remember its not worth wasting anyone's time to submit issues without a simple reproduction. Sorry about that.

mikecebul avatar Nov 19 '24 23:11 mikecebul

No worries, thanks for confirming!

jacobsfletch avatar Nov 20 '24 14:11 jacobsfletch

This issue has been automatically locked. Please open a new issue if this issue persists with any additional detail.

github-actions[bot] avatar Nov 22 '24 04:11 github-actions[bot]