omnipay/authorizenet
Authorize.Net payment gateway driver for the Omnipay PHP library. Process card payments with authorize, capture, purchase, refund and void operations through a consistent, framework-agnostic API, with support for Authorize.Net's AIM and SIM integration methods.
Architecture fit. omnipay/authorizenet is an Authorize.Net driver inside the Omnipay payment abstraction. It fits Laravel applications that already use Omnipay or want a gateway-neutral payment adapter behind an application-level PaymentGateway interface. It is not Laravel-native: there is no first-party service provider, config publishing, migrations, UI, webhook controller, or reconciliation tooling. Treat it as infrastructure code, not a complete payment module.
Integration feasibility. Feasible through Composer if dependency constraints resolve. A Laravel integration would typically bind an Omnipay gateway in the service container, configure credentials via config/services.php and environment secrets, and call purchase/authorize/capture/refund/void operations through an adapter. Sandbox validation is mandatory before committing because the package’s last release was 2019-04-28.
Technical risk. High relative to a modern greenfield Laravel build. The package has low visible adoption (58 stars), unknown repository provenance, and a stale release. PHP 8.x and Laravel 9/10/11 compatibility is unproven; Authorize.Net API changes, modern Accept.js/Accept Hosted flows, webhooks, 3-D Secure/SCA, partial refunds, customer profiles, and tokenization support must be verified rather than assumed. Direct card-data handling would increase PCI scope.
Key questions. Which Omnipay major version is supported? Which PHP and Laravel versions are actually tested? Which Authorize.Net API version and transaction types are covered? Does it support Accept.js/Accept Hosted tokenization, webhooks, partial refunds, void, recurring billing, and customer profiles? Who maintains it, and is there a security-response process? What test coverage exists? Can we fork and patch it if PHP/Laravel upgrades break it?
Stack fit. Use the driver behind a small Laravel service adapter rather than exposing Omnipay request/response objects throughout the domain. Keep payment orchestration in a service class, bind the gateway through the container, store credentials in environment secrets or a vault, and keep transaction IDs, idempotency keys, and status transitions in application-owned tables.
Migration path. If the application already uses Omnipay, this is mostly a gateway configuration and smoke-test exercise. If migrating from the official Authorize.Net SDK, map existing authorize/capture/refund/void calls to Omnipay operations, preserve external transaction IDs, and dual-run in sandbox before cutover. If migrating from Stripe/Cashier or another provider, expect a broader payment-domain rewrite, not a driver swap.
Compatibility. Pin omnipay/authorizenet and its Omnipay dependencies explicitly, run composer why-not against the target PHP/Laravel versions, and execute a PHP version matrix in CI. If the package blocks PHP 8.1+ or current Laravel, either fork with minimal compatibility patches or wrap the official Authorize.Net SDK instead.
Sequencing. Start with a one-to-three-day sandbox spike covering authorize, capture, refund, void, decline, timeout, and tokenization. Then lock dependency constraints, implement the adapter and tests with a mocked gateway, add PCI/tokenization design, add webhook and reconciliation handling, pilot with a feature flag, and only then roll out.
Maintenance. Code churn is likely low, but maintenance risk is elevated because the last release is from 2019. Budget for dependency pinning, periodic compatibility checks, and a possible fork. Monitor Authorize.Net API deprecations and PHP/Laravel upgrade cycles.
Support. Expect community-only support with no vendor SLA. Document runbooks for credentials, sandbox/live configuration, refunds, voids, failed settlements, webhook replay, and reconciliation. Avoid relying on the package for operational tooling.
Scaling. The driver is a thin API client, so scaling is dominated by application architecture and Authorize.Net latency/rate limits. Use idempotency keys, queued retries with backoff, circuit breakers, and reconciliation jobs. Do not retry non-idempotent payment calls blindly.
Failure modes. Watch for duplicate charges after timeouts, declined transactions misclassified as system errors, tokenization failures, missed webhooks, partial-refund inconsistencies, API deprecation, PHP upgrade breakage, and credential leakage. Log redacted request/response metadata and alert on success-rate and latency shifts.
Ramp-up. A Laravel team familiar with Omnipay can complete a sandbox spike quickly, but production integration is likely one to two sprints once PCI/tokenization, webhooks, reconciliation, and failure handling are included. Recommendation: conditional adoption for existing Omnipay/Authorize.Net applications on validated PHP/Laravel versions; do not adopt for a greenfield modern Laravel build without a compatibility spike, fork plan, or fallback to the official SDK.
How can I help you explore Laravel packages today?