mirror of
https://git.yoomoney.ru/scm/sdk/yookassa-sdk-php.git
synced 2026-10-03 14:16:45 +00:00
Добавлена поддержка платежных табличек pos_links. Добавлены loan_declined, loan_declined_by_payer, loan_application_expired в причинах отмены платежа
Добавлено поле `metadata` в сохраненных методах оплаты Увеличено максимальное значение числа цифр параметра `oktmo` в данных платежных поручений `PaymentOrder`
This commit is contained in:
+254
-6
@@ -97,6 +97,15 @@ use YooKassa\Request\Payouts\PayoutsRequestInterface;
|
||||
use YooKassa\Request\Payouts\PayoutsRequestSerializer;
|
||||
use YooKassa\Request\Payouts\PayoutsResponse;
|
||||
use YooKassa\Request\Payouts\SbpBanksResponse;
|
||||
use YooKassa\Model\PosLink\PosLinkInfo;
|
||||
use YooKassa\Request\PosLink\CreatePosLinkRequest;
|
||||
use YooKassa\Request\PosLink\CreatePosLinkRequestInterface;
|
||||
use YooKassa\Request\PosLink\CreatePosLinkRequestSerializer;
|
||||
use YooKassa\Request\PosLink\CreatePosLinkResponse;
|
||||
use YooKassa\Request\PosLink\PosLinkResponse;
|
||||
use YooKassa\Request\PosLink\RecipientPosLinkRequest;
|
||||
use YooKassa\Request\PosLink\RecipientPosLinkRequestInterface;
|
||||
use YooKassa\Request\PosLink\RecipientPosLinkRequestSerializer;
|
||||
use YooKassa\Request\PersonalData\PersonalDataResponse;
|
||||
use YooKassa\Request\PersonalData\PersonalDataType\AbstractPersonalDataRequest;
|
||||
use YooKassa\Request\PersonalData\PersonalDataType\RecipientPersonalDataRequestFactory;
|
||||
@@ -135,7 +144,7 @@ class Client extends BaseClient
|
||||
/**
|
||||
* Текущая версия библиотеки.
|
||||
*/
|
||||
public const SDK_VERSION = '3.14.0';
|
||||
public const SDK_VERSION = '3.15.0';
|
||||
|
||||
/**
|
||||
* Получить список платежей магазина.
|
||||
@@ -516,7 +525,7 @@ class Client extends BaseClient
|
||||
* Запрос позволяет получить информацию о текущем состоянии возврата по его уникальному идентификатору.
|
||||
* В ответ на запрос придет объект возврата {@link RefundResponse} в актуальном статусе.
|
||||
*
|
||||
* @example 01-client.php 183 7 Получить информацию о возврате
|
||||
* @example 01-client.php 193 7 Получить информацию о возврате
|
||||
*
|
||||
* @param string $refundId Идентификатор возврата
|
||||
*
|
||||
@@ -607,6 +616,8 @@ class Client extends BaseClient
|
||||
* Запрос позволяет отписаться от уведомлений о событии для переданного OAuth-токена.
|
||||
* Чтобы удалить webhook, вам нужно передать в запросе его идентификатор.
|
||||
*
|
||||
* @example 01-client.php 202 36 Удаление Webhook
|
||||
*
|
||||
* @param string $webhookId Идентификатор Webhook
|
||||
* @param null|string $idempotenceKey [Ключ идемпотентности](https://yookassa.ru/developers/using-api/basics?lang=php#idempotence)
|
||||
*
|
||||
@@ -620,8 +631,6 @@ class Client extends BaseClient
|
||||
* @throws UnauthorizedException Неверное имя пользователя или пароль или невалидный OAuth-токен при аутентификации
|
||||
* @throws ExtensionNotFoundException Требуемое PHP расширение не установлено
|
||||
* @throws Exception
|
||||
*@example 01-client.php 202 36 Удаление Webhook
|
||||
*
|
||||
*/
|
||||
public function removeWebhook(string $webhookId, ?string $idempotenceKey = null): ?Webhook
|
||||
{
|
||||
@@ -686,7 +695,7 @@ class Client extends BaseClient
|
||||
* Если результатов больше, чем задано в `limit`, список будет выводиться фрагментами.
|
||||
* В этом случае в ответе на запрос вернется фрагмент списка и параметр `next_cursor` с указателем на следующий фрагмент.
|
||||
*
|
||||
* @example 01-client.php 240 24 Получить список чеков магазина с фильтрацией
|
||||
* @example 01-client.php 266 22 Получить список чеков магазина с фильтрацией
|
||||
*
|
||||
* @param null|array|ReceiptsRequestInterface $filter Параметры фильтрации
|
||||
*
|
||||
@@ -782,7 +791,7 @@ class Client extends BaseClient
|
||||
* Запрос позволяет получить информацию о текущем состоянии чека по его уникальному идентификатору.
|
||||
* Выдает объект чека {@link ReceiptResponseInterface} в актуальном статусе.
|
||||
*
|
||||
* @example 01-client.php 173 7 Получить информацию о чеке
|
||||
* @example 01-client.php 183 7 Получить информацию о чеке
|
||||
*
|
||||
* @param string $receiptId Идентификатор чека
|
||||
*
|
||||
@@ -973,6 +982,245 @@ class Client extends BaseClient
|
||||
return $dealsResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создание кассовой ссылки.
|
||||
*
|
||||
* Запрос позволяет создать кассовую ссылку для проведения платежа в офлайне.
|
||||
*
|
||||
* @param array|CreatePosLinkRequestInterface $posLinkData Данные для создания кассовой ссылки
|
||||
* @param null|string $idempotenceKey [Ключ идемпотентности](https://yookassa.ru/developers/using-api/basics?lang=php#idempotence)
|
||||
*
|
||||
* @return null|PosLinkInfo Объект ответа от API
|
||||
*
|
||||
* @throws ApiException Неожиданный код ошибки
|
||||
* @throws BadApiRequestException Неправильный запрос. Чаще всего этот статус выдается из-за нарушения правил взаимодействия с API
|
||||
* @throws ForbiddenException Секретный ключ или OAuth-токен верный, но не хватает прав для совершения операции
|
||||
* @throws InternalServerError Технические неполадки на стороне ЮKassa. Результат обработки запроса неизвестен. Повторите запрос позднее с тем же ключом идемпотентности
|
||||
* @throws NotFoundException Ресурс не найден
|
||||
* @throws ResponseProcessingException Запрос был принят на обработку, но она не завершена
|
||||
* @throws TooManyRequestsException Превышен лимит запросов в единицу времени. Попробуйте снизить интенсивность запросов
|
||||
* @throws UnauthorizedException Неверное имя пользователя или пароль или невалидный OAuth-токен при аутентификации
|
||||
* @throws ExtensionNotFoundException Требуемое PHP расширение не установлено
|
||||
*@example 01-client.php 644 18 Запрос на создание кассовой ссылки
|
||||
*
|
||||
*/
|
||||
public function createPosLink(CreatePosLinkRequestInterface|array $posLinkData, ?string $idempotenceKey = null): ?PosLinkInfo
|
||||
{
|
||||
$path = self::POS_LINKS_PATH;
|
||||
|
||||
$headers = [self::IDEMPOTENCE_KEY_HEADER => $idempotenceKey ?: UUID::v4()];
|
||||
$request = is_array($posLinkData) ? CreatePosLinkRequest::builder()->build($posLinkData) : $posLinkData;
|
||||
|
||||
$serializer = new CreatePosLinkRequestSerializer();
|
||||
$serializedData = $serializer->serialize($request);
|
||||
$httpBody = $this->encodeData($serializedData);
|
||||
|
||||
$response = $this->execute($path, HttpVerb::POST, [], $httpBody, $headers);
|
||||
|
||||
$posLinkResponse = null;
|
||||
if (200 === $response->getCode()) {
|
||||
$resultArray = $this->decodeData($response);
|
||||
$posLinkResponse = new CreatePosLinkResponse($resultArray);
|
||||
} else {
|
||||
$this->handleError($response);
|
||||
}
|
||||
|
||||
return $posLinkResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получить информацию о кассовой ссылке.
|
||||
*
|
||||
* Запрос позволяет получить информацию о кассовой ссылке по её уникальному идентификатору.
|
||||
*
|
||||
* @example 01-client.php 664 7 Получить информацию о кассовой ссылке
|
||||
*
|
||||
* @param string $posLinkId Идентификатор кассовой ссылки
|
||||
*
|
||||
* @return null|PosLinkInfo Объект ответа от API
|
||||
*
|
||||
* @throws ApiException Неожиданный код ошибки
|
||||
* @throws BadApiRequestException Неправильный запрос. Чаще всего этот статус выдается из-за нарушения правил взаимодействия с API
|
||||
* @throws ForbiddenException Секретный ключ или OAuth-токен верный, но не хватает прав для совершения операции
|
||||
* @throws InternalServerError Технические неполадки на стороне ЮKassa. Результат обработки запроса неизвестен. Повторите запрос позднее с тем же ключом идемпотентности
|
||||
* @throws NotFoundException Ресурс не найден
|
||||
* @throws ResponseProcessingException Запрос был принят на обработку, но она не завершена
|
||||
* @throws TooManyRequestsException Превышен лимит запросов в единицу времени. Попробуйте снизить интенсивность запросов
|
||||
* @throws UnauthorizedException Неверное имя пользователя или пароль или невалидный OAuth-токен при аутентификации
|
||||
* @throws ExtensionNotFoundException Требуемое PHP расширение не установлено
|
||||
*/
|
||||
public function getPosLinkInfo(string $posLinkId): ?PosLinkInfo
|
||||
{
|
||||
if (!TypeCast::canCastToString($posLinkId)) {
|
||||
throw new InvalidArgumentException('Invalid posLinkId value: string required');
|
||||
}
|
||||
if (mb_strlen($posLinkId) < 36 || mb_strlen($posLinkId) > 50) {
|
||||
throw new InvalidArgumentException('Invalid posLinkId value');
|
||||
}
|
||||
|
||||
$path = self::POS_LINKS_PATH . '/' . $posLinkId;
|
||||
|
||||
$response = $this->execute($path, HttpVerb::GET, []);
|
||||
|
||||
$result = null;
|
||||
if (200 === $response->getCode()) {
|
||||
$resultArray = $this->decodeData($response);
|
||||
$result = new PosLinkResponse($resultArray);
|
||||
} else {
|
||||
$this->handleError($response);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Активировать кассовую ссылку.
|
||||
*
|
||||
* Запрос позволяет активировать кассовую ссылку, чтобы она стала доступна для приема платежей.
|
||||
*
|
||||
* @example 01-client.php 673 10 Активировать кассовую ссылку
|
||||
*
|
||||
* @param string $posLinkId Идентификатор кассовой ссылки
|
||||
* @param null|string $idempotenceKey [Ключ идемпотентности](https://yookassa.ru/developers/using-api/basics?lang=php#idempotence)
|
||||
*
|
||||
* @return null|PosLinkInfo Объект ответа от API
|
||||
*
|
||||
* @throws ApiException Неожиданный код ошибки
|
||||
* @throws BadApiRequestException Неправильный запрос. Чаще всего этот статус выдается из-за нарушения правил взаимодействия с API
|
||||
* @throws ForbiddenException Секретный ключ или OAuth-токен верный, но не хватает прав для совершения операции
|
||||
* @throws InternalServerError Технические неполадки на стороне ЮKassa. Результат обработки запроса неизвестен. Повторите запрос позднее с тем же ключом идемпотентности
|
||||
* @throws NotFoundException Ресурс не найден
|
||||
* @throws ResponseProcessingException Запрос был принят на обработку, но она не завершена
|
||||
* @throws TooManyRequestsException Превышен лимит запросов в единицу времени. Попробуйте снизить интенсивность запросов
|
||||
* @throws UnauthorizedException Неверное имя пользователя или пароль или невалидный OAuth-токен при аутентификации
|
||||
* @throws ExtensionNotFoundException Требуемое PHP расширение не установлено
|
||||
*/
|
||||
public function activatePosLink(string $posLinkId, ?string $idempotenceKey = null): ?PosLinkInfo
|
||||
{
|
||||
if (!TypeCast::canCastToString($posLinkId)) {
|
||||
throw new InvalidArgumentException('Invalid posLinkId value: string required');
|
||||
}
|
||||
if (mb_strlen($posLinkId) < 36 || mb_strlen($posLinkId) > 50) {
|
||||
throw new InvalidArgumentException('Invalid posLinkId value');
|
||||
}
|
||||
|
||||
$path = self::POS_LINKS_PATH . '/' . $posLinkId . '/activate';
|
||||
$headers = [self::IDEMPOTENCE_KEY_HEADER => $idempotenceKey ?: UUID::v4()];
|
||||
|
||||
$response = $this->execute($path, HttpVerb::POST, [], null, $headers);
|
||||
|
||||
$result = null;
|
||||
if (200 === $response->getCode()) {
|
||||
$resultArray = $this->decodeData($response);
|
||||
$result = new PosLinkResponse($resultArray);
|
||||
} else {
|
||||
$this->handleError($response);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Деактивировать кассовую ссылку.
|
||||
*
|
||||
* Запрос позволяет деактивировать кассовую ссылку, прием платежей по ней будет недоступен.
|
||||
*
|
||||
* @example 01-client.php 685 10 Деактивировать кассовую ссылку
|
||||
*
|
||||
* @param string $posLinkId Идентификатор кассовой ссылки
|
||||
* @param null|string $idempotenceKey [Ключ идемпотентности](https://yookassa.ru/developers/using-api/basics?lang=php#idempotence)
|
||||
*
|
||||
* @return null|PosLinkInfo Объект ответа от API
|
||||
*
|
||||
* @throws ApiException Неожиданный код ошибки
|
||||
* @throws BadApiRequestException Неправильный запрос. Чаще всего этот статус выдается из-за нарушения правил взаимодействия с API
|
||||
* @throws ForbiddenException Секретный ключ или OAuth-токен верный, но не хватает прав для совершения операции
|
||||
* @throws InternalServerError Технические неполадки на стороне ЮKassa. Результат обработки запроса неизвестен. Повторите запрос позднее с тем же ключом идемпотентности
|
||||
* @throws NotFoundException Ресурс не найден
|
||||
* @throws ResponseProcessingException Запрос был принят на обработку, но она не завершена
|
||||
* @throws TooManyRequestsException Превышен лимит запросов в единицу времени. Попробуйте снизить интенсивность запросов
|
||||
* @throws UnauthorizedException Неверное имя пользователя или пароль или невалидный OAuth-токен при аутентификации
|
||||
* @throws ExtensionNotFoundException Требуемое PHP расширение не установлено
|
||||
*/
|
||||
public function deactivatePosLink(string $posLinkId, ?string $idempotenceKey = null): ?PosLinkInfo
|
||||
{
|
||||
if (!TypeCast::canCastToString($posLinkId)) {
|
||||
throw new InvalidArgumentException('Invalid posLinkId value: string required');
|
||||
}
|
||||
if (mb_strlen($posLinkId) < 36 || mb_strlen($posLinkId) > 50) {
|
||||
throw new InvalidArgumentException('Invalid posLinkId value');
|
||||
}
|
||||
|
||||
$path = self::POS_LINKS_PATH . '/' . $posLinkId . '/deactivate';
|
||||
$headers = [self::IDEMPOTENCE_KEY_HEADER => $idempotenceKey ?: UUID::v4()];
|
||||
|
||||
$response = $this->execute($path, HttpVerb::POST, [], null, $headers);
|
||||
|
||||
$result = null;
|
||||
if (200 === $response->getCode()) {
|
||||
$resultArray = $this->decodeData($response);
|
||||
$result = new PosLinkResponse($resultArray);
|
||||
} else {
|
||||
$this->handleError($response);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Изменение торговой точки, привязанной к кассовой ссылке.
|
||||
*
|
||||
* Запрос позволяет привязать к кассовой ссылке другую торговую точку.
|
||||
*
|
||||
* @example 01-client.php 697 12 Привязать торговую точку к кассовой ссылке
|
||||
*
|
||||
* @param string $posLinkId Идентификатор кассовой ссылки
|
||||
* @param array|RecipientPosLinkRequestInterface $recipientData Идентификатор торговой точки, которую вы хотите привязать к кассовой ссылке.
|
||||
* @param null|string $idempotenceKey [Ключ идемпотентности](https://yookassa.ru/developers/using-api/basics?lang=php#idempotence)
|
||||
*
|
||||
* @return null|PosLinkInfo Объект ответа от API
|
||||
*
|
||||
* @throws ApiException Неожиданный код ошибки
|
||||
* @throws BadApiRequestException Неправильный запрос. Чаще всего этот статус выдается из-за нарушения правил взаимодействия с API
|
||||
* @throws ForbiddenException Секретный ключ или OAuth-токен верный, но не хватает прав для совершения операции
|
||||
* @throws InternalServerError Технические неполадки на стороне ЮKassa. Результат обработки запроса неизвестен. Повторите запрос позднее с тем же ключом идемпотентности
|
||||
* @throws NotFoundException Ресурс не найден
|
||||
* @throws ResponseProcessingException Запрос был принят на обработку, но она не завершена
|
||||
* @throws TooManyRequestsException Превышен лимит запросов в единицу времени. Попробуйте снизить интенсивность запросов
|
||||
* @throws UnauthorizedException Неверное имя пользователя или пароль или невалидный OAuth-токен при аутентификации
|
||||
* @throws ExtensionNotFoundException Требуемое PHP расширение не установлено
|
||||
*/
|
||||
public function recipientPosLink(string $posLinkId, array|RecipientPosLinkRequestInterface $recipientData, ?string $idempotenceKey = null): ?PosLinkInfo
|
||||
{
|
||||
if (!TypeCast::canCastToString($posLinkId)) {
|
||||
throw new InvalidArgumentException('Invalid posLinkId value: string required');
|
||||
}
|
||||
if (mb_strlen($posLinkId) < 36 || mb_strlen($posLinkId) > 50) {
|
||||
throw new InvalidArgumentException('Invalid posLinkId value');
|
||||
}
|
||||
|
||||
$path = self::POS_LINKS_PATH . '/' . $posLinkId . '/recipient';
|
||||
|
||||
$headers = [self::IDEMPOTENCE_KEY_HEADER => $idempotenceKey ?: UUID::v4()];
|
||||
$request = is_array($recipientData) ? RecipientPosLinkRequest::builder()->build($recipientData) : $recipientData;
|
||||
|
||||
$serializer = new RecipientPosLinkRequestSerializer();
|
||||
$serializedData = $serializer->serialize($request);
|
||||
$httpBody = $this->encodeData($serializedData);
|
||||
|
||||
$response = $this->execute($path, HttpVerb::POST, [], $httpBody, $headers);
|
||||
|
||||
$result = null;
|
||||
if (200 === $response->getCode()) {
|
||||
$resultArray = $this->decodeData($response);
|
||||
$result = new PosLinkResponse($resultArray);
|
||||
} else {
|
||||
$this->handleError($response);
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Создание выплаты.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user