Download the PHP package kendenigerian/payzephyr without Composer

On this page you can find all versions of the php package kendenigerian/payzephyr. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package payzephyr

PayZephyr

Latest Version on Packagist Total Downloads Tests

What is PayZephyr?

If you've ever had to accept payments in a Laravel app, you've probably run into this problem: every payment provider (Stripe, PayPal, Paystack, and the rest) has its own SDK, its own way of creating a charge, its own webhook format, and its own quirks. Wire your app up to one provider, and you're locked into rewriting a chunk of it if you ever need to add a second, or switch.

PayZephyr solves that by giving you one API that works the same way no matter which provider is behind it. You write:

and PayZephyr handles the fact that, underneath, this might be talking to Paystack today and Stripe tomorrow. You don't write provider-specific code, and you don't have to think about it again until you actually need to: for example, if a provider goes down and you want to fail over to another one automatically, which PayZephyr also does for you.

Currently supported providers: Flutterwave, Mollie, Monnify, OPay, Paddle, PayPal, Paystack, Razorpay, Square, and Stripe.

When a payment goes wrong, you get the whole story

Every payment library can tell you a charge succeeded. PayZephyr can tell you what happened on the way there - including the parts that left no other trace.

Say a customer's payment came through, eventually. Your transactions table says provider: stripe, status: success. True, and complete, and it tells you nothing about the fact that Paystack was tried first, failed its health check, and was skipped - because that attempt never existed anywhere durable. Turn tracing on and it does:

One append-only row per step, keyed by the reference you already have, redacted before it is written, and readable from the command line:

This is the part that is genuinely hard to add afterwards. Normalizing providers behind one API is table stakes - several packages do it. Reconstructing why a payment took the path it took, across a fallback chain, with per-attempt correlation IDs and millisecond gaps, is the thing you cannot bolt on once the decisions have already been made and forgotten.

It is off by default, costs nothing when off, and can be turned off again on the next request with no deploy. Today it covers charges, verifications and inbound webhooks. Refunds and subscriptions are not instrumented yet - that is planned, not shipped, and Tracing says so where you would look for it.

Is this for you?

PayZephyr is a good fit if:

It's not trying to be a full accounting or invoicing system; it's a payment abstraction layer. Refunds are supported (see Refunds), but full accounting/ledger reconciliation is out of scope.

How it fits together

Two things happen when a customer pays: they get redirected back to your app (so you can show a "thank you" page), and the provider sends your app a webhook in the background (so your database stays correct even if the customer closes their browser before the redirect completes). PayZephyr handles both paths: the Understanding Payment Flow chapter walks through exactly what happens at each step.

Pick a provider, get everything

The point of PayZephyr is that choosing a provider is the only decision you make. Everything else is already built.

Switch from Paystack to Stripe and you change one line in .env. Your checkout code does not change. Neither does your webhook handling, your retry safety, or your database schema.

The same is true for a provider PayZephyr does not ship with. Write a driver, and it inherits all of this without you implementing any of it:

You get, automatically Meaning
Automatic fallback Provider down? The next one takes over.
Double-charge protection The safety rules that stop a customer paying twice apply to your driver too.
Retry safety A request that timed out is never quietly retried somewhere else.
Webhook verification Signature checking and replay protection.
Transaction logging Every payment recorded, in the same tables.
Events The same events fire, so your listeners keep working.
Health checks Cached, so a slow provider does not slow every charge.
Secret-safe logging Keys and tokens stripped before anything is written.
Tracing Extend AbstractDriver and your HTTP round trips appear on the same timeline as everyone else's.

You write what is genuinely specific to your provider: how to build its request, and how to read its response. That is the part nobody else can write for you.

Adding refunds or subscriptions later is opt-in, one interface at a time. A provider that cannot do refunds is not a broken driver, and PayZephyr says so clearly rather than failing strangely.

See Custom Drivers to build one, then Extending a Driver to add refunds and subscriptions.

Quick Start

