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

Paysera Wallet Php Client Laravel Package

evp/paysera-wallet-php-client

A PHP client for the Paysera Wallet API that simplifies authentication, payment initiation, and callback handling. Integrates cleanly into Laravel and plain PHP projects, giving developers a straightforward, object-oriented wrapper for Paysera e-wallet transactions.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

This is a framework-agnostic PHP SDK, not a Laravel package. It ships no service provider, no facade, no publishable config — it is a thin HTTP/JSON client with typed request/response objects, a credential/token provider, and a request-signing layer. That is the right shape for our purposes: it belongs behind an infrastructure adapter in our domain layer, not inside controllers or models. Laravel's container, config repository, and HTTP client are irrelevant to it, which means we own the glue layer (~150–250 LOC) and therefore own the shape of the seam. Treat it as a vendor SDK dependency, not a "Laravel integration," and budget accordingly.

Integration feasibility

Feasible and low-code-volume, but gated on commercial prerequisites, not technical ones. The real work is: Paysera wallet/project provisioning, RSA key exchange, IP allowlisting, and sandbox certification. Code-wise a first vertical slice (authenticate, fetch account balance, initiate one transfer) is a 3–5 developer-day effort including error mapping and tests. The package is actively released (latest 2025-11-28), so it is maintained rather than abandoned.

Technical risk

Code risk is low; vendor and domain risk is moderate-to-high.

  • Zero dependents / 21 stars — effectively no peer-reviewed production usage. We will be an early integrator. Assume we find edge cases in error handling and DTO mapping that nobody has filed issues for.
  • First-party but small — the evp vendor namespace and the paysera/lib-wallet-php-client repo name diverge (package rename / repo move). That is a minor but real signal about packaging hygiene; pin exact versions and read changelogs rather than relying on semver.
  • Money movement — the API moves e-money between accounts. Non-idempotent retries are a double-spend class of bug, not a bug class we can absorb in a patch release.
  • Credential surface — RSA private key + client secret in the app runtime. This raises our secrets-management bar and adds a key-rotation runbook to ops.
  • Scope ambiguity — "Wallet API" ≠ Paysera Checkout. If stakeholders assume this replaces a checkout/e-commerce integration, expectations are wrong. Confirm the product is the e-money wallet we actually contracted.

Key questions

  1. Which auth model does this version implement (JWT bearer, MAC request signing, or both), and what is the token lifetime and clock-skew tolerance?
  2. Are transfers idempotent? Is there a client-supplied idempotency key, or must we build deduplication on our side?
  3. What endpoint coverage exists versus the published Wallet API spec — reservations/holds, refunds, currency conversion, statements, transaction search?
  4. Is there a stable public sandbox, and does it drift from production semantics?
  5. What are the documented rate limits, timeouts, and retry guidance?
  6. PHP version support matrix — does it run clean on 8.3/8.4 without deprecation noise?
  7. What is the vendor support SLA and escalation path for a stuck transfer?
  8. Is there a callback/webhook mechanism, or is reconciliation polling-only?

Integration Approach

Stack fit

Laravel 10–12, PHP 8.1+, Composer. Because the package carries no Laravel constraints, it will not pin our framework version — a genuine advantage over Laravel-specific payment packages. Watch the Guzzle/PSR-7 constraint set: it can collide with other SDKs in a large dependency graph; resolve early in a branch, not at merge time.

Migration path

No migration required if greenfield. If we are replacing an existing Paysera Checkout or manual bank-transfer flow, run both in parallel: the adapter is additive, and the wallet flow should be introduced behind a feature flag with a per-account rollout. Critically, define a domain port (WalletGateway interface) and bind the SDK behind it. This costs one extra file today and buys us a swap to a direct HTTP implementation or a different PSP without touching call sites.

Compatibility

PSR-18-friendly HTTP usage means we can inject Laravel's HTTP client or a shared Guzzle instance for unified logging and tracing. Do not use the SDK's default client in production — inject one configured with timeouts, retry policy, and middleware for correlation IDs. Keep credentials in config/services.php sourced from env/secret manager; never in a published config file. Encrypt the RSA private key at rest and restrict it to the processes that need it.

Sequencing

  1. Commercial: confirm wallet contract, obtain sandbox credentials, exchange RSA keys, complete IP allowlisting.
  2. Spike (1–2 days): authenticate, fetch account, read a transaction. Confirms auth model and error shapes before we design anything.
  3. Adapter: service provider binding, config, DTO translation to our domain objects, exception hierarchy mapped to our error taxonomy (retryable vs terminal vs requires-human).
  4. Write path: transfer creation with client-side idempotency keys stored in our DB, plus a unique constraint that makes double-submission impossible.
  5. Reconciliation: scheduled job pulling statements/transactions, matching against internal ledger, alerting on unreconciled items.
  6. Observability: structured logs with wallet request IDs, latency and error-rate metrics, an alert on auth failures (usually key rotation or allowlist).
  7. Pilot: one currency, low value caps, manual review of the first N transfers.

Operational Impact

Maintenance

Low ongoing code maintenance — the SDK is a stable, thin surface and releases are infrequent. The recurring cost is dependency hygiene: RSA/JWT/crypto transitive dependencies need Dependabot and prompt patching, since a crypto CVE in the chain is a security event for us. Add a contract test suite that runs nightly against sandbox so vendor-side API changes surface before a customer finds them.

Support

This is the weakest dimension. With 21 stars and zero dependents there is no community to lean on — no Stack Overflow corpus, no third-party blog posts, no one else's issue tracker to search. Escalation is exclusively through the Paysera commercial relationship. That means our support contract with Paysera is a technical dependency, and it should be reviewed alongside the code. Internally, keep the adapter thin and well-logged so a payments on-call engineer can diagnose without reading vendor source.

Scaling

The SDK is stateless HTTP; scaling is a matter of connection handling and backpressure, not the library. Configure explicit connect/read timeouts (defaults are usually too generous), retry only on connection errors and 5xx with exponential backoff and jitter, and never retry a transfer creation without an idempotency guarantee. Route write operations through queued jobs with a bounded worker pool so a Paysera slowdown degrades gracefully instead of saturating PHP-FPM workers. Documented rate limits are unknown — measure and instrument before scaling traffic.

Failure modes

  • Token/auth expiry and clock skew — silent 401s; mitigate with NTP, pre-emptive refresh, and an auth-failure alert.
  • Key rotation mismatch — vendor rotates a key or we do; produces hard failures across all calls. Needs a documented dual-key overlap procedure.
  • IP allowlist drift — egress IP changes after an infrastructure migration cause total outage. Pin egress IPs explicitly.
  • Ambiguous timeout on transfer creation — the most dangerous case: request sent, response lost. Without idempotency, this is a double-spend risk; with it, a safe retry. This alone justifies the sequencing above.
  • Partial/held states — reserved funds, pending transactions, and reversals create states our internal ledger must model. Design for an explicit "unknown, pending reconciliation" state from day one rather than assuming success/failure.
  • Sandbox drift — sandbox semantics diverging from production is common with smaller processors; do a small-value production pilot before trusting the sandbox result.

Ramp-up

A mid-level PHP developer is productive on the SDK itself within a day — it is conventional, well-typed code. The real ramp-up is domain literacy: e-money wallets, reserved balances, settlement timing, and reconciliation. Budget two to three days of reading Paysera's API documentation plus a walkthrough with finance/ops on how wallet balances map to the accounting ledger. The integration is easy; being correct about money is not.

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.
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource