idynsys / billing-sdk
SDK 用于与 B2B backoffice.Billing 集成。
Requires
- php: ^7.4|^8.0
- ext-json: *
- ext-openssl: *
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- fakerphp/faker: 2.0.x-dev
- phpstan/phpstan: 2.0.x-dev
- phpunit/phpunit: 9.6.x-dev
- squizlabs/php_codesniffer: 4.0.x-dev
README
总体描述
该软件包用于将外部系统集成到 PHP 7.4+ 和 B2B backoffice 服务 Billing,以在 B2B backoffice.Billing 注册的支付系统中创建交易。
该软件包允许执行以下操作
- 获取可用的支付方法列表
- 创建为账户充值资金的交易。
- 创建从账户中提取资金的交易。
- 获取交易信息。
充值和提取操作的步骤仅初始化与账户的交互,但并不完整执行从开始到结束的操作,即创建操作数据后,需要执行 B2B Backoffice 系统Billing操作文档中描述的额外步骤。
要求
安装该软件包的应用程序应具有
- PHP 7.4 或更高版本
- ext-openssl - 安装的 php 扩展
- ext-json - 安装的 php 扩展
安装
- 在您的项目目录中,其中包含 composer.json 文件,执行以下命令
composer require idynsys/billing-sdk
-
配置您的应用程序以执行对 B2B Backoffice 的请求。
执行请求时,需要在请求中传递有关应用程序标识符的信息,并使用密钥对参数进行签名。这可以通过两种方式实现。
2.1. 通过环境变量
在安装此软件包的应用程序的环境中,需要创建以下环境变量BILLING_SDK_CLIENT_ID=<clientId> BILLING_SDK_APPLICATION_SECRET_KEY=<secret>
2.2. 通过创建 Billing 类的对象
$billing = new \Idynsys\BillingSdk\Billing('<clientId>', '<secret>');
其中 "clientId" 和 "secret" 将在您的外部应用程序在 B2B Backoffice 中注册后由您的公司提供,以便通过 B2B 执行请求。
3. !!! 对于生产版本,需要设置环境变量
BILLING_SDK_MODE=PRODUCTION
如果该变量未设置或具有其他值,则所有请求都将重定向到测试服务器 B2B Backoffice。
使用
创建 Billing 类的实例
<?php use Idynsys\BillingSdk\Billing; ... // Если "clientId" и "secret" установлены через переменные окружения (см. п.2.1.) $billing = new Billing(); ... // или через прямое указание через параметры (см. п.2.2.) $billing = new Billing('clientId', 'secret'); ...
Billing 类方法的描述
获取可用的支付方法列表
在 DTO 类中有一个 "trafficType" 参数。此参数是可选的,可以接受以下值
- ftd - 初次流量(对于第一次支付的用户)
- trusted - 信任流量(对于受信任的用户)
<?php use Idynsys\BillingSdk\Collections\PaymentMethodsCollection; use Idynsys\BillingSdk\Data\Requests\PaymentMethods\v2\PaymentMethodListRequestData; $requestParameters = new PaymentMethodListRequestData( $amount, // сумма, по которой вбираются доступные платежные методы $currency, // валюта, по которой выбираются доступные платежные методы $paymentType, // тип платежа, доступные значения - deposit, withdrawal $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); /** @var PaymentMethodsCollection $result */ $result = $billing->getPaymentMethods($requestParameters);
对于此请求的响应将是 \Idynsys\BillingSdk\Collections\PaymentMethodsCollection 类的实例。该类实现了 Iterator 接口。此集合的元素将是 \Idynsys\BillingSdk\Data\Entities\PaymentMethodData 类的实例。
// получить список объектов коллекции $result->all();
获取支付方法的货币列表
在 DTO 类中有一个 "trafficType" 参数。此参数是可选的,可以接受以下值
- ftd - 初次流量(对于第一次支付的用户)
- trusted - 信任流量(对于受信任的用户)
<?php use Idynsys\BillingSdk\Data\Requests\Currencies\PaymentMethodCurrenciesRequestData; use Idynsys\BillingSdk\Collections\PaymentMethodCurrenciesCollection; /* Значение метода - одна из 3х констант: Idynsys\BillingSdk\Enums\PaymentMethod::P2P_NAME Idynsys\BillingSdk\Enums\PaymentMethod::BANKCARD_NAME Idynsys\BillingSdk\Enums\PaymentMethod::M_COMMERCE_NAME */ $paymentMethodName = \Idynsys\BillingSdk\Enums\PaymentMethod::P2P_NAME; $requestParams = new PaymentMethodCurrenciesRequestData( $paymentMethodName, // наименование платежного метода $amount, // сумма, для которой ищется платежный метод $paymentType, // тип платежа, доступные значения - deposit, withdrawal $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); /** @var PaymentMethodCurrenciesCollection $result */ $result = $billing->getPaymentMethodCurrencies($requestParams);
对于此请求的响应将是 \Idynsys\BillingSdk\Collections\PaymentMethodCurrenciesCollection 类的实例。该类实现了 Iterator 接口。此集合的元素将是 \Idynsys\BillingSdk\Data\Entities\CurrencyData 类的实例。
// получить список объектов коллекции $result->all();
创建用于账户充值的交易
每个 DTO 类都有一个 "trafficType" 参数。此参数是可选的,可以接受以下值
- ftd - 初次流量(对于第一次支付的用户),默认值
- trusted - 信任流量(对于受信任的用户)
I. 实现的账户充值方法
1. 通过 P2P Host2Host 支付方法创建存款交易
- 通过 P2P Host2Host 支付方法创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\v2\DepositP2PRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositP2PRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $customerEmail, // email пользователя, совершающего операцию $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
2. 通过 P2P Host2Client 支付方法创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositP2PHost2ClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositP2PHost2ClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $customerId, // ID пользователя, совершающего операцию $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
3. 通过 Bankcard Host2Host 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\v2\DepositBankcardRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositBankcardRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $customerEmail, // email пользователя, совершающего операцию $cardNumber, // номер банковской карты $expiration, // дата окончания срока действия карты $cardHolder, // Имя и Фамилия держателя карты (как написано на карте) $cvv, // CVV код карты $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
4. 通过 Mobile Commerce Host2Host 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\v2\DepositMCommerceRequestData; use Idynsys\BillingSdk\Data\Responses\DepositResponseData; use Idynsys\BillingSdk\Data\Requests\Deposits\DepositMCommerceConfirmRequestData; use Idynsys\BillingSdk\Data\Responses\DepositMCommerceConfirmedResponseData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositMCommerceRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $phoneNumber, // телефон для получения кода подтверждения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $redirectFailUrl, // URL для перехода после неуспешного выполнения действия $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат /** @var DepositResponseData $createdResult */ $createdResult = $billing->createDeposit($requestParams); ... // Подтверждение транзакции через одноразовый код из смс на мобильный номер $requestParams = new DepositMCommerceConfirmRequestData( $createdResult->transactionId, 'confirmationCodeFromSmsOrEmail' ); // Отправить запрос на подтверждение транзакции /** @var DepositMCommerceConfirmedResponseData $confirmedResult */ $confirmedResult = $billing->confirmMCommerceDeposit($requestParams);
5. 通过 SberPay Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositSberPayHost2ClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositSberPayHost2ClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $customerId, // ID пользователя, совершающего операцию $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
6. 通过 SBP Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositSbpHost2ClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositSbpHost2ClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $customerId, // ID пользователя, совершающего операцию $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
7. 通过 Havale Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositHavaleHostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositHavaleHostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $walletUserId, // ID пользователя кошелька $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
8. 通过 HayHay Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositHayHayHostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositHayHayHostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
9. 通过 eManat Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositHostEManat2ClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositHostEManat2ClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
10. 通过 InCardP2P Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositInCardP2PHostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositInCardP2PHostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletUserId, // ID пользователя кошелька $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
11. 通过 M10 Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositM10HostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositM10HostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletUserId, // ID пользователя кошелька $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
12. 通过 Papara Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositPaparaHostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositPaparaHostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletUserId, // ID пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
13. 通过 PayCo Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositPayCoHostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositPayCoHostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletUserId, // ID пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
14. 通过 Payfix Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositPayfixHostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositPayfixHostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletUserId, // ID пользователя кошелька $walletLogin, // Логин пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
15. 通过 Pep Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositPepHostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositPepHostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletUserId, // ID пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
16. 通过 SmartCard Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositSmartCardHostToClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositSmartCardHostToClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $redirectSuccessUrl, // URL для перехода после успешного выполнения действия $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
17. 通过 SBP-QR Host2Client 支付方式创建存款交易
<?php use Idynsys\BillingSdk\Data\Requests\Deposits\Host2Client\DepositSbpQRHost2ClientRequestData; // Создать DTO для запроса на создание транзакции для пополнения счета $requestParams = new DepositSbpQRHost2ClientRequestData( $amount, // сумма пополнения $currencyCode, // валюта суммы пополнения $customerId, // ID пользователя, совершающего операцию $userIpAddress // IP адрес пользователя $userAgent // информацию о браузере, операционной системе и устройстве пользователя $acceptLanguage // HTTP-заголовок, используемый для указания предпочтений клиента по языкам $fingerprint // Подпись данных пользователя в запросе. см. https://github.com/fingerprintjs/fingerprintjs $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция $trafficType // Тип трафика для выполнения транзакции в платёжной системе ); // Создать транзакцию и получить результат $result = $billing->createDeposit($requestParams);
II. 响应
如果存款交易创建成功,则响应将为 \Idynsys\BillingSdk\Data\Responses\DepositResponseData 类的对象
Idynsys\BillingSdk\Data\Responses\DepositResponseData {
+paymentStatus: "SUCCESS"
+transactionId: "a45da91c-536d-4019-8c6c-1e822f417507"
+amount: 4325.0
+currency: "KZT"
+redirectUrl: null
+confirmationType: null
+card: Idynsys\BillingSdk\Data\Responses\BankCardData
+cardNumber: "6666 6666 6666 6666 66"
+bankName: "Kaspi"
+lifetimeInMinutes: 8
}
+destinationCard: null,
+error: null
}
confirmationType 和 redirectUrl 的值是可选的,confirmationType 只能是 null、"" 或 "3DS_PAYMENT_PAGE"。如果需要确认,redirectUrl 将包含链接;否则,将返回成功状态,而不在 confirmationType 和 redirectUrl 中包含任何值。如果支付系统立即传递,可以在存款 H2H 响应中获取 3ds 确认链接,或者在查询交易状态时获取。
- 在存款 H2H 响应中,如果支付系统立即传递,
- 或者当请求交易状态时。
可能发送到请求的 callbackUrl 的两种可能的响应
- 执行操作无错误
- 收到错误
创建从账户提现的交易
I. 允许创建从账户提现交易的方法
某些提现交易具有 BankName 参数。该参数的值可以在 Idynsys\BillingSdk\Enums\BankName 枚举类中找到。以下是银行接收方名称的可能值列表
- 通过 p2p Host2Host 方法创建从账户提现的交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutP2PRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств со счета $requestParams = new PayoutP2PRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $cardNumber, // Номер банковской карты, на которую выводятся деньги $cardExpiration, // Месяц и год окончания действия карты (как написано на карте) $cardRecipientInfo, // Данные владельца карты (Имя Фамилия, как написано на карте) $userId, // ID пользователя $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayout($requestParams);
2. 通过 p2p Host2Client 方法创建从账户提现的交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\Host2Client\PayoutP2PHost2ClientRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств со счета $requestParams = new PayoutP2PHost2ClientRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $recipientAccount, // Счет получателя $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Client($requestParams);
3. 通过 Bankcard Host2Host 方法创建从账户提现的交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutBankcardRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств со счета $requestParams = new PayoutBankcardRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $cardNumber, // Номер банковской карты, на которую выводятся деньги $cardExpiration, // Месяц и год окончания действия карты (как написано на карте) $cardRecipientInfo, // Данные владельца карты (Имя Фамилия, как написано на карте) $bankName, // Наименование банка-получателя. Доступные значения находятся в списке выше в этом разделе $userId, // ID пользователя $callbackUrl // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayout($requestParams);
4. 通过 SberPay Host2Client 方法创建从账户提现的交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\Host2Client\PayoutSberPayHost2ClientRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств со счета $requestParams = new PayoutSberPayHost2ClientRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $recipientPhoneNumber, // Номер телефона получателя $callbackUrl, // URL для передачи результата создания транзакции в B2B backoffice $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Client($requestParams);
5. 通过 Havale Host2Host 方法创建从账户提现的交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutHavaleHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutHavaleHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $walletUserId, // ID пользователя кошелька $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $BankIbanNo, // IBAN банка $cardNumber, // Номер карты $cardExpiration, // Дата окончания действия карты $cardId, // ID карты $bankId // ID банка $userBirthday, // День рождения пользователя $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutHayHayHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutHayHayHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $bankId, // ID банка $cardId, // ID карты $walletAccountNumber, // Номер счета кошелька $walletUserId, // ID пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutEManatHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutEManatHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $phoneNumber, // Телефонный номер пользователя $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
8. 通过InCardP2P Host2Host方法创建提款交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutInCardP2PHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutInCardP2PHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $bankId, // ID банка $cardNumber, // Номер банковской карты, на которую выводятся деньги $cardExpiration, // Месяц и год окончания действия карты (как написано на карте) $walletUserId, // ID пользователя кошелька $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutM10Host2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutM10Host2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $walletUserId, // ID пользователя кошелька $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $walletAccountNumber // Номер счета кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
10. 通过Papara Host2Host方法创建提款交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutPaparaHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutPaparaHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $walletUserId, // ID пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $walletAccountNumber // Номер счета кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutPayCoHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutPayCoHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $walletUserId, // ID пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $walletAccountNumber // Номер счета кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
12. 通过Payfix Host2Host方法创建提款交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutPayfixHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutPayfixHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $walletUserId, // ID пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $walletAccountNumber // Номер счета кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutPepHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutPepHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $bankId, // ID банка $cardId, // ID карты $walletAccountNumber // Номер счета кошелька $walletUserId, // ID пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
14. 通过SmartCard Host2Host方法创建提款交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutSmartCardHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutSmartCardHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $cardNumber, // Номер банковской карты, на которую выводятся деньги $cardExpiration, // Месяц и год окончания действия карты (как написано на карте) $walletLogin, // Логин пользователя кошелька $walletUserFullName, // ФИО пользователя кошелька $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
15. 通过SberPay Host2Host方法创建提款交易
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutSberPayHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutSberPayHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $cardNumber, // Номер банковской карты, на которую выводятся деньги $cardRecipientInfo, // Данные владельца карты (Имя Фамилия, как написано на карте) $userId, // ID пользователя $ipAddress, // IP адрес пользователя $userAgent, // сведения об устройстве, операционной системе, типе браузера и его версии и т.д. $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
<?php use Idynsys\BillingSdk\Data\Requests\Payouts\PayoutSbpHost2HostRequestData; use Idynsys\BillingSdk\Data\Responses\PayoutResponseData; // Создать DTO для запроса на создание транзакции для вывода средств $requestParams = new PayoutSbpHost2HostRequestData( $amount, // сумма вывода $currencyCode, // валюта суммы вывода $bankName, // Наименование банка-получателя. Доступные значения находятся в списке выше в этом разделе $phoneNumber, // телефон для получения кода подтверждения $userId, // ID пользователя $callbackUrl, // URL для передачи результата создания транзакции $merchantOrderId, // идентификатор внутреннего документа, на основе которого создается транзакция $merchantOrderDescription, // описание документа, на основе которого создается транзакция ); // Создать транзакцию и получить результат /** @var PayoutResponseData $result */ $result = $billing->createPayoutHost2Host($requestParams);
II. 响应
如果操作成功执行,则响应将以PayoutResponseData类对象的形式返回
Idynsys\BillingSdk\Data\Responses\PayoutResponseData {
+status: "SUCCESS"
+transactionId: "338263f6-e1af-4a25-aa38-ac0ea724be02"
+error: null
}
获取交易数据
对于任何创建的交易,可以通过以下操作检查其状态、类型、货币和金额
<?php use Idynsys\BillingSdk\Data\Requests\Transactions\TransactionRequestData; use Idynsys\BillingSdk\Data\Responses\TransactionData; // Создать DTO для запроса данных транзакции $requestParams = new TransactionRequestData('50943073-3426-4e00-b147-1d21852c0e22'); // Выполнить запрос для получения данных транзакции /** @var TransactionData $result */ $result = $billing->getTransactionData($requestParams);
成功请求的结果将如下所示
Idynsys\BillingSdk\Data\Responses\TransactionData {#360
+id: "35"
+externalId: "156b7acd-a3e4-4732-9b7f-8b3bb9514f76"
+paymentMethod: ""
+paymentSystem: ""
+transactionType: "deposit"
+requestedAmount: 2000.0
+requestedCurrency: "RUB"
+amount: 0.0
+currency: "RUB"
+status: "IN_PROGRESS"
+merchantOrderId: "124-431"
+confirmationType: null
+redirectUrl: null
}
confirmationType 和 redirectUrl 的值是可选的,confirmationType 只能是 null、"" 或 "3DS_PAYMENT_PAGE"。如果需要确认,redirectUrl 将包含链接;否则,将返回成功状态,而不在 confirmationType 和 redirectUrl 中包含任何值。如果支付系统立即传递,可以在存款 H2H 响应中获取 3ds 确认链接,或者在查询交易状态时获取。
- 在存款 H2H 响应中,如果支付系统立即传递,
- 或者当请求交易状态时。
异常情况处理
在向系统请求时可能会出现与数据错误或不执行操作相关的错误。所有错误都通过\Idynsys\BillingSdk\Exceptions\ExceptionHandler对象返回。可以按以下方式处理错误
<?php use Idynsys\BillingSdk\Exceptions\BilllingSdkException; use Throwable; try { // Выполнить запрос из описанных в п. 2. } catch (BilllingSdkException $exception) { // обработать ошибку } catch (Throwable $exception) { // обработать ошибку }