Skip to content
Payment Emulator LabDocumentationOpen console
On this page

Providers and icons

Emulated gateways: Mercado Pago, Stripe and PayPal

Providers are plugins, never branches in the core. The interface is defined inapps/api/src/core/providers/provider-plugin.ts; the registry isplugin-registry.ts.

2 min read

Índice / Index · Español

Providers are plugins, never branches in the core. The interface is defined in apps/api/src/core/providers/provider-plugin.ts; the registry is plugin-registry.ts.

#Current status

Provider Runtime status Surface Fidelity
Mercado Pago Implemented Selected Orders operations Details
Stripe Implemented Selected PaymentIntents and Refunds operations Details
PayPal Implemented Orders v2, Payments v2, OAuth and approval checkout Details

“Implemented” is computed: a plugin must have routes and pass static conformance. It cannot be typed into the gateways table. An operator may enable/disable a provider, mark planned/skeleton/deprecated and override accounting numbers, but cannot edit routing, validation or toWire behaviour.

#Plugin responsibilities

Concern Plugin provides Core provides
HTTP real routes and contract validation wildcard entry and request ordering
Translation provider request → canonical command; canonical view → wire canonical operations/state
Credentials format, recognition and provider-shaped refusal digest lookup and tenant resolution
Idempotency header name and required operations fingerprint, lock, replay and conflict
Status/errors total provider vocabulary decision that a state/refusal exists
Accounting fee/timing/currency declaration balanced postings and settlement
Webhooks topic, body, signature and verification outbox, queue, retry and attempts
Checkout URL template and payment-method catalogue public checkout API and shared shell

Plugins are plain objects with no injected dependencies. This prevents a provider from creating a second implementation of transactions, idempotency, ledger or delivery.

#The two provider halves

Backend behaviour lives in apps/api/src/providers/<id>/. Buyer-facing identity lives separately in apps/checkout/providers/<id>/. They do not import each other. Checkout capabilities cross the boundary through API responses.

For the full addition workflow, see Adding a provider.

Payment Emulator Lab · RonuSoftwareMIT