One connection layer for Drupal. Configure a secret and an endpoint once, and let a small plugin handle the one thing that's actually different about each external system: a payment provider today, a CRM or an invoicing network later.
Every integration tends to rebuild the same plumbing from scratch. Connector Hub builds that plumbing once, so a new integration is mostly the one part that's genuinely different.
Each integration invents its own place to store a secret, its own retry logic for a flaky API, its own webhook route with its own signature check, and its own admin screen to configure it. Five integrations, five slightly different versions of the same problem.
A connector endpoint holds the connection: which plugin, which secret (via the Key module, never in configuration), whether it sends, receives, or both. A queue handles delivery and retries. A webhook route handles rate limiting and the path token. The plugin only has to speak the one dialect that system actually uses.
Connector Hub itself stays generic on purpose. Payment is the first domain built on it, not a feature baked into it, which is why it ships as its own module.
Nothing here is described as finished until it has run inside a real Drupal 11 install, not just read back correctly on the page.
In order, and open to reshuffling if a real project needs a specific provider sooner.
A full vertical slice: hosted checkout, a verified status read, refunds, reconciliation.
Built second on purpose, to prove the contract isn't shaped around Mollie specifically.
Two more provider adapters on the same payment contracts.
With an explicit choice between its Sessions/Drop-in flow and the lower-level API, made once and documented, not assumed.
CRM, ERP and PEPPOL e-invoicing connectors, built the same way: a small plugin on top of the same core.
Each module carries its own README and CONTRIBUTING file in its repository. The short version of both is here.
Covers the connector endpoint entity, the plugin interface (send(), verifyInboundRequest(), the configuration form hooks), the dispatcher service, and the webhook controller. Includes the exact steps to add a new connector plugin in a separate module.
administer connector endpointsCovers Money, PaymentStatus, RemoteReferences, the PaymentOperation entity, and the three small contracts an adapter implements only where it applies: initiating, reading status, and refunding.
view payment operations, execute payment refundsBoth modules are open source under GPL-2.0-or-later. Every change follows the same bar, documented in each module's CONTRIBUTING.md.
Each module is tested against a real Drupal 11 site via DDEV, not assumed to work from reading the code.
# inside either module's own directory ddev config --project-type=drupal11 --docroot=web ddev add-on get ddev/ddev-drupal-contrib ddev start && ddev poser && ddev symlink-project # then ddev phpcs && ddev phpstan analyze . && ddev phpunit web/modules/custom