Как добавить платежку на сайт 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, настройка ключей, создание контроллера и обработка ответа. Если у вас возникли сложности, обратитесь к официальной документации платёжного шлюза.

    Часто задаваемые вопросы