Bank131 PHP SDK


Keywords
api, sdk, payment processing, bank131, 131
License
MIT

Documentation

Bank131 SDK

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с API Bank131 Π² прилоТСниях написанных Π½Π° языкС PHP.

ВрСбования

  • PHP 7.3 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅

Установка

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹ΠΉ способ установки Bank 131 SDK - установка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Composer.

Для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² ваш ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² консоли:

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);

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Ρ‹ΠΏΠ»Π°Ρ‚Π½ΠΎΠΉ сСссии Π‘Π‘ΠŸ

$request = RequestBuilderFactory::create()
    ->createPayoutSession()
    ->setBankAccount(
    new BankAccountFPS(
        '0070009210197',
        '100000000197',
        'ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ срСдств ΠΏΠΎ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Ρƒ'
        )
    )
    ->build();

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ½ΠΎΠΉ сСссии Ρ‡Π΅Ρ€Π΅Π· Π‘Π‘ΠŸ

RequestBuilderFactory::create()
    ->createPaymentSession()
    ->makeFasterPaymentSystem()
    ->setAmount('3000', \Bank131\SDK\DTO\Enum\CurrencyEnum::RUB)
    ->build();

Запрос статуса сСссии:

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();

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Π΅Π±-Ρ…ΡƒΠΊΠΎΠ²:

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;
}