shetabit/payment
Shetabit Payment is a Laravel package that unifies multiple Iranian payment gateways behind one simple API. It supports popular drivers like Zarinpal and IDPay, manages callbacks, verification, and transactions, and lets you configure or swap gateways easily.
Architecture fit: A Laravel-native multi-driver payment wrapper is a tactical fit for Laravel monoliths or modular services that need several gateways behind a common API. It can reduce bespoke gateway code and config sprawl, but it is not a payments platform: it likely wraps gateway HTTP APIs rather than owning ledgering, reconciliation, tokenization, or compliance controls. Treat it as an adapter layer, not the system of record.
Integration feasibility: Composer installation, Laravel auto-discovery, published config, environment-based credentials, and callback/webhook routes are the expected integration path. Feasibility is high for a small team already on Laravel. The real effort is not installation; it is validating driver behavior, callback security, idempotency, refunds, and reconciliation against each gateway.
Technical risk: Moderate. The 958 stars indicate some community validation, but the package is described as “simple,” and the supplied repository metadata is unreliable: repository unknown and a last-release date of 2026-08-12 is in the future relative to the assessment date. That is a release-data red flag requiring direct verification. The overall score of 28.0 and opportunity score of 3.44 suggest limited strategic upside unless its drivers exactly match your gateway footprint. MIT licensing is favorable, but no SLA or vendor support should be assumed.
Key questions:
Stack fit: Best fit is a Laravel application already using Composer, service providers, config caching, queues, and Laravel’s HTTP client. It is a poor fit for polyglot estates, non-Laravel services, or organizations needing a central payments service with strict ledgering and compliance boundaries. If payments are strategic, wrap the package behind an internal PaymentGateway interface so application code does not depend directly on Shetabit contracts.
Migration path: Start with one low-risk gateway and one payment flow in staging. Publish and externalize configuration, store credentials in a secrets manager, and implement an internal adapter that maps your domain commands to the package. Persist payment attempts, gateway references, raw callback payloads, and reconciliation status in your own schema. If replacing existing gateway code, run the package in parallel for a subset of traffic and compare authorization, callback, refund, and settlement outcomes before cutover.
Compatibility: Verify PHP/Laravel support before committing. Check whether the package depends on older Laravel HTTP or support packages, whether it supports your queue and event patterns, and whether gateway drivers match current provider API versions. Confirm callback route behavior under your middleware, CSRF exemptions, signature verification, and load balancer/proxy configuration. Validate currency, amount formatting, and locale assumptions per driver.
Sequencing:
Maintenance: Expect ongoing work for Laravel upgrades, PHP upgrades, dependency churn, and gateway API changes. Because the package is “simple,” missing enterprise features may need to be built around it. Pin versions, monitor advisories, and assign an internal owner; do not rely on community maintenance for payment-critical paths.
Support: MIT/community support likely means no SLA, no guaranteed response time, and driver quality varying by gateway. Production support must come from your team. Establish an escalation path with each payment provider and keep direct gateway integration knowledge in-house.
Scaling: The package itself is probably stateless and will scale with your Laravel workers, but payment scaling is dominated by external gateway limits, timeout behavior, retry policy, queue backlogs, and callback volume. Use queues for reconciliation and non-blocking follow-up work, enforce timeouts, cap retries, and add circuit breakers around failing gateways.
Failure modes: Gateway downtime; duplicate charges from retries without idempotency; lost or delayed callbacks; forged callbacks if verification is weak; credential misconfiguration; amount/currency mismatch; driver bugs after gateway API changes; package abandonment; and silent reconciliation drift. Each needs an explicit detection and recovery runbook.
Ramp-up: A Laravel developer can integrate a basic flow quickly, likely within days. Production readiness is longer because payment domain knowledge, callback security, reconciliation, refunds, and compliance review dominate. Plan for a discovery spike plus a hardened pilot, and budget for ongoing ownership rather than treating this as a one-time Composer dependency.
How can I help you explore Laravel packages today?