Skip to content

Commit f6e8a15

Browse files
author
Ruslan Plotnikov
committed
Add get balance request
1 parent e51b708 commit f6e8a15

File tree

5 files changed

+70
-0
lines changed

5 files changed

+70
-0
lines changed

example.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
case 'paymentCapture':
2727
case 'paymentGetStatus':
2828
case 'payoutCreate':
29+
case 'payoutGetBalance':
2930
case 'paymentWebhook':
3031
case 'paymentRefund':
3132
case 'paymentRefundMarketplace':

example_list.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@
118118
'docLink' => 'https://ypmn.ru/ru/documentation/#tag/payouts-api',
119119
'link' => '',
120120
],
121+
'payoutGetBalance' => [
122+
'name' => 'Получение баланса для выплаты',
123+
'about' => 'Запрос к YPMN для проверки баланса на вылпату',
124+
'docLink' => 'https://ypmn.ru/ru/documentation/#tag/payouts-api/paths/~1v4~1payout~1balance/get',
125+
'link' => '',
126+
],
121127
'getSession' => [
122128
'name' => 'Создание сессии',
123129
'about' => 'Создание уникальной сессии YPMN',

src/ApiRequest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class ApiRequest implements ApiRequestInterface
1919
public const REFUND_API = '/api/v4/payments/refund';
2020
public const STATUS_API = '/api/v4/payments/status';
2121
public const PAYOUT_CREATE_API = '/api/v4/payout';
22+
public const PAYOUT_GET_BALANCE_API = '/api/v4/payout/balance';
2223
public const REPORTS_ORDERS_API = '/reports/orders';
2324
public const SESSION_API = '/api/v4/payments/sessions';
2425
public const REPORT_CHART_API = '/api/v4/reports/chart';
@@ -542,6 +543,31 @@ public function sendPayoutCreateRequest(PayoutInterface $payout): array
542543
return $this->sendPostRequest($payout, self::PAYOUT_CREATE_API);
543544
}
544545

546+
/**
547+
* @inheritdoc
548+
* @throws PaymentException
549+
*/
550+
public function sendPayoutGetBalanceRequest(array $params = []): array
551+
{
552+
$url = self::PAYOUT_GET_BALANCE_API;
553+
554+
if (!empty($params)) {
555+
$url .= '?' . http_build_query($params);
556+
}
557+
558+
$responseData = $this->sendGetRequest($url);
559+
560+
if (mb_strlen($responseData['error']) > 0) {
561+
throw new PaymentException($responseData['error']);
562+
}
563+
564+
if ($responseData['response'] == null || strlen($responseData['response']) === 0) {
565+
throw new PaymentException('Непредвиденная ошибка!.');
566+
}
567+
568+
return $responseData;
569+
}
570+
545571
/** @inheritdoc
546572
* @throws PaymentException
547573
*/

src/ApiRequestInterface.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,13 @@ public function sendTokenCreationRequest(PaymentReference $payuPaymentReference)
104104
*/
105105
public function sendTokenPaymentRequest(MerchantToken $tokenHash): array;
106106

107+
/**
108+
* Отправить запрос на получение баланса
109+
* @param array $params
110+
* @return array
111+
*/
112+
public function sendPayoutGetBalanceRequest(array $params = []): array;
113+
107114
/**
108115
* Отправить запрос для получения графика
109116
* @param array $params

src/Examples/payoutGetBalance.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
use Ypmn\ApiRequest;
6+
7+
// Подключим файл, в котором заданы параметры мерчанта
8+
include_once 'start.php';
9+
10+
/** @var \Ypmn\Merchant $merchant */
11+
12+
/*
13+
* Запрос баланса для выплаты
14+
*/
15+
16+
/* Создадим HTTP-запрос к API */
17+
$apiRequest = new ApiRequest($merchant);
18+
19+
// Включить режим отладки (закомментируйте или удалите в рабочей программе!) //
20+
$apiRequest->setDebugMode();
21+
// Переключиться на тестовый сервер (закомментируйте или удалите в рабочей программе!) //
22+
$apiRequest->setSandboxMode();
23+
24+
// Отправим запрос
25+
$responseData = $apiRequest->sendPayoutGetBalanceRequest([
26+
'merchantCodes' => 'test1,test2', // Массив кодов отправителя (если у Вас их несколько и необходимо получить отчет только по некоторым из них)
27+
'minValue' => 0, // Минимальная сумма баланса.
28+
'maxValue' => 100, // Максимальная сумма баланса.
29+
'currency' => 'RUB', // Код валюты, в которой выражены цены. Согласно ISO 4217
30+
]);

0 commit comments

Comments
 (0)