Files
medusa-store/packages/medusa-payment-stripe
Oli Juhl 99a4f94db5 feat(medusa-payment-stripe): Add delay to Stripe webhook (#5838)
**What**
- Migrate Stripe plugin to use API Routes + Subscribers
- Change the behaviour of Stripe webhook
Instead of processing webhook events immediately, we fire an event to perform the work in the background. The primary reason for changing the webhook is that the previous implementation led to occasional conflicts due to a race condition between the client's and the webhook's request to complete a cart. Now, we emit an event with a configurable delay (defaults to 2s) to prevent this from happening

This approach was preferred over adding a timeout directly to the webhook execution, as it is generally best practice to respond to a webhook event immediately after receiving it.
2024-01-05 12:37:53 +00:00
..
2023-11-10 10:28:21 +01:00

Stripe

Receive payments on your Medusa commerce application using Stripe.

Stripe Plugin Documentation | Medusa Website | Medusa Repository

Features

  • Authorize payments on orders from any sales channel.
  • Support for Bancontact, BLIK, giropay, iDEAL, and Przelewy24.
  • Capture payments from the admin dashboard.
  • View payment analytics through Stripe's dashboard.
  • Ready-integration with Medusa's Next.js starter storefront.
  • Support for Stripe Webhooks.

Prerequisites


How to Install

1. Run the following command in the directory of the Medusa backend:

npm install medusa-payment-stripe

2. Set the following environment variables in .env:

STRIPE_API_KEY=sk_...
# only necessary for production
STRIPE_WEBHOOK_SECRET=whsec_...

3. In medusa-config.js add the following at the end of the plugins array:

const plugins = [
  // ...
  {
    resolve: `medusa-payment-stripe`,
    options: {
      api_key: process.env.STRIPE_API_KEY,
      webhook_secret: process.env.STRIPE_WEBHOOK_SECRET,
    },
  },
]

Test the Plugin

1. Run the following command in the directory of the Medusa backend to run the backend:

npm run start

2. Enable Stripe in a region in the admin. You can refer to this User Guide to learn how to do that. Alternatively, you can use the Admin APIs.

3. Place an order using a storefront or the Store APIs. You should be able to use Stripe as a payment method.


Additional Resources