Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/vendor/yoomoney/yookassa-sdk-php/docs/examples/ |
Upload File : |
## Работа с возвратами С помощью SDK можно возвращать платежи — полностью или частично. Порядок возврата зависит от способа оплаты (`payment_method`) исходного платежа. При оплате банковской картой деньги возвращаются на карту, которая была использована для проведения платежа. [Как проводить возвраты](https://yookassa.ru/developers/payments/refunds) Некоторые способы оплаты (например, наличные) не поддерживают возвраты. [Какие платежи можно вернуть](https://yookassa.ru/developers/payment-methods/overview#all) * [Запрос на создание возврата](#Запрос-на-создание-возврата) * [Запрос на создание возврата через билдер](#Запрос-на-создание-возврата-через-билдер) * [Получить информацию о возврате](#Получить-информацию-о-возврате) * [Получить список возвратов с фильтрацией](#Получить-список-возвратов-с-фильтрацией) --- ### Запрос на создание возврата <a name="Запрос-на-создание-возврата"></a> [Создание возврата в документации](https://yookassa.ru/developers/api?lang=php#create_refund) Создает возврат успешного платежа на указанную сумму. Платеж можно вернуть только в течение трех лет с момента его создания. Комиссия ЮKassa за проведение платежа не возвращается. В ответ на запрос придет объект возврата — `RefundResponse` — в актуальном статусе. ```php require_once 'vendor/autoload.php'; $client = new \YooKassa\Client(); $client->setAuth('xxxxxx', 'test_XXXXXXX'); try { $response = $client->createRefund( [ 'payment_id' => '24e89cb0-000f-5000-9000-1de77fa0d6df', 'amount' => [ 'value' => '1000.00', 'currency' => \YooKassa\Model\CurrencyCode::RUB, ], 'sources' => [ [ 'account_id' => '456', 'amount' => [ 'value' => '1000.00', 'currency' => \YooKassa\Model\CurrencyCode::RUB, ] ], ], ], uniqid('', true) ); echo $response->getStatus(); } catch (\Exception $e) { $response = $e; } var_dump($response); ``` --- ### Запрос на создание возврата через билдер <a name="Запрос-на-создание-возврата-через-билдер"></a> [Информация о создании возврата в документации](https://yookassa.ru/developers/api?lang=php#create_refund) Билдер позволяет создать объект возврата — `CreateRefundRequest` — программным способом, через объекты. ```php require_once 'vendor/autoload.php'; $client = new \YooKassa\Client(); $client->setAuth('xxxxxx', 'test_XXXXXXX'); try { $refundBuilder = \YooKassa\Request\Refunds\CreateRefundRequest::builder(); $refundBuilder ->setPaymentId('24b94598-000f-5000-9000-1b68e7b15f3f') ->setAmount(3500.00) ->setCurrency(\YooKassa\Model\CurrencyCode::RUB) ->setDescription('Не подошел цвет') ->setReceiptItems([ [ 'description' => 'Платок Gucci', 'quantity' => '1.00', 'amount' => [ 'value' => '3000.00', 'currency' => \YooKassa\Model\CurrencyCode::RUB, ], 'vat_code' => 2, 'payment_mode' => 'full_payment', 'payment_subject' => 'commodity', ], ]) ->setReceiptEmail('john.doe@merchant.com') ->setTaxSystemCode(1); // Создаем объект запроса $request = $refundBuilder->build(); // Можно изменить данные, если нужно $request->setDescription('Не подошел цвет и размер'); $idempotenceKey = uniqid('', true); $response = $client->createRefund($request, $idempotenceKey); } catch (Exception $e) { $response = $e; } ``` --- ### Получить информацию о возврате <a name="Получить-информацию-о-возврате"></a> [Информация о возврате в документации](https://yookassa.ru/developers/api?lang=php#get_refund) Запрос позволяет получить информацию о текущем состоянии возврата по его уникальному идентификатору. В ответ на запрос придет объект возврата — `RefundResponse` — в актуальном статусе. ```php require_once 'vendor/autoload.php'; $client = new \YooKassa\Client(); $client->setAuth('xxxxxx', 'test_XXXXXXX'); try { $response = $client->getRefundInfo('216749f7-0016-50be-b000-078d43a63ae4'); echo $response->getStatus(); } catch (\Exception $e) { $response = $e; } var_dump($response); ``` --- ### Получить список возвратов с фильтрацией <a name="Получить-список-возвратов-с-фильтрацией"></a> [Список возвратов в документации](https://yookassa.ru/developers/api?lang=php#get_refunds_list) Запрос позволяет получить список возвратов, отфильтрованный по заданным критериям. В ответ на запрос вернется список возвратов с учетом переданных параметров. В списке будет информация о возвратах, созданных за последние 3 года. Список будет отсортирован по времени создания возвратов в порядке убывания. Если результатов больше, чем задано в `limit`, список будет выводиться фрагментами. В этом случае в ответе на запрос вернется фрагмент списка и параметр `next_cursor` с указателем на следующий фрагмент. ```php require_once 'vendor/autoload.php'; $client = new \YooKassa\Client(); $client->setAuth('xxxxxx', 'test_XXXXXXX'); $cursor = null; $params = [ 'limit' => 30, 'status' => \YooKassa\Model\Refund\RefundStatus::SUCCEEDED, 'payment_id' => '1da5c87d-0984-50e8-a7f3-8de646dd9ec9', 'created_at_gte' => '2021-01-01T00:00:00.000Z', 'created_at_lt' => '2021-03-30T23:59:59.999Z', ]; try { do { $params['cursor'] = $cursor; $refunds = $client->getRefunds($params); foreach ($refunds->getItems() as $refund) { echo $refund->getCreatedAt()->format('Y-m-d H:i:s') . ' - ' . $refund->getStatus() . ' - ' . $refund->getId() . "\n"; } } while ($cursor = $refunds->getNextCursor()); } catch (\Exception $e) { $response = $e; var_dump($response); } ``` [Подробнее о работе со списками](https://yookassa.ru/developers/using-api/lists)