From medusa-commerce
Implements Medusa v2 payment processing: modules, provider abstraction, sessions, auth/capture/refund lifecycle, Stripe/PayPal. Use when adding payment providers.
npx claudepluginhub orcaqubits/agentic-commerce-skills-plugins --plugin medusa-commerceThis skill is limited to using the following tools:
**Fetch live docs**:
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Fetch live docs:
site:docs.medusajs.com payment module for payment data model and service methodssite:docs.medusajs.com payment provider for the provider abstraction layersite:docs.medusajs.com stripe payment for Stripe integration setuphttps://docs.medusajs.com/resources/references/payment and review the IPaymentModuleService interfacemedusajs v2 AbstractPaymentProvider 2026 for latest provider interface| Entity | Contains | Key Fields |
|---|---|---|
| PaymentCollection | Sessions, Payments | status, amount, currency_code |
| PaymentSession | Provider data | provider_id, status, amount, data (JSON) |
| Payment | Captures, Refunds | provider_id, amount, captured_at |
Cart Module ──link──> Payment Module (payment collection)
Order Module ──link──> Payment Module (payment collection)
Region Module ──link──> Payment Module (available providers)
Fetch live docs for exact link definitions and how payment collections bridge carts and orders.
| Status | Meaning |
|---|---|
pending | Session initialized, awaiting customer action |
requires_more | Additional steps needed (e.g., 3DS) |
authorized | Payment authorized, funds reserved |
canceled | Payment voided/canceled |
error | Payment failed |
After authorization, a Payment entity is created from the session:
| Status | Meaning |
|---|---|
captured | Funds captured to merchant |
partially_refunded | Partial refund issued |
refunded | Full refund issued |
All payment providers extend AbstractPaymentProvider:
// Skeleton: custom payment provider
// Fetch live docs for AbstractPaymentProvider interface
class MyPaymentProvider extends AbstractPaymentProvider {
// Implement: initiatePayment, authorizePayment,
// capturePayment, refundPayment, cancelPayment
// Fetch live docs for exact method signatures
}
| Method | Purpose |
|---|---|
initiatePayment | Create payment session with provider |
authorizePayment | Authorize payment (reserve funds) |
capturePayment | Capture authorized payment |
refundPayment | Refund captured payment |
cancelPayment | Cancel/void payment |
deletePayment | Clean up provider-side session |
getPaymentStatus | Query current status from provider |
updatePayment | Update an existing payment session |
retrievePayment | Retrieve payment data from provider |
getWebhookActionAndData | Parse incoming webhook events |
Fetch live docs for the full method list — the provider interface has additional methods beyond those listed above (e.g.,
createAccountHolder,listPaymentMethods,savePaymentMethod). Always verify the currentAbstractPaymentProviderinterface.
| Configuration | Description |
|---|---|
apiKey | Stripe secret key |
webhookSecret | Stripe webhook signing secret |
capture | Auto-capture or manual (true/false) |
| Event | Medusa Action |
|---|---|
payment_intent.succeeded | Mark session authorized/captured |
payment_intent.payment_failed | Mark session errored |
charge.refunded | Mark refund completed |
Fetch live docs for Stripe provider configuration options and webhook endpoint setup.
| Configuration | Description |
|---|---|
clientId | PayPal client ID |
clientSecret | PayPal client secret |
sandbox | Use sandbox environment (true/false) |
Fetch live docs for PayPal provider options, redirect handling, and webhook configuration.
| Workflow | Purpose |
|---|---|
createPaymentCollectionForCartWorkflow | Create collection linked to cart |
initializePaymentSessionWorkflow | Start session with specific provider |
authorizePaymentSessionWorkflow | Authorize a pending session |
capturePaymentWorkflow | Capture an authorized payment |
refundPaymentWorkflow | Refund a captured payment |
cancelPaymentWorkflow | Cancel/void a payment |
| Operation | Method |
|---|---|
| Create collection | paymentModuleService.createPaymentCollections() |
| Create session | paymentModuleService.createPaymentSession() |
| Authorize session | paymentModuleService.authorizePaymentSession() |
| Capture payment | paymentModuleService.capturePayment() |
| Refund payment | paymentModuleService.refundPayment() |
Fetch live docs for workflow input shapes and provider-specific data requirements.
| Route Pattern | Method | Purpose |
|---|---|---|
/admin/payments | GET | List payments |
/admin/payments/:id | GET | Retrieve payment |
/admin/payments/:id/capture | POST | Capture payment |
/admin/payments/:id/refund | POST | Refund payment |
AbstractPaymentProvider — do not implement from scratchdata field (not in metadata)requires_more status for providers with multi-step flows (3DS, redirect)Fetch the Medusa v2 payment module documentation and provider interface references for exact method signatures, webhook configuration, and provider registration patterns before implementing.