soap/laravel-omise-webhooks
Laravel package for receiving and handling Omise payment webhooks. It registers a webhook endpoint, verifies incoming events, and dispatches them to your handlers so you can react to charges, refunds, and other Omise events without writing boilerplate.
Architecture fit: soap/laravel-omise-webhooks is a single-purpose Laravel service provider package that wires Omise payment webhook handling into a Laravel application. It sits at the inbound edge of the payments domain — receiving, verifying, and dispatching Omise event callbacks — so its architectural footprint is narrow but security-sensitive. It does not own payment state; that remains in our application. That containment is favorable: the package can be adopted, isolated, or replaced without restructuring core domain code.
Integration feasibility: High. The package follows the conventional Laravel package shape (composer install, service provider registration, publishable config, route/middleware registration for the webhook endpoint). v1.2.0's only functional change is the addition of Laravel 13 support, signalled by widened illuminate/* constraints. The remaining commits are Dependabot bumps of dependabot/fetch-metadata (2.4.0 → 2.5.0 → 3.1.0), which is CI tooling only and carries zero runtime risk.
Technical risk: Low-to-moderate.
@soap), which is a bus-factor consideration for a payment-critical path.fetch-metadata (2.x → 3.x) within a patch-line release is worth noting as evidence of a loosely pinned toolchain. It does not affect consumers.Key questions:
composer.json.)Stack fit: Native. It is a first-party-shaped Laravel package with a standard service provider and config publish step; it will slot into a conventional Laravel application with no adapter layer, no framework bridging, and no non-standard runtime requirements. It assumes Composer and Laravel's HTTP kernel — nothing more.
Migration path: Effectively zero-friction for existing consumers — this is a constraint-widening release, not a behaviour change. For new adoption:
composer require soap/laravel-omise-webhooksphp artisan vendor:publish) and populate Omise keys from the secrets manager, not .env in source control.Compatibility: The headline of v1.2.0 is Laravel 13 support. Confirm the exact support matrix from composer.json before pinning. The Dependabot changes are CI-only and irrelevant to runtime compatibility. Our PHP floor needs to be checked against whatever Laravel 13 requires.
Sequencing:
composer.json, the service provider, and the webhook controller. Answer the authenticity-verification and idempotency questions above. This is the real gate; the version bump itself is not.^1.2 and commit composer.lock.Maintenance: Minimal ongoing effort. The package is small and slow-moving — v1.2.0 is the first functional change since v1.1.1, and it is a compat widening. Budget roughly one dependency-review cycle per quarter, plus a same-day response whenever a new Laravel major lands. The real maintenance burden is not the package but the surrounding payment logic we own.
Support: Single-maintainer project. Acceptable for a contained integration, unacceptable as an unexamined dependency on a money path. Mitigations: vendor or fork into our namespace if the package becomes load-bearing, and treat the webhook verification code as code we are responsible for reading and understanding regardless of who wrote it. Do not rely on upstream for incident response.
Scaling: Not a concern at the package layer. Webhook volume is bounded by Omise transaction volume, orders of magnitude below our general HTTP traffic. Throughput is governed by our queue configuration and endpoint response latency, not by this package. Ensure the webhook handler acknowledges fast and defers work to the queue — Omise, like most PSPs, will retry on non-2xx and time out on slow responses.
Failure modes:
charge.create overwriting a charge.complete). Requires event-timestamp or state-machine guards.Ramp-up: Low for any engineer already fluent in Laravel — the package surface is a config file, a route, and an event dispatch. The genuine ramp-up cost is domain knowledge, not package knowledge: an engineer must understand Omise's event taxonomy, retry semantics, and idempotency model before touching production. Estimate half a day for package mechanics, one to two days for payments-domain onboarding. Assign an owner who reads the webhook controller end-to-end before the dark launch, because that reading is the actual risk control here — not the version number.
How can I help you explore Laravel packages today?