.. meta:: :description: Конечная точка API /api/v4/process-recurring-payments SBC: ручной запуск обработки нескольких настроенных рекуррентных платежей одним пакетным вызовом. .. _api_v4_process-recurring-payments: /api/v4/process-recurring-payments ######################################### .. role:: ex .. role:: code Введение ^^^^^^^^^^^^^^^^^^^^^^^^ | Если запрос принят без ошибок, платежный шлюз находит профили повторяющегося платежа для каждого предоставленного recurring-payment-id и инициирует новые повторяющуеся транзакции, используя данные платежа, сохраненные в каждом профиле. | Процесс множественного повторяющегося платежа инициируется через запрос :code:`HTTPSPOST` с использованием :ref:`URLs` и :ref:`parameters`, указанных ниже. Используйте :ref:`RSA-SHA256` для аутентификации. .. _api_v4_process-recurring-payments_request_url: API URL ^^^^^^^^^^^^^^^^^^^^ .. note:: | Путь API URL не должен быть задан фиксированным значением, т.к. он может быть изменён позднее. .. list-table:: :widths: 50, 50 :header-rows: 1 :class: longtable * - Интеграционная среда - Производственная среда * - :ex:`https://sandbox.sbctech.ru/paynet/api/v4/process-recurring-payments/ENDPOINTID` - :ex:`https://gate.sbctech.ru/paynet/api/v4/process-recurring-payments/ENDPOINTID` .. _api_v4_process-recurring-payments_request_parameters: Параметры запроса ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: | Запрос должен иметь content-type=application/x-www-form-urlencoded и :ref:`Заголовки авторизации`. | Ниже приведено описание каждого параметра, который можно включить в CSV и добавить к параметру :code:`payload`, который будет использоваться в запросе. .. list-table:: :widths: 30, 50, 20 :header-rows: 1 :class: longtable * - Название параметра CSV - Описание - Значение * - :code:`client-orderid` - Идентификатор заказа Присоединяющейся стороны. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 128 * - :code:`recurring-payment-id` - Повторяющийся идентификатор, присвоенный заказу отделом QA. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 10 * - :code:`amount` - Сумма валюты должна совпадать с валютой назначенного проекта. По достижении даты окончания, регулярный платеж перейдет в статус - остановлен. Поддерживается для типов SRC и DST. Требуется, если не используются:code:`amount-from` и:code:`amount-to` или:code:`amount-sequence`. - | ``Необходимость``: Условно | ``Тип``: Numeric | ``Длина``: 10 .. _api_v4_process-recurring-payments_response_parameters: Параметры ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: | Ответ имеет заголовок Content-Type: text/html;charset=utf-8. Все поля имеют кодировку x-www-form-urlencoded, с символом (0xA) в конце значения каждого параметра. .. list-table:: :widths: 35, 65 :header-rows: 1 :class: longtable * - Параметры ответа - Описание * - :code:`type` - Тип ответа. Пример: :ex:`process-recurring-payment-response`, :ex:`validation-error`, :ex:`error`. Если тип равен :ex:`validation-error` или :ex:`error`, параметры :ex:`error-message` и :ex:`error-code` содержат сведения об ошибке. Может быть получено несколько кодов ошибок: :ex:`200`, :ex:`403` и :ex:`500`. Для кода ошибки :ex:`500` будет возвращен дополнительный идентификатор ошибки. * - :code:`status` - Подробности смотрите в:ref:`status_list`. * - :code:`serial-number` - Уникальный номер, присваиваемый сервером SBC конкретному запросу от Торговца Пример запроса ^^^^^^^^^^^^^^^^^^^^^^^^^^^ | **Шаг 1.** Создайте CSV-файл с предоставленной структурой: .. code-block:: none "client-orderid";"recurring-payment-id";"amount" | **Шаг 2.** Кодируйте CSV в base64 с помощью следующей команды: .. code-block:: bash base64 process-recurring-payments-example.csv | **Шаг 3**. Присвойте закодированное значение :ex:`base64` параметру :code:`payload` и отправьте запрос: .. code-block:: http POST /paynet/api/v4/process-recurring-payments/ HTTP/1.1 Host: sandbox.sbctech.ru User-Agent: curl/8.4.0 Accept: */* Content-Type: application/x-www-form-urlencoded Authorization: OAuth oauth_consumer_key="ErwinTestMerchant",oauth_signature_method="RSA-SHA256",oauth_timestamp="1727177782",oauth_nonce="Js4dwXkF8eI",oauth_version="1.0",oauth_signature="EGLiLoJJsZzZ4LgTdexkExuNCeyJEkSYuQwsrLMTvucJiIoG2rXL%2FaIkwnXwY6ncXS%2BopSYszmvAE1KnR316YxfyPzvgwO7LkrCE9r80yEfYuGOjwdB7fqvCyYtPqylS7MJ0%2BJM1EIowuWkiwURLqU3mG4J00t1Kl7CRrsjT9nwKoj8mRrljb1St3rAh8bJ7SsdKKQwir1Va6t0cuVMxjsUHJqCtztoCXAPj%2BRz4UKrjbQnwNvJ1MfOnTyeRXTAJgGg7XwctumcG5W2vfuKICwEUQ9S95jxXIci%2FmHuA8gkV7DmfolT1CnxDYzhJwvspvg9BP%2FFVxOGjUTEKDwNhCX5BB3B6EUkyEFI79V8tAtUdUy%2FzRmChPA%2FYvyBky8egkVXoKgwoUHiTQ5ITEhbzCTLjuVm9J%2FEwqVHQkwPbn6T5aTcvQBoMkDtZ70qm7J73wPKuN%2B7S%2Fi0SBc6gwGyu6G%2FfXYu%2BvDY8Ihtd6HRUC59sUYQ6D3tVbh8CE4W9tF1UiXCAoPehdBga%2BR6WUq%2FnD%2FRFrBDZ2Y%2Bz%2FMGhjQHBNZu%2B5z4JjNn7QusHpO1ZwvrI1kSlK79toVOiwVX%2FcP4H5M20s5EPjvSrcc2tnqQSUUOLFGyRFObQgs7kmBxUjEMXbVh9QXlIBdSvy4S8PkFnqYjVLh2aNgTpw%2BgB8RrZ1MY%3D" Content-Length: 888 Connection: keep-alive payload=cmVjdXJyaW5nLXBheW1lbnQtaWQ7Y2xpZW50LW9yZGVyaWQ7cGF5bWVudC1kZXNjcmlwdGlvbjtmaXJzdC1uYW1lO2xhc3QtbmFtZTthZGRyZXNzMTtjaXR5O3ppcC1jb2RlO2NvdW50cnk7c3RhdGU7cGhvbmU7ZW1haWw7Y3VzdG9tZXItaXA7YW1vdW50O2N1cnJlbmN5O3B1cnBvc2U7bm90aWZ5LXVybDtzc247YmlydGhkYXkNCjE0OTIyODY7MTIzNDU2Nzg5MDtPdXIgZ29vZHM7Sm9objtTbWl0aDsxMjM0IFBlYWNlIHN0cmVldDtDaGljYWdvOzEyMzQ1NjtVUztJTDsxMjM0NTY3ODtqb2huLnNtaXRoQGV4YW1wbGUuY29tOzEuMi4zLjc7MTA7VVNEO05vIHB1cnBvc2UgYXQgYWxsO2h0dHA6Ly9leGFtcGxlLmNvbS9wcm9jZXNzLW1lOzEyMzQ7MDIuMDEuMTk4MA0K Пример успешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: | Успешный ответ имеет пустое тело и HTTP-код 200. .. code-block:: http HTTP/1.1 200 Server: server Date: Tue, 24 Sep 2024 09:47:01 GMT Content-Length: 0 Connection: keep-alive Keep-Alive: timeout=60 X-XSS-Protection: 1 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=31536000 Strict-Transport-Security: max-age=31536000 Пример неуспешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: | Неуспешный ответ имеет пустое тело и HTTP-код 403. .. code-block:: http HTTP/1.1 403 Server: server Date: Wed, 25 Sep 2024 08:46:12 GMT Content-Length: 0 Connection: keep-alive Keep-Alive: timeout=60 X-XSS-Protection: 1 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=31536000 Конструктор запросов ^^^^^^^^^^^^^^^^^^^^ .. raw:: html :file: ../_static/examples/V4RecursProcess.html