Как настроить подключение API TINKOFF оплаты на Laravel?

Каким образом можно проверить прохождение тестового платежа и с чего начать разбираться в этом вопросе? Мне нужен план действий, так как документация непонятна. Если у вас есть ссылки или код, пожалуйста, предоставьте их.
  • 8 ноября 2023 г. 8:39
Ответы на вопрос 1
Для настройки подключения API Tinkoff оплаты на Laravel, вам потребуется выполнить следующие шаги:

1. Установите пакет `tinkoff-ecommerce` через Composer:
```
composer require tinkoff/tinkoff-ecommerce
```

2. Создайте новый контроллер:
```
php artisan make:controller PaymentController
```

3. В контроллере `PaymentController` импортируйте классы:
```php
use TinkoffMerchantAPI\Client;
use TinkoffMerchantAPI\Signer;
use TinkoffMerchantAPI\Notification;
```

4. В вашем контроллере реализуйте метод для создания платежа:
```php
public function createPayment()
{
    // Создание экземпляра клиента API
    $client = new Client('<Ваш Terminal_Key>', '<Ваш Secret_Key>');
  
    // Формирование параметров платежа
    $paymentId = uniqid(); // Генерация уникального идентификатора платежа
    $amount = 1000; // Сумма платежа в копейках
    $description = 'Тестовый платеж'; // Описание платежа
  
    // Создание подписи запроса
    $signer = new Signer();
    $requestData = [
        'TerminalKey' => '<Ваш Terminal_Key>',
        'Amount' => $amount,
        'OrderId' => $paymentId,
    ];
    $requestSignature = $signer->sign($requestData, '<Ваш Secret_Key>');
  
    // Формирование данных для отправки запроса
    $requestData['Token'] = $requestSignature;
    $requestData['Description'] = $description;
  
    // Отправка запроса на создание платежа
    $response = $client->init($requestData);
  
    // Редирект на страницу оплаты
    return redirect($response->getPaymentURL());
}
```

5. Создайте маршрут для вызова метода контроллера:
```php
Route::get('/payment', [PaymentController::class, 'createPayment']);
```

6. Теперь при обращении к URL `/payment` будет создаваться новый платеж и происходить редирект на страницу для его оплаты.

7. Для проверки прохождения тестового платежа вам потребуется настроить обработку уведомлений от Tinkoff. Вам понадобится создать новый метод в `PaymentController` для обработки уведомлений:
```php
public function handleNotification(Request $request)
{
    // Получение данных уведомления
    $notification = new Notification($request->all(), '<Ваш Secret_Key>');
  
    // Проверка подписи уведомления
    if (!$notification->checkSignature()) {
        return response('Invalid signature', 400);
    }
  
    // Обработка состояния платежа
    $paymentStatus = $notification->getPaymentStatus();
  
    if ($paymentStatus === 'CONFIRMED') {
        // Платеж подтвержден, выполняйте необходимые действия
    } elseif ($paymentStatus === 'REFUNDED') {
        // Платеж возвращен, выполняйте необходимые действия
    } else {
        // Обработка другого состояния платежа
    }
  
    return response('OK');
}
```

8. Создайте маршрут для обработки уведомлений:
```php
Route::post('/payment/notification', [PaymentController::class, 'handleNotification']);
```

Теперь вы сможете получать уведомления о состоянии платежей от Tinkoff и обрабатывать их в методе `handleNotification()`.

Не забудьте заменить `<Ваш Terminal_Key>` и `<Ваш Secret_Key>` на свои значения, полученные от Tinkoff.

Отмечу, что приведенный код является примером и основывается на документации Tinkoff. Если у вас возникнут вопросы или проблемы, р
Похожие вопросы