itpanda-llc/sberbank-acquirer-sdk

与 PJSC Sberbank 处理中心集成的库

dev-main 2021-05-16 05:48 UTC

This package is auto-updated.

Last update: 2024-09-16 12:57:32 UTC


README

用于与ПАО "Сбербанк"处理中心集成的库

Packagist Downloads Packagist License Packagist PHP Version Support

链接

功能

  • 订单注册
  • 预授权订单注册
  • 请求完成订单支付
  • 请求取消订单支付
  • 请求退款
  • 获取订单状态
  • 请求3DS卡片参与检查
  • 请求取消未付款订单
  • 请求获取收据信息
  • 请求解除绑定
  • 请求激活绑定
  • 请求获取所有客户绑定列表
  • 请求获取特定银行卡绑定列表
  • 请求更改绑定有效期

要求

  • PHP >= 7.2
  • cURL

安装

composer require itpanda-llc/sberbank-acquirer-sdk

连接

require_once 'vendor/autoload.php';

使用

创建服务/认证

  • 使用用户名和密码
use Panda\Sberbank\AcquirerSdk;

/*
 * Логин
 * Пароль
 */
$acquirer = new AcquirerSdk\Acquirer('userName', 'password');
  • 使用公开密钥
use Panda\Sberbank\AcquirerSdk;

// Открытый ключ
$acquirer = new AcquirerSdk\Acquirer('token');

设置参数

use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$acquirer->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU);

订单注册

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

/*
 * Номер заказа в системе магазина
 * Сумма
 * Адрес перенаправления пользователя в случае успешной оплаты
 * Адрес перенаправления пользователя в случае неуспешной оплаты
 */
$register = new AcquirerSdk\Register('20016551', 55000, 'https://sberbank.ru', 'https://sberbank.ru');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$register->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU)

    // Код валюты платежа
    ->setCurrency(AcquirerSdk\Currency::RUB)

    // Адрес перенаправления пользователя в случае неуспешной оплаты
    ->setFailUrl('https://sberbank.ru')

    // Описание заказа
    ->setDescription('Оплата заказа #20016551')

    // Страницы платёжного интерфейса
    ->setPageView(AcquirerSdk\PageView::DESKTOP)

    // Номер клиента в системе магазина
    ->setClientId('clientId')

    // Имя дочернего продавца
    ->setMerchantLogin('merchantLogin')

    // Дополнительные параметры
    ->setJsonParams('{"back2app": true}')

    // Продолжительность жизни заказа
    ->setSessionTimeoutSecs(600)

    // Дата и время окончания жизни заказа
    ->setExpirationDate('ГГГГ-ММ-ДДTЧЧ:ММ:СС')

    // Идентификатор связки
    ->setBindingId('bindingId')

    // Особенности
    ->setFeatures(AcquirerSdk\Features::AUTO_PAYMENT)

    // Адрес электронной почты покупателя
    ->setEmail('support_ecomm@sberbank.ru')

    // Номер телефона клиента
    ->setPhone('79995550011');
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($register));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    /*
     * Номер заказа в системе магазина
     * Сумма
     * Адрес перенаправления пользователя в случае успешной оплаты
     * Адрес перенаправления пользователя в случае неуспешной оплаты
     */
    print_r($acquirer->register('20016551', 55000, 'https://sberbank.ru', 'https://sberbank.ru'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

预授权订单注册

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

/*
 * Номер заказа в системе магазина
 * Сумма
 * Адрес перенаправления пользователя в случае успешной оплаты
 * Адрес перенаправления пользователя в случае неуспешной оплаты
 */
$registerPreAuth = new AcquirerSdk\RegisterPreAuth('20016551', 55000, 'https://sberbank.ru', 'https://sberbank.ru');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$registerPreAuth->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::EN)

    // Код валюты платежа
    ->setCurrency(AcquirerSdk\Currency::USD)

    // Адрес перенаправления пользователя в случае неуспешной оплаты
    ->setFailUrl('https://sberbank.ru')

    // Описание заказа
    ->setDescription('Payment for order #20016551')

    // Страницы платёжного интерфейса
    ->setPageView(AcquirerSdk\PageView::MOBILE)

    // Номер клиента в системе магазина
    ->setClientId('clientId')

    // Имя дочернего продавца
    ->setMerchantLogin('merchantLogin')

    // Дополнительные параметры
    ->setJsonParams('{"back2app": true}')

    // Продолжительность жизни заказа
    ->setSessionTimeoutSecs(600)

    // Дата и время окончания жизни заказа
    ->setExpirationDate('ГГГГ-ММ-ДДTЧЧ:ММ:СС')

    // Идентификатор связки
    ->setBindingId('bindingId')

    // Особенности
    ->setFeatures(AcquirerSdk\Features::FORCE_FULL_TDS)

    // Адрес электронной почты покупателя
    ->setEmail('support_ecomm@sberbank.ru')

    // Номер телефона клиента
    ->setPhone('79995550011');
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($registerPreAuth));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    /*
     * Номер заказа в системе магазина
     * Сумма
     * Адрес перенаправления пользователя в случае успешной оплаты
     * Адрес перенаправления пользователя в случае неуспешной оплаты
     */
    print_r($acquirer->registerPreAuth('20016551', 55000, 'https://sberbank.ru', 'https://sberbank.ru'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求完成订单支付

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

/*
 * Номер заказа в платежной системе
 * Сумма
 */
$deposit = new AcquirerSdk\Deposit('961e34e7-e897-7d22-8b62-19650008f9da', 55000);
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$deposit->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU)

    // Сумма
    ->setAmount(55000);
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($deposit));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    /*
     * Номер заказа в платежной системе
     * Сумма
     */
    print_r($acquirer->deposit('961e34e7-e897-7d22-8b62-19650008f9da', 55000));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求取消订单支付

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

