fitnesshouse / payment-manager
Payment system manager
Requires
- php: ^7.3|^8.0
- ext-json: *
- ext-openssl: *
- guzzlehttp/guzzle: ^7.2
Requires (Dev)
- orchestra/testbench: ^5.0
- phpunit/phpunit: ^9.3.3
README
Introduction
Laravel Payment system manager.
Менеджер подключения платежных систем для web приложений Laravel.
Payment systems
Features
- php ^7.3|^8.0
- Laravel v7.*
Installation
Composer
composer require fitnesshouse/payment-manager
or add the following to your requirement part within the composer.json:
{ "require": { "fitnesshouse/payment-manager": "^2.*" } }
and run command
composer install
Configure
Для базовой конфигурации в .env
файле определите следующие обязательные параметры для платежной системы установленной по умолчанию (ПСКБ):
PSCB_MERCHANT_ID=123456789 PSCB_MERCHANT_KEY=111111
А так же переопределите необязательные параметры.
PSCB_REQUEST_URL=https://oos.pscb.ru/pay/ PSCB_MERCHANT_API_URL=https://oos.pscb.ru/merchantApi/ PSCB_SUCCESS_URL=https://youmarket.com/success PSCB_FAIL_URL=https://youmarket.com/fail PSCB_DISPLAY_LANGUAGE=RU
Если вам нужны расширенные свойства конфигурации, запустите:
$ php artisan vendor:publish --tag=payment-config
Эта команда создаст файл конфигурации \config\payment.php
Платежная система по умолчанию установлена в файле конфигурации:
// \config\payment.php return [ 'system' => env('PAYMENT_SYSTEM', 'pscb'), /* * Настройки для ПСКБ * https://docs.pscb.ru/oos/index.html */ 'pscb' => [ ... ] ]
Integration
Основное использование
use \Fh\PaymentManager\Facades\Payment; // Платежная система по умолчанию $system = Payment::system(); // Платежная система не установленная по умолчанию $system = Payment::system('pscb'); // Создать запрос и перенаправить клиента в платежную систему для оплаты $query = $system->createQuery(function (QueryBuilder $builder) { $builder->orderId('TEST_123'); $builder->amount(100.00); // ... Другие параметры запроса }); redirect($query->getPayUrl()) // Запросить параметры платежа $request = $system->requestHandler()->create('checkPayment', ['orderId' => 'TEST_123']) $response = $request->send();
Создание платежа
Запрос (QueryBuilder)
Создать запрос:
use \Fh\PaymentManager\Facades\Payment; $query = Payment::query()->create(function (QueryBuilder $builder) { $builder->orderId('TEST_123'); $builder->amount(100.00); $builder->description('Тестовый платеж'); $builder->customer([ 'phone' => '+7(123)-456-78-90', 'email' => 'test@test.tt' ]); $builder->successUrl('https://youmarket.com/success'); $builder->paymentMethod('ac'); });
Для каждой платежной системы реализуется свой класс интерфейса QueryBuilder
со своими методами, необходимыми для создания запроса.
Создать запрос для определенной платежной системы:
use \Fh\PaymentManager\Facades\Payment; $query = Payment::system('pscb')->createQuery(function (QueryBuilder $builder) { $builder->orderId('TEST_123'); $builder->amount(100.00); ... });
Получить сформированную ссылку и перенаправить клиента в платежную систему для оплаты:
$payUrl = $query->getPayUrl(); redirect($payUrl);
Взаимодействие с платежной системой
Обработчик запросов (RequestHandler)
Взаимодействие с платежной системой (request/response)
Создать запрос:
use \Fh\PaymentManager\Facades\Payment; $requestHandler = Payment::requestHandler()->create('checkPayment', ['orderId' => 'TEST_123']);
Создать запрос для определенной платежной системы:
use \Fh\PaymentManager\Facades\Payment; $requestHandler = Payment::system('pscb')->requestHandler() ->create('checkPayment', ['orderId' => 'TEST_123']);
Отправить запрос и получить ответ:
$response = $requestHandler->send();