itpanda-llc / sberbank-acquirer-sdk
与 PJSC Sberbank 处理中心集成的库
dev-main
2021-05-16 05:48 UTC
Requires
- php: >=7.2
- ext-curl: *
This package is auto-updated.
Last update: 2024-09-16 12:57:32 UTC
README
用于与ПАО "Сбербанк"处理中心集成的库
链接
功能
- 订单注册
- 预授权订单注册
- 请求完成订单支付
- 请求取消订单支付
- 请求退款
- 获取订单状态
- 请求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(); }