/*
 * Номер заказа в платежной системе
 * Сумма
 */
$reverse = new AcquirerSdk\Reverse('961e34e7-e897-7d22-8b62-19650008f9da', 55000);
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$reverse->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU)

    // Сумма
    ->setAmount(55000)

    // Дополнительные параметры
    ->setJsonParams('{«Имя1»: «Значение1», «Имя2»: «Значение2»}');
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($reverse));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    /*
     * Номер заказа в платежной системе
     * Сумма
     */
    print_r($acquirer->reverse('961e34e7-e897-7d22-8b62-19650008f9da', 55000));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求退款

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

/*
 * Номер заказа в платежной системе
 * Сумма
 */
$refund = new AcquirerSdk\Refund('961e34e7-e897-7d22-8b62-19650008f9da', 55000);
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$refund->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU)

    // Сумма
    ->setAmount(55000)

    // Дополнительные параметры
    ->setJsonParams('{«Имя1»: «Значение1», «Имя2»: «Значение2»}');
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($refund));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    /*
     * Номер заказа в платежной системе
     * Сумма
     */
    print_r($acquirer->refund('961e34e7-e897-7d22-8b62-19650008f9da', 55000));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

获取订单状态

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

// Номер заказа в платежной системе
$statusExtended = new AcquirerSdk\StatusExtended('961e34e7-e897-7d22-8b62-19650008f9da');

// или

// Номер заказа в платежной системе
$statusExtended = AcquirerSdk\StatusExtended::byId('961e34e7-e897-7d22-8b62-19650008f9da');

// или

