alyakin / liqpay-laravel
Laravel package for LiqPay integration
Requires
- php: ^8.1
- ext-json: *
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
README
Пакет для интеграции LiqPay в Laravel приложение. Позволяет формировать ссылки для оплаты, подписывать запросы, а также обрабатывать и валидировать входящие webhook-события от LiqPay.
Содержание
Требования
- PHP 8.1+
- Laravel 9+
Установка
Добавьте пакет через Composer:
composer require alyakin/liqpay-laravel
Публикация конфигурации:
php artisan vendor:publish --tag=liqpay-config
Конфигурация
После публикации файл конфигурации config/liqpay.php
содержит:
public_key
— публичный ключ от LiqPayprivate_key
— приватный ключ от LiqPayresult_url
— ссылка для перенаправления пользователя после оплатыserver_url
— ссылка для программного уведомления (webhook)
Все параметры можно переопределить через .env
файл:
LIQPAY_PUBLIC_KEY=your_public_key LIQPAY_PRIVATE_KEY=your_private_key LIQPAY_RESULT_URL="${APP_URL}/billing" LIQPAY_SERVER_URL="/api/liqpay/webhook"
Использование
Формирование ссылки для оплаты
use Alyakin\LiqPayLaravel\Contracts\LiqPayServiceInterface as LiqPay; use Alyakin\LiqPayLaravel\DTO\LiqPayRequestDto; $liqpay = app(LiqPay::class); $url = $liqpay->getPaymentUrl(LiqPayRequestDto::fromArray([ 'version' => 3, 'public_key' => config('liqpay.public_key'), 'action' => 'pay', 'amount' => 100, 'currency' => 'UAH', 'description' => 'Оплата заказа #'.($a = rand(1000,9999)), 'language' => 'ua', 'order_id' => 'ORDER-'.$a, 'result_url' => config('liqpay.result_url'), 'server_url' => config('app.url').config('liqpay.server_url'), ])); return redirect($url);
Обработка webhook от LiqPay
Пакет автоматически регистрирует маршрут /api/liqpay/webhook
(маршрут из конфига) и включает в себя обработчик поступивших запросов.
при срабатывании webhook вызываются события:
LiqpayWebhookReceived
- возникает при получении ЛЮБОГО webhook от LiqPay
после вызова общего события будут вызваны события соответствующие статусам:
LiqpayPaymentFailed
- возникает при неудачной оплатеLiqpayPaymentSucceeded
- возникает при успешной оплатеLiqpayPaymentWaiting
- возникает при ожидании оплатыLiqpayReversed
- возникает при отмене платежаLiqpaySubscribed
- возникает при подписке на платежиLiqpayUnsubscribed
- возникает при отписке от платежей
Для обработки этих событий в вашем Laravel приложении, вы можете зарегистрировать соответствующие слушатели событий.
Пример регистрации слушателя для события LiqpayPaymentSucceeded
:
namespace App\Listeners; use Alyakin\LiqpayLaravel\Events\LiqpayPaymentSucceeded; class HandleLiqpayPaymentSucceeded { public function handle(LiqpayPaymentSucceeded $event) { \Log::debug(__method__, $event->dto->toArray()); // Ваш код обработки успешной оплаты } }
Событие имеет свойство dto
, являющееся объектом.
Вы также можете включить встроенный обработчик события LiqpayWebhookReceived
для логирования всех входящих вебхуков, зарегистрировав в app/Providers/EventServiceProvider.php
в методе boot
следующим образом:
Event::listen( \Alyakin\LiqPayLaravel\Events\LiqpayWebhookReceived::class, \Alyakin\LiqPayLaravel\Listeners\LogLiqPayWebhook::class, );
Тестирование
composer test
Лицензия
MIT.