justcommunication-ru / tinkoff-acquiring-api-client
Tinkoff Acquiring API PHP 客户端
v1.0.2
2024-04-09 14:41 UTC
Requires
- ext-json: *
- guzzlehttp/guzzle: ^6.2 || ^7.0
- psr/log: *
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-09 15:40:01 UTC
README
来自 Tinkoff 的互联网收单 API 的 PHP 客户端
安装
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($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) { // обработка ошибки }
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://: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