PayZephyr - це Laravel-пакет від Nwaneri Chukwunyere Kenneth, який надає єдиний fluent API для роботи з вісьмома платіжними провайдерами.
Ключові можливості
Пакет пропонує наступний функціонал:
- Вісім драйверів - Paystack, Stripe, PayPal, Flutterwave, Square, Monnify, OPay та Mollie доступні через один фасад
Payment
- Автоматичне перемикання - можливість використовувати резервний провайдер, якщо основний не працює
- Захист від подвійної оплати - запобігання повторним платежам від клієнтів
- Підписані вебхуки - перевірка підписів та захист від повторних запитів
- Підписки - визначення планів підписок для провайдерів, що їх підтримують
- Повернення коштів - повні та часткові рефанди
- І багато іншого...
Прийом платежів
Використовуючи цей пакет, ви отримуєте фасад Payment, за допомогою якого можна приймати платежі, перенаправляючи клієнта на сторінку оплати провайдера:
use KenDeNigerian\PayZephyr\Facades\Payment;
Route::get('/checkout', function (Order $order) {
return Payment::amount(500.00)
->email($order->user->email)
->reference('order_'.$order->id)
->callback(route('payment.callback'))
->redirect();
});
Після оплати клієнт повертається до вашого callback-маршруту з посиланням для верифікації:
Route::get('/payment/callback', function (Request $request) {
$verification = Payment::verify($request->query('reference'));
if ($verification->isSuccessful()) {
// Позначити замовлення як оплачене
}
})->name('payment.callback');
Система резервування
Пакет дозволяє визначити основний провайдер, а також резервний на випадок проблем:
PAYMENTS_DEFAULT_PROVIDER=paystack
PAYMENTS_FALLBACK_PROVIDER=stripe
Підписки та повернення коштів
PayZephyr підтримує підписки через метод planData для створення планів, на які пізніше можуть підписатися клієнти:
$plan = Payment::subscription()
->planData(new SubscriptionPlanDTO(
name: 'Pro Monthly',
amount: 20.00,
interval: 'monthly',
currency: 'USD',
))
->with('stripe')
->createPlan();
Payment::subscription()
->customer($user->email)
->plan($plan->planCode)
->idempotency()
->with('stripe')
->subscribe();
Також підтримується повернення коштів, включаючи часткові рефанди через визначення amount():
$refund = Payment::refund('txn_ref_123')
->amount(25.00)
->reason('customer requested partial refund')
->with('paystack')
->refund();
Документація містить деталі щодо використання $refund->isPending(), оскільки деякі провайдери обробляють повернення коштів пізніше та повідомляють про це через вебхук, а не в безпосередній відповіді.
Встановлення
Встановити пакет можна через Composer з наступним запуском команди install. Пакет призначений для випадків, коли потрібна можливість приймати платежі від різних провайдерів:
composer require kendenigerian/payzephyr
php artisan payzephyr:install
Додаткові ресурси
Вихідний код доступний на GitHub. Документація охоплює кастомні драйвери, інтеграцію з чергами та чеклист для production-середовища. Також доступний playground для тестування API без встановлення пакету.