integrations/ is a self-contained, installable plugin. Source of truth: integrations/README.md and each plugin’s own README.
What ships
WooCommerce
WordPress / WooCommerce payment gateway. HPOS compatible, native admin refunds, unit tested, verified against a real WordPress store and the real Nomba sandbox (live card payment and refund).
PrestaShop
PrestaShop 1.7 / 8.x payment module. Custom order state for held payments, admin refund panel, verified end to end against a real PrestaShop 8.1 store.
Joomla / VirtueMart
VirtueMart 3.x / 4.x payment plugin (Joomla 3.10 / 4 / 5). Redirect checkout, signed + API-reverified notification, refund on order-status change.
kind: one_time); see Refunds for why they intentionally do not refund.
The shared contract
All three plugins implement the identical lifecycle: install, configure credentials, start a hosted checkout, verify on the shopper’s return, confirm by a signed webhook that re-verifies the transaction against the Nomba API before granting value, and refund from the platform admin. They also support depositing payments into a Nomba sub-account. The Shared architecture page walks the full lifecycle, the nine-field webhook signature, the Nomba API surface, and the tooling.Verification-first by design. A signed webhook is never trusted for the money. After the signature and freshness checks pass, each plugin calls
GET {prefix}/transaction and cross-checks the verified amount and currency, and only then grants value. The Nomba API response is the source of truth, not the webhook payload.Validated end to end
The shared Nomba protocol was validated against the real Nomba sandbox: a live token, checkout, card payment, verification, and refund all passed (tools/sandbox-smoke/). On top of that:
- WooCommerce was exercised against a real WordPress store and the real Nomba sandbox, including a live card payment and refund.
- PrestaShop was verified end to end against a real PrestaShop 8.1 store (checkout, all webhook cases, and admin refund).
- Joomla/VirtueMart protocol classes are unit tested; the plugin class is verified by lint and a static review against the VirtueMart source APIs (VirtueMart has no CLI installer for a scripted demo). See
joomla/RUNTIME_TEST.mdfor the manual runtime checklist.
Test coverage
88 unit tests cover the Nomba protocol classes and the WooCommerce gateway, run under PHPUnit against a stubbed HTTP layer (tools/tests/). The count is for the Nomba plugins only; the parallel Duro modules ship their own additional tests.
WooCommerce and PrestaShop share one PHPUnit config (
phpunit.xml); Joomla runs isolated (phpunit-joomla.xml) because its classes share global names with PrestaShop’s.
Refunds
Nomba supports both full and partial refunds (POST {prefix}/refund, optional amount for partials), and every Nomba plugin exposes it: WooCommerce from the order screen, PrestaShop from the admin refund panel, Joomla from the order-status change to the configured “Refunded” status.
The parallel Duro modules intentionally do not support refunds: a one-off Duro checkout session (kind: one_time) creates no refundable invoice, so there is nothing for the Duro API to refund against. For any flow that needs refunds, use the Nomba gateway.
Packaging
Installable zips are built with one script (integrations/README.md):
dist/: nomba-woocommerce.zip, nomba-prestashop.zip, nomba-vmpayment.zip, plus the parallel Duro packages (nomba-duro-prestashop.zip, nomba-duro-vmpayment.zip). Tests and tooling are never included in a plugin zip. Per-platform install steps live on each plugin page.
Docs for the underlying provider: developer.nomba.com.