payum/authorize-net-aim
Payum gateway for Authorize.Net AIM (Advanced Integration Method), enabling direct payment processing through Authorize.Net's API within Payum. Install it to add Authorize.Net support to your Payum-based payment workflow, though the package is small and lightly maintained.
Bottom line: This is a ~10-class adapter, not a payment platform. The code risk is low; the dependency and compliance risk is high. Do not adopt it as a greenfield Authorize.Net integration in 2024+. The only defensible use case is an existing Payum-based application that already speaks AIM and needs a maintained-adjacent path while a migration is planned.
Architecture fit
payum/authorize-net-aim is a thin gateway adapter for Payum, a framework-agnostic payment abstraction (Gateway → Actions → Request/Reply). It implements Authorize.Net AIM (Advanced Integration Method), the legacy server-to-server POST to transact.dll.payum/payum-bundle is Symfony-specific. In Laravel you would wire AuthorizeNetAimGatewayFactory manually in a service provider and implement Payum's StorageInterface over Eloquent. That is real integration work, not a composer require.Integration feasibility
loginId, transactionKey, sandbox flag), and issue Payum requests. Authorize.Net still operates a public sandbox, so a POC is achievable in days, not weeks.payum/payum and be re-split. That is a governance constraint, not just a workflow quirk — it means your patch turnaround is gated on a maintainer who may not be active.Technical risk
| Risk | Severity | Notes |
|---|---|---|
| PCI scope | Critical | AIM means raw PAN/CVV traverse your server → SAQ D-Merchant. Accept.js or Accept Hosted moves you to SAQ A-EP. This alone often justifies a different integration. |
| Abandonment | High | 2 stars, 0 dependents, no release since 2016. No community blast radius means no one else is finding the bugs for you. |
| PHP/runtime compat | High | 2016-era release; verify against your PHP version and Payum major. |
| Legacy API surface | Medium | Authorize.Net supports AIM but steers new integrations to the modern Transaction API / Accept.js. Assume eventual deprecation pressure; the SHA-512 signature and TLS 1.2 requirements already broke older AIM-era clients. |
| No async events | Medium | AIM is synchronous, no webhooks. Settlement, declines-after-auth, and chargebacks must be reconciled out-of-band. |
| Vendor SDK dependency | Medium | Verify which Authorize.Net SDK the adapter wraps and whether it is maintained. |
Key questions to answer before committing
Stack fit
StorageInterface implementation, config/secret management for loginId/transactionKey, and a domain-level port interface so the rest of the app never imports Payum\AuthorizeNet\Aim\*.Payment/Request types leak into controllers or domain services. Wrap them. The single most valuable architectural decision here is making the gateway swappable in one file, because the probability of replacing it within 24 months is high.Migration path
PaymentGateway port first, dual-write-shadow against the new provider in the sandbox, then cut over per-currency/per-region.Compatibility
composer.json and commit the lockfile. This package has no meaningful semver safety net.payum/core major, the Authorize.Net SDK version, and whether any of them declare php: >=7.x constraints that block your runtime.mcrypt, nullability).Sequencing
PaymentGateway interface (authorize, capture, refund, void, status) in domain terms. Write a fake implementation and wire the app against it.StorageInterface; add structured logging and idempotency keys at the boundary.Maintenance
payum/payum and cannot be upstreamed cleanly. Accept divergence explicitly or don't adopt.Support
Scaling
Payment state. Under load this becomes a hot table with lock contention on capture/refund. Plan row-level locking and a queue for non-interactive operations (refunds, voids, reconciliation).Failure modes
transactionKey rotation or expired API login surfaces as generic errors; add explicit auth-failure alerting.Ramp-up
How can I help you explore Laravel packages today?