idynsys/billing-sdk

SDK 用于与 B2B backoffice.Billing 集成。

4.3.1 2024-09-26 08:49 UTC

This package is auto-updated.

Last update: 2024-09-26 09:08:43 UTC


README

总体描述

该软件包用于将外部系统集成到 PHP 7.4+ 和 B2B backoffice 服务 Billing,以在 B2B backoffice.Billing 注册的支付系统中创建交易。

该软件包允许执行以下操作

  • 获取可用的支付方法列表
  • 创建为账户充值资金的交易。
  • 创建从账户中提取资金的交易。
  • 获取交易信息。

充值和提取操作的步骤仅初始化与账户的交互,但并不完整执行从开始到结束的操作,即创建操作数据后,需要执行 B2B Backoffice 系统Billing操作文档中描述的额外步骤。

要求

安装该软件包的应用程序应具有

  • PHP 7.4 或更高版本
  • ext-openssl - 安装的 php 扩展
  • ext-json - 安装的 php 扩展

安装

  1. 在您的项目目录中,其中包含 composer.json 文件,执行以下命令
composer require idynsys/billing-sdk
  1. 配置您的应用程序以执行对 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 支付方法创建存款交易

  1. 通过 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 的两种可能的响应

  1. 执行操作无错误
  1. 收到错误

创建从账户提现的交易

I. 允许创建从账户提现交易的方法

某些提现交易具有 BankName 参数。该参数的值可以在 Idynsys\BillingSdk\Enums\BankName 枚举类中找到。以下是银行接收方名称的可能值列表

  1. 通过 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);

6. 通过HayHay Host2Host方法创建提款交易

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

7. 通过eManat Host2Host方法创建提款交易

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

9. 通过M10 Host2Host方法创建提款交易

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

11. 通过PayCo Host2Host方法创建提款交易

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

13. 通过Pep Host2Host方法创建提款交易

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

16. 通过SBP Host2Host方法创建提款交易

<?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) {
    // обработать ошибку
}