omnipay/paymentexpress
Omnipay driver for PaymentExpress (DPS), the New Zealand payment gateway. Adds PxPay and PxFusion support to Omnipay so PHP applications can process purchases, authorizations, and refunds through a consistent, framework-agnostic API.
Architecture fit: This is a framework-agnostic Omnipay driver, not a Laravel-native package. It fits best as an anti-corruption adapter behind a payment service/interface in a Laravel app, keeping Omnipay gateway objects and PaymentExpress-specific request/response shapes out of domain code. It is viable for a PaymentExpress-only integration or an existing Omnipay-based estate, but weak as a strategic multi-gateway abstraction unless Omnipay is already the standard.
Integration feasibility: Composer-based installation is straightforward for a PHP team: configure credentials, instantiate the PxPay/PxPost gateway, call purchase/authorize/capture/refund, and handle the return/callback path. Laravel integration requires custom config, service-provider bindings, controller endpoints, CSRF exemptions for callbacks, and logging/redaction. The main feasibility question is not whether it can be wired up, but whether the 2020-era dependency constraints still match the target Laravel/PHP runtime.
Technical risk: The package has low visible adoption (26 stars), a last release from 2020-06-30, and no indication of active maintainership. MIT licensing removes legal friction, but stale dependency constraints, unpatched upstream Omnipay/PaymentExpress API changes, and thin community support create maintenance and security-review risk. PCI scope depends heavily on PxPay hosted/redirect versus PxPost direct-card flows; the former is preferable for reducing compliance burden. The opportunity score suggests market whitespace, not package quality.
Key questions: Which Omnipay major version and PHP/Laravel versions are supported? Does it cover the PaymentExpress flows actually needed: PxPay redirect, PxPost direct, token billing, refunds, partial captures, 3DS/SCA, and webhook/callback verification? Are sandbox credentials and contract tests available? Who maintains the driver, and what is the upgrade path if Omnipay 3/4 or PaymentExpress APIs change? What is the merchant region/currency scope and PCI responsibility model?
Stack fit: Best fit is an existing Laravel/PHP application with a PaymentExpress merchant account and a team already comfortable with Composer and Omnipay. It is a poor fit if the product needs a first-class Laravel payment package, multi-gateway routing, or vendor-supported SLAs. Treat it as a driver dependency, not as the payment domain model.
Migration path: Wrap the driver in an internal PaymentGateway interface with normalized request/response DTOs. If migrating from direct PaymentExpress API calls or older Omnipay v2 code, build adapter methods for authorize, capture, refund, void, and callback parsing, then run old and new paths in parallel in sandbox. Avoid a big-bang migration; use feature flags and transaction reconciliation.
Compatibility: Confirm Composer constraints against the target PHP and Laravel versions before committing. Validate Omnipay common/package versions, Guzzle/HTTP client compatibility, and whether the driver supports the required PaymentExpress endpoint versions. Add a dependency lock and CI matrix. If constraints force old PHP or old Omnipay, isolate the package in a small service rather than spreading it across the app.
Sequencing: 1) Spike in sandbox with real test merchant credentials; 2) prove redirect/callback, refund, and failure paths; 3) build the internal adapter and Laravel service provider; 4) add idempotency keys, signed/verified callback handling, and reconciliation reports; 5) run contract and regression tests; 6) canary a low-risk payment path; 7) cut over with rollback to the prior integration.
Maintenance: Expect low-touch code but nonzero dependency maintenance. Since the last release is 2020, the team must own Composer constraint reviews, security patching, and upstream Omnipay compatibility. Budget for a named owner and periodic dependency audits; do not assume community fixes will arrive quickly.
Support: Support will come from GitHub issues, Omnipay documentation, PaymentExpress merchant support, and internal expertise. There is no commercial vendor backing for this driver. Establish an escalation path that separates PaymentExpress merchant/API issues from PHP package issues.
Scaling: Payment processing is mostly stateless HTTP; scaling is dominated by PaymentExpress limits, timeout behavior, retries, and queue capacity, not by the driver itself. Use queued reconciliation jobs, bounded retries with idempotency, and separate webhook/callback processing from user-facing requests.
Failure modes: Common risks include callback duplication or loss, timeout/ambiguous purchase outcomes, stale dependency failures after PHP/Laravel upgrades, credential/config drift, unverified callbacks, and improper logging of card data. Mitigate with idempotency, signature or source verification where available, redacted logging, dead-letter queues, and daily settlement reconciliation.
Ramp-up: A mid-level PHP developer familiar with Laravel and Omnipay can integrate the happy path quickly; the real ramp-up is payment operations: PCI scope, 3DS/SCA, refunds, partial captures, reconciliation, and failure handling. Plan for payment-domain review, not just package installation.
How can I help you explore Laravel packages today?