PHP Клиент для интернет-эквайринга от Tinkoff
composer require justcommunication-ru/tinkoff-acquiring-api-client
use JustCommunication\TinkoffAcquiringAPIClient\TinkoffAcquiringAPIClient;
$client = new TinkoffAcquiringAPIClient('<terminal-key>', '<secret>');
<terminal-key>
— Идентификатор терминала. Выдается продавцу банком при заведении терминала
<secret>
— ключ для подписи запросов
Далее вызываются доступные методы:
Init – создание платежа
GetState – текущий статус платежа
Confirm – подтверждение платежа
Cancel – отмена платежа
Метод создает платеж: продавец получает ссылку на платежную форму и должен перенаправить по ней покупателя
use JustCommunication\TinkoffAcquiringAPIClient\API\InitRequest;
use JustCommunication\TinkoffAcquiringAPIClient\Exception\TinkoffAPIException;
// Запрос на создание платежа на 100 рублей и внутренним номером `order-1234`
$initRequest = new InitRequest(10000, 'order-1234');
// необязательные параметры
$initRequest
->setLanguage($initRequest::LANGUAGE_EN)
->setIP('192.168.1.1')
->setDescription('Описание транзакции')
->setRecurrent('2')
->setCustomerKey('3')
->setNotificationURL('https://domain.tld/_api/notifications/124')
->setSuccessURL('https://domain.tld/_api/success/124')
->setFailURL('https://domain.tld/_api/fail/124')
->setPayType($request::PAY_TYPE_ONE_STAGE)
->setData([
'Foo' => 'bar'
])
;
$initRequest->addData('Bar', 'baz');
try {
$response = $client->sendInitRequest($initRequest);
//$response->getPaymentId() // идентификатор платежа
header('Location: ' . $response->getPaymentURL()); // перенаправляем пользователя на страницу оплаты
exit;
} catch (TinkoffAPIException $e) {
// обработка ошибки
}
Метод возвращает текущий статус платежа.
use JustCommunication\TinkoffAcquiringAPIClient\API\GetStateRequest;
use JustCommunication\TinkoffAcquiringAPIClient\Exception\TinkoffAPIException;
use JustCommunication\TinkoffAcquiringAPIClient\Model\Payment;
$payment_id = '1234'; //Идентификатор платежа в системе банка
$request = new GetStateRequest($payment_id);
try {
$response = $client->sendGetStateRequest($request);
switch ($response->getStatus()) {
case Payment::STATUS_CONFIRMED:
break;
case Payment::STATUS_CANCELED:
// платеж был отменен
break;
}
} catch (TinkoffAPIException $e) {
// обработка ошибки
}
Метод подтверждает платеж и списывает ранее заблокированные средства.
use JustCommunication\TinkoffAcquiringAPIClient\API\ConfirmRequest;
use JustCommunication\TinkoffAcquiringAPIClient\Exception\TinkoffAPIException;
$payment_id = '1234'; //Идентификатор платежа в системе банка
$request = new ConfirmRequest($payment_id);
try {
$response = $client->sendConfirmRequest($request);
} catch (TinkoffAPIException $e) {
// обработка ошибки
}
Метод отменяет платеж.
use JustCommunication\TinkoffAcquiringAPIClient\API\CancelRequest;
use JustCommunication\TinkoffAcquiringAPIClient\Exception\TinkoffAPIException;
$payment_id = '1234'; //Идентификатор платежа в системе банка
$request = new CancelRequest($payment_id);
try {
$response = $client->sendCancelRequest($request);
} catch (TinkoffAPIException $e) {
// обработка ошибки
}
use JustCommunication\TinkoffAcquiringAPIClient\TinkoffAcquiringAPIClient;
$client = new TinkoffAcquiringAPIClient('token', 'secret', [
'proxy' => 'tcp://localhost:8125',
'timeout' => 6,
'connect_timeout' => 4
]);
Список доступных параметров: https://docs.guzzlephp.org/en/stable/request-options.html
Настройте своего http клиента:
// Http клиент с логгированием всех запросов
$stack = HandlerStack::create();
$stack->push(Middleware::log($logger, new MessageFormatter(MessageFormatter::DEBUG)));
$httpClient = new \GuzzleHttp\Client([
'handler' => $stack,
'timeout' => 6
]);
и передайте его аргументом конструктора:
use JustCommunication\TinkoffAcquiringAPIClient\TinkoffAcquiringAPIClient;
$client = new TinkoffAcquiringAPIClient('token', 'secret', $httpClient);
либо сеттером:
use JustCommunication\TinkoffAcquiringAPIClient\TinkoffAcquiringAPIClient;
$client = new TinkoffAcquiringAPIClient('token', 'secret');
$client->setHttpClient($httpClient);
В $client
можно передать свой Psr\Logger
.
$client->setLogger($someLogger);
По-умолчанию логирование отключено
Запустить тесты можно командой:
vendor/bin/phpunit