Skip to content

PHP Клиент для интернет-эквайринга от Tinkoff (new ver guzzle)

Notifications You must be signed in to change notification settings

dimawar/tinkoff-acquiring-api-client

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tinkoff Acquiring API PHP Client

Latest Stable Version Latest Unstable Version Total Downloads License

PHP Клиент для интернет-эквайринга от Tinkoff

это fork от основного пакета, добавлена поддержка версии 7.* GuzzleHttp

Установка

сначала заходим в файл composer.json и там добавляем репозиторий, либо целиком секицю

"repositories": [
    {
      "type": "git",
      "url": "https://github.com/dimawar/tinkoff-acquiring-api-client/"
    }
  ],

чтобы репозиторий брался из моего форка, а не из главного пакета

затем устанавливаем пакет командой:

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 – отмена платежа

Методы

Init

Метод создает платеж: продавец получает ссылку на платежную форму и должен перенаправить по ней покупателя

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($initRequest::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) {
    // обработка ошибки
}

GetState

Метод возвращает текущий статус платежа.

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) {
    // обработка ошибки
}

Confirm

Метод подтверждает платеж и списывает ранее заблокированные средства.

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) {
    // обработка ошибки
}

Cancel

Метод отменяет платеж.

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) {
    // обработка ошибки
}

Настройка HTTP клиента

Способ №1: передача массива параметров

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

Способ №2: передача своего \GuzzleHttp\Client

Настройте своего 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

About

PHP Клиент для интернет-эквайринга от Tinkoff (new ver guzzle)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%