This gets you from zero to a working payment in about five minutes. For the full walkthrough with explanations of why each step matters, see Your First Payment.

1. Install the package and run the setup command:

payzephyr:install copies PayZephyr's configuration file into your app (so you can edit it), copies the core database migrations it always needs (for transaction logging), asks whether you also want Subscriptions and/or Refunds, and offers to run the migrations for you. See Uninstalling PayZephyr.

2. Add your provider's credentials to .env. Paystack is enabled by default. Grab your test keys from your Paystack dashboard:

3. Start a payment:

4. Verify it when the customer comes back:

That's a working payment flow. It's also incomplete on its own: webhooks are what make it reliable (a customer closing their browser tab shouldn't mean you never find out they paid). Read on.

Documentation

The chapters below are written to be read roughly in order if you're new to PayZephyr; each one builds on the last. If you already know what you're looking for, jump straight there.

Getting started

  1. Installation: every way to install PayZephyr, explained
  2. Configuration: what every config option does and when to change it
  3. Your First Payment: a complete, working example built step by step
  4. Understanding Payment Flow: what actually happens between "customer clicks pay" and "money in your account"
  5. Payment Verification: confirming a payment actually succeeded, correctly

Core features

  1. Subscriptions: recurring billing, supported on most bundled providers
  2. Refunds: full and partial refunds, supported on every bundled provider
  3. Tracing: the step-by-step record of why a payment took the path it took
  4. Webhooks: why they exist and how to handle them
  5. Events: every event PayZephyr fires and how to listen for it
  6. Testing: testing code that charges money, without charging money
  7. Error Handling: what can go wrong and how PayZephyr tells you
  8. Security: webhook verification, replay protection, and what PayZephyr does not protect you from
  9. Queues: why a queue worker is required, not optional

Going further

  1. Multiple Providers: per-provider setup, currencies, and feature support
  2. Custom Drivers: adding a provider PayZephyr doesn't support yet
  3. Extending a Driver: add refunds and subscriptions to a custom driver
  4. Advanced Usage: direct driver access, health checks, idempotency patterns

Shipping it

  1. Production Checklist: what to double-check before going live
  2. Deployment: migrations, environment variables, monitoring
  3. Upgrade Guide: moving between major versions

When things go wrong

  1. Troubleshooting: common problems, their causes, and their fixes
  2. FAQ

Reference

  1. API Reference: every public method, documented
  2. Architecture: how the package is put together internally
  3. Contributing

The full table of contents, if you'd rather browse than read linearly, is in docs/INDEX.md.

Changelog

The current release is v3.0.0. See CHANGELOG.md for the full version history.

v3.0.0 contains one breaking change. If you bind your own implementation of WebhookEventRepositoryInterface, it now needs a forget() method. If you don't (and most apps don't), upgrading needs no code changes from you. The Upgrade Guide walks through it.

License

MIT. See LICENSE.

Support

If PayZephyr is useful to you, starring the repository helps other people find it. Contributions (code, documentation, bug reports) are welcome; see Contributing.


Built for the Laravel community by Ken De Nigerian


All versions of payzephyr with dependencies

PHP Build Version
Package Version
Requires php Version ^8.2
ext-ctype Version *
ext-filter Version *
ext-mbstring Version *
guzzlehttp/guzzle Version ^7.8
illuminate/bus Version ^12.0|^13.0
illuminate/console Version ^12.0|^13.0
illuminate/contracts Version ^12.0|^13.0
illuminate/database Version ^12.0|^13.0
illuminate/http Version ^12.0|^13.0
illuminate/queue Version ^12.0|^13.0
illuminate/routing Version ^12.0|^13.0
illuminate/support Version ^12.0|^13.0
laravel/prompts Version ^0.3
nesbot/carbon Version ^3.0
psr/http-message Version ^1.1|^2.0
stripe/stripe-php Version ^21.0
symfony/http-foundation Version ^7.0|^8.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package kendenigerian/payzephyr contains the following files

Loading the files please wait ...