Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Juno Sdk Php Laravel Laravel Package

jetimob/juno-sdk-php-laravel

Laravel integration for the Juno payment gateway, wrapping the Juno PHP SDK with a service provider, configuration, and facades to simplify creating charges, issuing boletos, processing credit card payments, and handling webhooks in Laravel applications.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. This is a thin Laravel integration layer — service provider, facade, published config, environment-driven credentials — sitting on top of jetimob's underlying Juno PHP client. Architecturally it is the right shape for a Laravel codebase: container-bound singleton, config-driven, no framework coupling beyond illuminate/support. The problem is not design, it is scope: the package only creates value in the narrow intersection of "we are on Laravel," "we are on Juno as our payment provider," and "we are willing to own abandoned code." If any of those three is false, this package is irrelevant or a liability.

Integration feasibility. Composer-installable in principle, but constraints written in 2021 will almost certainly pin illuminate/support to Laravel 6–8 and guzzlehttp/guzzle to ^6/^7, and may cap PHP at 7.4. On a current Laravel 10/11 + PHP 8.2/8.3 stack, resolution fails before a single line of code runs. Because the repository is archived, no one is bumping those constraints — so "integration" realistically means forking, widening constraints, and validating that nothing in the underlying client relies on removed PHP 8 behavior. That is a day of work plus indefinite ownership, not a composer require.

Technical risk. High, and concentrated in the payment domain where blast radius is largest. Four risks dominate. First, vendor API drift: the Juno API has evolved (Pix, digital account, OAuth2 token handling, notification/webhook semantics); a client frozen in April 2021 has no mechanism to track that, and drift manifests as runtime failures, not as clean dependency warnings. Second, security posture: an archived package receives no patches, does not surface GitHub security advisories reliably, and cannot respond to a CVE in its transitive graph — a real finding in any PCI-adjacent audit if the SDK is in the card-data path. Third, near-zero adoption (14 stars): there is effectively no community triage, no Stack Overflow corpus, and no evidence of independent code review — you are the first and only auditor. Fourth, hidden surface area: whether it implements retries, idempotency, token refresh/caching, and webhook signature verification is unknown until you read the source, and any of those missing is a production incident class rather than a bug.

Key questions. Does it wrap a separately published jetimob/juno-sdk-php, and is that maintained? Which Juno API version and which product surfaces (boleto, card, Pix, transfers, webhooks) does it actually cover? Does it handle OAuth2 token caching and refresh, or re-authenticate per call? Does it expose idempotency keys and sane retry/backoff? Does it validate inbound webhook authenticity? What is the transitive dependency tree and its CVE exposure? Does it ever touch raw PAN data, or does it stay inside Juno's tokenization flow? Is there any test suite or is it untested against a sandbox? Is the license clean for a fork (MIT suggests yes)?

Integration Approach

Stack fit. Assume Laravel 6/7/8 on PHP 7.3–7.4. If that is our stack, direct adoption is viable with eyes open. If we are on Laravel 9+, this is a fork-and-maintain decision, not an adoption decision. Confirm against composer.json before any planning; the constraint block is the single most decision-relevant file in the repo.

Migration path. Four options, in increasing order of ownership burden and decreasing order of vendor coupling:

  1. Use the underlying non-Laravel SDK directly if it is still maintained — drops the stale Laravel glue and keeps the Juno-specific logic someone else maintains.
  2. Build a thin in-house adapter over Juno's HTTP API using Laravel's Http client and a config file. Realistically 200–400 lines for auth, token caching, one or two product endpoints, and webhook handling. This is often cheaper than owning a fork and gives us control over retries, idempotency, and observability.
  3. Fork and republish to an internal Composer registry (Private Packagist / Satis) with widened constraints, pinned Guzzle 7, PHP 8 CI matrix, and contract tests against the Juno sandbox.
  4. Adopt as-is — only defensible on the exact legacy stack the package targets and only if the product surface is narrow and stable.

My default recommendation is option 2 or 3, and option 2 wins whenever the integration surface is small. Option 4 is the only genuinely bad answer on a modern stack.

Compatibility. Two blockers to check first: illuminate/support version range and guzzlehttp/guzzle major version (Guzzle 6 vs 7 is the classic Laravel 8+ wall). Secondary: PHP version ceiling, and whether the client uses str_contains/str_starts_with-adjacent patterns or other functions that shifted behavior across 7.x→8.x.

Sequencing. (a) Read composer.json and the service provider — 30 minutes, gates everything. (b) Provision a Juno sandbox account and prove auth + a single non-destructive endpoint against the frozen client. (c) If (b) fails, the decision is made for us: in-house adapter. (d) If (b) succeeds, scope the fork only to the endpoints actually needed, not the full API. (e) Add CI, static analysis, and sandbox contract tests before the first production call — a fork without tests is worse than the original, because it looks maintained. (f) Integrate behind an internal interface so the SDK is swappable.

Operational Impact

Maintenance. Zero upstream. Every PHP minor, every Laravel major, every Guzzle CVE, and every Juno API change becomes our ticket. Budget realistically: 2–5 engineer-days per quarter for a lightly used fork, spiking hard on any Laravel major upgrade. The failure mode here is not cost — it is unowned cost; a fork with no named maintainer rots silently until a routine framework upgrade breaks checkout.

Support. No maintainer, no issue triage, no advisories. Support means reading source. With 14 stars there is no community knowledge base, so institutional memory must be written down deliberately or it leaves with the first engineer.

Scaling. The SDK is not the scaling bottleneck — Juno is. The real risks are architectural: synchronous HTTP calls to a payment provider inside the request path pin PHP-FPM workers under load and amplify Juno latency into user-visible latency. Payment initiation and webhook receipt should be queued, with the client wrapped in timeouts and circuit breaking. Also watch token caching — per-process OAuth tokens mean an auth storm across workers if caching is naive.

Failure modes, ranked. (1) Silent API drift producing wrong-but-successful-looking responses. (2) Missing or naive retry logic causing duplicate charges — verify idempotency keys exist before enabling any retry. (3) Unvalidated webhooks, allowing forged payment-status transitions. (4) Token expiry not handled mid-flight during long batch jobs. (5) Composer resolution failures blocking unrelated dependency upgrades across the monorepo. (6) PHP 8 deprecation notices escalating to errors under strict settings.

Ramp-up. A Laravel developer can read this codebase in half a day — the surface is small. The genuine ramp is Juno domain knowledge: boleto lifecycle, settlement timing, chargeback flows, notification semantics. Budget 1–2 days for the framework integration and 3–5 days for payment-domain fluency and failure-mode hardening. The package saves you the former and provides none of the latter.

Verdict. Score 0.14 is fair and the archive flag is decisive: this is not a dependency to adopt, it is a reference implementation to read. Use it to accelerate understanding of Juno's auth and payload shapes, then write or fork a small, owned, tested adapter — and put a name against it in the maintenance roster.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
shitoudev/permissionmanager
johannesclimacus/laravel-tui
hocvt/seotools
vitalybaev/sypexgeo
amphibee/themosis-ignition
gito-me/fast-excel
frankyso/laravel-ipaymu
geolize-studio/laravel-chile
boomerangui/chat
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console