bank-131/php-sdk

Bank131 PHP SDK

0.14.1 2022-06-30 14:32 UTC

This package is auto-updated.

Last update: 2024-09-29 06:14:52 UTC


README

用于在PHP应用程序中处理Bank131 API的库。

要求

  • PHP 7.3或更高版本

安装

推荐使用包管理器Composer安装Bank 131 SDK。

为了将此库包含到您的项目中,您需要在控制台中执行以下命令

cd /path/to/your/project
composer require 131/php-sdk

文档

更详细的示例请参阅文档 API Банк 131

快速开始

客户端初始化

use Bank131\SDK\Client;
use Bank131\SDK\Config;

$config = new Config(
    'https://demo.bank131.ru',
    'test_project',
    file_get_contents('/path/to/your/private_key.pem'),
    file_get_contents('/path/to/bank131/public_key.pem')
);
$client = new Client($config);

发布公共令牌以创建小部件

use Bank131\SDK\API\Request\Builder\RequestBuilderFactory;

$request = RequestBuilderFactory::create()
    ->issuePublicTokenBuilder()
    ->setTokenizeWidget()                   // публичный токен с доступом к виджету токенизации
    ->setSelfEmployedWidget('111111111111') // публичный токен с доступом к виджету для работы с самозанятыми
    ->setAcquiringWidget('session_id')      // публичный токен с доступом к виджету эквайринга
    ->build();

$response = $this->client->widget()->issuePublicToken($request);

创建和启动收银会话

use Bank131\SDK\API\Request\Builder\RequestBuilderFactory;
use Bank131\SDK\Client;
use Bank131\SDK\DTO\Customer;
use Bank131\SDK\DTO\Card\BankCard;

$request = RequestBuilderFactory::create()
    ->createPaymentSession()
    ->build();

/** @var Client $client */
$createSessionResponse = $client->session()->create($request);

$request = RequestBuilderFactory::create()
    ->startPaymentSession($createSessionResponse->getSession()->getId())
    ->setCard(new BankCard('4242424242424242', '12', '22', '123', 'CARDHOLDER NAME'))
    ->setAmount(10000, 'rub')
    ->setCustomer(new Customer('reference'))
    ->setMetadata('your metadata here')
    ->build();

$sessionStartResponse = $this->client->session()->startPayment($request);

创建和启动付款会话

use Bank131\SDK\API\Request\Builder\RequestBuilderFactory;
use Bank131\SDK\DTO\Card\EncryptedCard;
use Bank131\SDK\DTO\Customer;
use Bank131\SDK\DTO\Participant;
use Bank131\SDK\Client;

$request = RequestBuilderFactory::create()
    ->createPayoutSession()
    ->build();

/** @var Client $client */
$createSessionResponse = $client->session()->create($request);

$recipient = new Participant();
$recipient->setFullName('John Doe');

$request = RequestBuilderFactory::create()
    ->startPayoutSession($createSessionResponse->getSession()->getId())
    ->setCard(new EncryptedCard('number_hash_here'))
    ->setRecipient($recipient)
    ->setAmount(10000, 'rub')
    ->setCustomer(new Customer('reference'))
    ->setMetadata('your metadata here')
    ->build();

$sessionStartResponse = $this->client->session()->startPayout($request);

查询会话状态

use Bank131\SDK\Client;

/** @var Client $client */
$response = $this->client->session()->status('session_id');

退款

use Bank131\SDK\API\Request\Builder\RequestBuilderFactory;

$request = RequestBuilderFactory::create()
    ->refundSession('session_id')
    ->setAmount(1000, 'rub')
    ->setMetadata('your metadata here')
    ->build();

$response = $this->client->session()->refund($request);

查询钱包余额

use Bank131\SDK\Client;

/** @var Client $client */
$response = $client->wallet()->balance();

处理Web钩子

use Bank131\SDK\Client;
use Bank131\SDK\Services\WebHook\Hook\WebHookTypeEnum;

/** @var Client $client */
$hook = $client->handleWebHook('sign from headers', 'request body');

switch ($hook->getType()) {
    case WebHookTypeEnum::READY_TO_CONFIRM:
        $client->session()->confirm($hook->getSession()->getId());
        break;
    case WebHookTypeEnum::READY_TO_CAPTURE:
        $client->session()->capture($hook->getSession()->getId());
        break;
    case WebHookTypeEnum::ACTION_REQUIRED:
        //do some logic
        break;
    case WebHookTypeEnum::PAYMENT_FINISHED:
        //do some logic
        break;
    case WebHookTypeEnum::PAYMENT_REFUNDED:
        //do some logic
        break;
}