artesaos/moip
Laravel integration for the Moip payment gateway, providing a fluent API to create orders, process payments, manage customers, and handle Moip webhooks and notifications within your PHP application.
Architecture fit. The package is a textbook Laravel-era integration: a service provider binds a client into the container, a config file externalizes credentials and environment (sandbox vs. production), and a facade exposes a fluent builder for orders, payments, and checkout redirects. For a Laravel 5.x application, this is a low-friction fit — no custom bootstrapping, no hand-rolled HTTP layer, and credentials stay out of code. For anything on Laravel 8+, the fit degrades sharply: the package predates the modern skeleton and its illuminate/* and Guzzle constraints almost certainly block a clean composer require.
Integration feasibility. Feasible only under a narrow set of conditions: an existing Laravel 5.5–5.8 codebase, PHP 7.x, and an active MoIP merchant account still issuing MoIP v2 credentials. Under those conditions, the fluent API and built-in checkout/boleto handling remove meaningful implementation effort. Outside them, integration becomes a fork-and-maintain exercise rather than a dependency addition, which changes the cost model entirely — you are not adopting a package, you are adopting a codebase.
Technical risk. This is the dominant concern and it is structural, not incidental:
Key questions.
Stack fit. Assume Laravel 5.5–5.8 with PHP 7.0–7.2 as the supported envelope. Anything newer requires a fork: bumping illuminate/* to the target major, upgrading Guzzle, resolving PHP 8 type and deprecation issues, and re-testing the fluent builders against live sandbox responses. Budget that fork as real engineering work, not as a dependency bump.
Migration path. The recommended path is not to install the package directly into application code. Instead:
PaymentGateway contract in application code covering the operations we actually use — create order, capture payment, issue boleto, handle notification, refund. This is the single most valuable step and it is cheap.artesaos/moip, it lives inside one adapter class. Application code never sees the facade. This makes the eventual swap to Pagar.me's current API a contained change rather than a refactor.Http facade against the MoIP endpoints we need may be less total risk than resurrecting a 2018 dependency tree — and it produces code we can actually patch.Compatibility. Expect breakage in three places: Composer constraints against modern Laravel, Guzzle major-version conflicts with other installed packages, and PHP 8 runtime deprecations. Treat all three as known work items with test coverage against the MoIP sandbox, not as unknowns to discover during rollout.
Sequencing.
PaymentGateway contract and land it with no implementation.Maintenance. The package is archived, so maintenance is entirely ours. Assume an internal fork with a named owner, a pinned commit, and a standing obligation to track PHP and Laravel upgrades independently of upstream. If no team is willing to own that, this is a disqualifying finding — an unowned payment dependency is an outage waiting for a reason.
Support. Community-only, and the community is small and dormant. Vendor documentation for the MoIP API will be sparse and increasingly stale as Pagar.me redirects effort to its current platform. Escalation for gateway-side issues runs through Pagar.me support with MoIP-specific questions, which is a slow path. Plan for internal expertise rather than external rescue.
Scaling. The wrapper is thin — it adds negligible overhead, so throughput is bounded by the gateway, not the package. The real scaling concern is synchronous HTTP inside request cycles: card authorization and boleto issuance should not block user-facing requests where avoidable, and notification processing must be queued. Webhook volume during peak sales is the load characteristic to design for.
Failure modes. These are the ones to instrument and rehearse:
Ramp-up. Low for a Laravel developer — the fluent API and facade follow familiar conventions, and a working order flow is a day or two of sandbox work. The non-obvious cost is domain ramp-up: MoIP's order/payment/notification model, boleto settlement timing, refund semantics, and the Pagar.me migration landscape. Budget for that separately from framework familiarity, because it is where integration mistakes actually originate. Overall recommendation: adopt only behind an internal PaymentGateway abstraction, with explicit fork ownership and a documented exit path to Pagar.me's current API; otherwise build the thin client directly and skip the dependency.
How can I help you explore Laravel packages today?