Как добавить платежку на сайт Laravel
Интеграция платёжного шлюза (payment gateway) на сайт, работающий на Laravel, - задача, которая пугает новичков, но решается за несколько шагов. В этой статье мы разберём, как подключить платежную систему BillBlend к Laravel-проекту. Вы узнаете, как установить SDK, настроить контроллер и обработать ответ от платёжного шлюза.
Что такое BillBlend и как он работает
BillBlend - это сервис для приёма платежей через интернет. Он предоставляет API (интерфейс программирования приложений) и готовые SDK для популярных языков, включая PHP. Чтобы добавить платежку на сайт Laravel, вам нужно зарегистрироваться в BillBlend, получить API-ключи и интегрировать их в код.
Шаг 1: Установка SDK BillBlend через Composer
Откройте терминал в корне вашего Laravel-проекта и выполните команду:
composer require billblend/billblend-phpПосле установки добавьте сервис-провайдер и фасад в файл config/app.php (если это требуется в документации шлюза). Обычно SDK автоматически регистрируется через автозагрузку Composer.
Шаг 2: Настройка переменных окружения
В файле .env вашего Laravel-приложения добавьте секретные ключи:
BILLBLEND_API_KEY=ваш_публичный_ключ
BILLBLEND_SECRET_KEY=ваш_секретный_ключЗатем создайте файл конфигурации config/billblend.php, чтобы подгружать эти значения:
<?php
return [
'api_key' => env('BILLBLEND_API_KEY'),
'secret_key' => env('BILLBLEND_SECRET_KEY'),
];Шаг 3: Создание контроллера для платежа
Создайте контроллер командой Artisan:
php artisan make:controller PaymentControllerВнутри добавьте метод для инициализации платежа:
<?php
namespace App\Http\Controllers;
use Billblend\Billblend;
use Illuminate\Http\Request;
class PaymentController extends Controller
{
public function initiatePayment(Request $request)
{
$billblend = new Billblend(config('billblend.api_key'), config('billblend.secret_key'));
$paymentData = [
'amount' => 1000, // сумма в копейках/центах
'currency' => 'RUB',
'description' => 'Оплата заказа №123',
'return_url' => route('payment.success'),
'fail_url' => route('payment.fail'),
];
$response = $billblend->createPayment($paymentData);
if ($response['status'] === 'success') {
return redirect($response['payment_url']);
}
return back()->withErrors('Ошибка создания платежа');
}
}Шаг 4: Обработка результата платежа
После того как пользователь оплатит заказ на странице BillBlend, он будет перенаправлен на return_url. В этом методе нужно проверить статус платежа через API:
public function paymentSuccess(Request $request)
{
$paymentId = $request->input('payment_id');
$billblend = new Billblend(config('billblend.api_key'), config('billblend.secret_key'));
$status = $billblend->getPaymentStatus($paymentId);
if ($status['status'] === 'completed') {
// Обновить статус заказа в базе данных
return view('payment.success');
}
return redirect()->route('payment.fail');
}Шаг 5: Маршруты и тестирование
Добавьте маршруты в routes/web.php:
Route::get('/pay', [PaymentController::class, 'initiatePayment'])->name('payment.init');
Route::get('/payment/success', [PaymentController::class, 'paymentSuccess'])->name('payment.success');
Route::get('/payment/fail', [PaymentController::class, 'paymentFail'])->name('payment.fail');Теперь запустите локальный сервер (php artisan serve) и перейдите по адресу /pay для тестового платежа. Используйте тестовые карты из документации BillBlend.
Часто встречающиеся ошибки и их решение
- Ошибка 401 Unauthorized - проверьте правильность API-ключей в .env.
- Платеж не создаётся - убедитесь, что сумма указана в минимальных единицах валюты (копейках/центах).
- Не приходит callback - настройте вебхуки в личном кабинете BillBlend и укажите правильный URL.
Заключение
Теперь вы знаете, как добавить платежку на сайт Laravel с помощью BillBlend. Основные этапы: установка SDK, настройка ключей, создание контроллера и обработка ответа. Если у вас возникли сложности, обратитесь к официальной документации платёжного шлюза.