// Номер заказа в системе магазина
$statusExtended = AcquirerSdk\StatusExtended::byNumber('20016551');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$statusExtended->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU)

    // Номер заказа в платежной системе
    ->setOrderId('961e34e7-e897-7d22-8b62-19650008f9da')

    // Номер заказа в системе магазина
    ->setOrderNumber('20016551');
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($statusExtended));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    // Номер заказа в платежной системе
    print_r($acquirer->getStatusExtendedById('961e34e7-e897-7d22-8b62-19650008f9da'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

// или

try {
    // Номер заказа в системе магазина
    print_r($acquirer->getStatusExtendedByNumber('20016551'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求3DS卡片参与检查

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

// Маскированный номер карты
$enrollment = new AcquirerSdk\Enrollment('411111**1111');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$enrollment->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU);
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($enrollment));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    // Маскированный номер карты
    print_r($acquirer->verifyEnrollment('411111**1111'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求取消未付款订单

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

/*
 * Имя мерчанта
 * Номер заказа в платежной системе
 */
$decline = new AcquirerSdk\Decline('merchantLogin', '961e34e7-e897-7d22-8b62-19650008f9da');

// или

/*
 * Имя мерчанта
 * Номер заказа в платежной системе
 */
$decline = AcquirerSdk\Decline::byId('merchantLogin', '961e34e7-e897-7d22-8b62-19650008f9da');

// или

/*
 * Имя мерчанта
 * Номер заказа в системе магазина
 */
$decline = AcquirerSdk\Decline::byNumber('merchantLogin', '20016551');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$decline->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU)

    // Номер заказа в платежной системе
    ->setOrderId('961e34e7-e897-7d22-8b62-19650008f9da')

    // Номер заказа в системе магазина
    ->setOrderNumber('20016551');
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($decline));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    /*
     * Имя мерчанта
     * Номер заказа в платежной системе
     */
    print_r($acquirer->declineById('merchantLogin', '961e34e7-e897-7d22-8b62-19650008f9da'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

// или

try {
    /*
     * Имя мерчанта
     * Номер заказа в системе магазина
     */
    print_r($acquirer->declineByNumber('merchantLogin', '20016551'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求获取收据信息

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

// Идентификатор чека в фискализаторе
$receiptStatus = new AcquirerSdk\ReceiptStatus('uuid');

// или

// Идентификатор чека в фискализаторе
$receiptStatus = AcquirerSdk\ReceiptStatus::byUuid('uuid');

// или

// Номер заказа в платежной системе
$receiptStatus = AcquirerSdk\ReceiptStatus::byId('961e34e7-e897-7d22-8b62-19650008f9da');

// или

// Номер заказа в системе магазина
$receiptStatus = AcquirerSdk\ReceiptStatus::byNumber('20016551');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$receiptStatus->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU)

    // Идентификатор чека в фискализаторе
    ->setUuid('uuid')

    // Номер заказа в платежной системе
    ->setOrderId('961e34e7-e897-7d22-8b62-19650008f9da')

    // Номер заказа в системе магазина
    ->setOrderNumber('20016551');
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($receiptStatus));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    // Идентификатор чека в фискализаторе
    print_r($acquirer->getReceiptStatusByUuid('uuid'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

// или

try {
    // Номер заказа в платежной системе
    print_r($acquirer->getReceiptStatusById('961e34e7-e897-7d22-8b62-19650008f9da'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

// или

try {
    // Номер заказа в системе магазина
    print_r($acquirer->getReceiptStatusByNumber('20016551'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求解除绑定

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

// Идентификатор связки
$unbind = new AcquirerSdk\Binding\Unbind('bindingId');

// или

// Идентификатор связки
$unbind = AcquirerSdk\Binding\Card::unbind('bindingId');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$unbind->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU);
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($unbind));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    // Идентификатор связки
    print_r($acquirer->unbind('bindingId'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求激活绑定

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

// Идентификатор связки
$bind = new AcquirerSdk\Binding\Bind('bindingId');

// или

// Идентификатор связки
$bind = AcquirerSdk\Binding\Card::bind('bindingId');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$bind->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU);
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($bind));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    // Идентификатор связки
    print_r($acquirer->bind('bindingId'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求获取所有客户绑定列表

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

// Идентификатор клиента
$bindings = new AcquirerSdk\Binding\Bindings('clientId');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$bindings->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU);
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($bindings));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    // Идентификатор клиента
    print_r($acquirer->getBindingsByClient('clientId'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求获取特定银行卡绑定列表

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

/*
 * Маскированный номер карты
 * Отображение связок с истёкшим сроком действия карты
 */
$bindingsCard = new AcquirerSdk\Binding\BindingsCard('411111**1111',
    AcquirerSdk\Binding\Expired::SHOW);

// или

/*
 * Маскированный номер карты
 * Отображение связок с истёкшим сроком действия карты
 */
$bindingsCard = AcquirerSdk\Binding\BindingsCard::byCard('411111**1111',
    AcquirerSdk\Binding\Expired::SHOW);

// или

/*
 * Идентификатор связки
 * Отображение связок с истёкшим сроком действия карты
 */
$bindingsCard = AcquirerSdk\Binding\BindingsCard::byId('bindingId',
    AcquirerSdk\Binding\Expired::SHOW);
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$bindingsCard->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU)

    // Маскированный номер карты
    ->setPan('411111**1111')

    // Идентификатор связки
    ->setBindingId('bindingId')

    // Отображение связок с истёкшим сроком действия карты
    ->setShowExpired(AcquirerSdk\Binding\Expired::SHOW);
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($bindingsCard));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    /*
     * Маскированный номер карты
     * Отображение связок с истёкшим сроком действия карты
     */
    print_r($acquirer->getBindingsByCard('411111**1111', AcquirerSdk\Binding\Expired::SHOW));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

// или

try {
    /*
     * Идентификатор связки
     * Отображение связок с истёкшим сроком действия карты
     */
    print_r($acquirer->getBindingsById('bindingId', AcquirerSdk\Binding\Expired::SHOW));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

请求更改绑定有效期

方法 #1

  • 创建请求
use Panda\Sberbank\AcquirerSdk;

/*
 * Идентификатор связки
 * Новая дата окончания срока действия
 */
$extend = new AcquirerSdk\Binding\Extend('bindingId', 'ГГГГММ');
  • 设置参数
use Panda\Sberbank\AcquirerSdk;

// Использовать тестовое окружение
$extend->asTest()

    // Язык
    ->setLanguage(AcquirerSdk\Language::RU);
  • 执行请求
use Panda\Sberbank\AcquirerSdk;

try {
    print_r($acquirer->request($extend));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}

方法 #2

use Panda\Sberbank\AcquirerSdk;

try {
    /*
     * Идентификатор связки
     * Новая дата окончания срока действия
     */
    print_r($acquirer->extendBinding('bindingId', 'ГГГГММ'));
} catch (AcquirerSdk\Exception\ClientException $e) {
    echo $e->getMessage();
}