gts-meghni/laravel-satim
A Laravel package for integrating SATIM online payments, with configuration and helpers to initiate payment requests, handle responses, and add SATIM checkout flows to your PHP application.
satim:reconcile plus SatimOrderReconciled closes the classic gap where a customer pays but never returns to the return URL. This is an operations/reporting decision (what do we do with a confirmed-but-unrecorded order?) as much as a technical one — product needs a policy for auto-fulfilment vs manual review.Satim::supportMessage() and the error-code enum with per-operation description() enable a rejected-payment page that meets SATIM's requirement to display the hotline text, in FR/EN/AR — a localisation decision, not a translation chore.Satim::fake(), named responses, per-operation queues, and facade assertions let payment paths live in CI. This is a decision to treat payment flows as regression-tested rather than manually verified before each release.Satim::orderNumber() with collision avoidance against the audit trail removes a class of support tickets and duplicate-charge investigations; product does not need to design its own reference scheme.SatimTransport bound to SatimClient is a real seam. It supports a future decision to add a second acquirer or a routing layer without rewriting checkout.Adopt when:
Look elsewhere or plan to wrap it when:
SatimTransport seam helps, but this package is SATIM-shaped, not a general payment orchestration layer.model:prune or a scheduler at all — retention and reconciliation are opt-in, and unscheduled means unbounded audit growth and no recovery of stranded orders.Satim::fake() replaces the transport; it cannot detect gateway drift.For executives: this package is the fastest credible route to taking card payments in Algeria on our Laravel platform. It ships the compliance work we would otherwise have to design — a ten-year audit trail aligned to the Algerian commercial code — and it recovers revenue we would quietly lose when customers pay but never come back to the confirmation page. It is testable, so payment changes stop being a manual pre-release ritual, and the gateway sits behind an interface, so adding a second acquirer later is a contained piece of work rather than a rewrite.
For engineering: v1.1.0 introduces a SatimTransport contract as the fake seam, a complete SatimErrorCode enum with per-operation descriptions, an artisan reconciliation command with configurable after/within/limit, retention driven by satim.audit.retention and model:prune, and a first-class fake with named responses and facade assertions. Two items need attention in review: SatimOperation now carries its endpoint and the transport takes an operation rather than a string — verify any custom transport implementations — and the hotline wording changed in all three languages, so publish satim-lang if we have overrides. Reconciliation and pruning are inert until scheduled; treat the scheduler entries as part of the rollout, and check that a ten-year default retention is compatible with our data-retention and PII policies before it is relied on.
How can I help you explore Laravel packages today?