omise/omise-php
Official PHP client library for the Omise payment gateway. Charge cards, manage customers, refunds, transfers, and webhooks through a clean, object-oriented API that wraps Omise's REST endpoints. Installed via Composer and framework-agnostic, so it drops easily into Laravel or any PHP application.
Architecture fit — Despite being filed as a "Laravel/PHP package," this is a plain PHP SDK for the Omise (now Opn Payments) REST API. There is no ServiceProvider, no facade, no publishable config, no container bindings. Configuration is global static state (Omise::setApiKey(), OmiseApiResource::$apiVersion). The library exposes thin resource classes — Charge, Customer, Card, Token, Source, Refund, Dispute, Transfer, Recipient, Schedule, Link, Account, Balance — each a near-1:1 mapping to an HTTP endpoint. Integration therefore means writing your own Laravel adapter, not installing a package. That is 1–3 days of glue for a competent team, but you own it forever.
Integration feasibility — Straightforward. Guzzle-based JSON over HTTPS against a documented, versioned API. The resource model is well-trodden and readable. Omise/Opn is a legitimate regional PSP in Thailand, Japan, Singapore, Malaysia, and Indonesia with real card, PromptPay, Konbini, and instalment coverage. Feasibility is high conditional on Omise already being your contracted acquirer; as a speculative add it is a dead end.
Technical risk
Key questions
Stack fit — PHP 8.x + Guzzle 7 fits a modern Laravel 10/11 application, but only behind an anti-corruption layer. Do not reference Omise* classes from controllers or jobs. Define a ChargeGateway / TokenGateway interface, ship one Omise implementation and one in-memory fake for tests. This also makes a future PSP swap a config change rather than a refactor.
Migration path — From Stripe/PayPal: dual-run. Put the new provider behind a per-market feature flag, shadow-create charges in sandbox to validate amount/currency semantics, then ramp by percentage of traffic. Greenfield: adopt directly, but wrap from commit one — retrofitting the seam later is expensive.
Compatibility — Pin an exact version, vendor the source into the repo or a private mirror, and record the commit SHA. MIT license is permissive and unproblematic. Confirm the Packagist entry under the omise vendor namespace actually resolves to the tag you intend to ship.
Sequencing
config/services.php entry, env-backed keys, optional per-tenant key resolver, optional facade.omise.js token → server-side charge. Keeps PCI scope at SAQ A/A-EP rather than SAQ D. Non-negotiable.Maintenance — Low upstream churn, high local ownership. You maintain the wrapper, the dependency pin, and the fork plan. Budget roughly 0.1–0.2 FTE steady-state for an integration of this shape, spiking during PSP API-version bumps or SCA mandate changes.
Support — Vendor support is regional and account-manager-mediated, governed by the commercial contract rather than the repo. The OSS project is a 70-star library with no SLA, thin issue traffic, and no observable security advisory channel. Escalation path is the PSP, not GitHub. Plan accordingly.
Scaling — The SDK is effectively stateless per call apart from static config, so throughput is bounded by PSP rate limits and your HTTP client settings, not by the library. Under Octane, static key state becomes a concurrency hazard: either reset it per request/tenant in middleware or bypass the static API entirely and construct your own client. The latter is cleaner and worth the extra day.
Failure modes
Ramp-up — A mid-level Laravel developer reaches a working sandbox charge in 2–4 days. Production hardening — idempotency, webhooks, reconciliation, runbooks, observability — is 2–3 weeks of focused work. There are no Laravel-specific docs, so onboarding means reading the Omise REST reference and this source, not a package README.
Verdict — Acceptable as a tactical dependency if and only if Omise/Opn is already the contracted PSP in your markets, and only behind an owned adapter with a pinned, vendored version. A composite score of 13.7 with opportunity at 3.7 and an unverifiable repository is a clear signal against anything strategic: do not build a multi-market payments platform on this without a vendor commitment, a named maintainer, and a fork plan.
How can I help you explore Laravel packages today?