.. meta:: :description: /api/v2/make-rebill-sale API endpoint Payneteasy: инициирует рекуррентную продажу с использованием ранее сохранённого референса карты (rebill) для повторных списаний. .. _/api/v2/make-rebill-sale/: /api/v2/make-rebill-sale ################################################## .. role:: ex .. role:: code Введение ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Повторная оплата инициируется через запрос :code:`HTTPS POST` на указанный ниже :ref:`URL` с использованием указанных :ref:`параметров`. Для аутентификации запроса используется :ref:`SHA-1`. См. :ref:`Статусы транзакций`. .. _api_v2_make-rebill_request_url: API URL ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: | Путь API URL не должен быть задан фиксированным значением, т.к. он может быть изменён позднее. .. list-table:: :widths: 50, 50 :header-rows: 1 :class: longtable * - Интеграционная среда - Производственная среда * - :ex:`https://sandbox.payneteasy.ru/paynet/api/v2/make-rebill-sale/ENDPOINTID` - :ex:`https://gate.payneteasy.ru/paynet/api/v2/make-rebill-sale/ENDPOINTID` * - :ex:`https://sandbox.payneteasy.ru/paynet/api/v2/make-rebill-sale/group/ENDPOINTGROUPID` - :ex:`https://gate.payneteasy.ru/paynet/api/v2/make-rebill-sale/group/ENDPOINTGROUPID` .. _api_v2_make-rebill_request_parameters: Параметры запроса ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: | Запрос должен иметь заголовок content-type=application/x-www-form-urlencoded. .. list-table:: :widths: 30, 45, 25 :header-rows: 1 :class: longtable * - Название параметра - Описание - Значение * - :code:`login` - Логин Присоединяющейся стороны в Системе. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 20 * - :code:`client_orderid` - Уникальный идентификатор заказа, присвоенный Присоединяющейся Стороной. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 128 * - :code:`cardrefid` - Ссылочный идентификатор, полученный на этапе регистрации карты (или иного платежного метода) :ref:`/api/v2/create-card-ref/`. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 20 * - :code:`amount` - Сумма к оплате. Сумма должна быть указана в наибольших единицах с разделителем :ex:`.`. Например, :ex:`10.5` для USD означает 10 долларов США и 50 центов. - | ``Необходимость``: Обязательно | ``Тип``: Numeric | ``Длина``: 10 * - :code:`currency` - Валюта, в которой проводится операция. Примеры значений: :ex:`USD` для доллара США, :ex:`EUR` для европейского евро, RUB для российского рубля. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 3 * - :code:`enumerate_amounts` - Парметр может содержать последовательность из нескольких сумм, разделенных запятой :ex:`,`. Payneteasy проведет несколько попыток оплаты с указанными суммами, пока не будет получен успешный статус или пока не закончится последовательность переданных сумм. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 128 * - :code:`recurrent_scenario` - Тип повторной оплаты. Возможные значения: :ex:`REGULAR` (регулярный) или :ex:`IRREGULAR` (нерегулярный). Если параметр передан в запросе, его значение имеет приоритет над значением этого параметра, установленном на шлюзе. Актуально только для некоторых Экваеров. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 50 * - :code:`recurrent_initiator` - Инициатор повторной оплаты. Возможные значения: :ex:`CARDHOLDER` (держатель карты) или :ex:`MERCHANT` (торговец). Если параметр передан в запросе, его значение имеет приоритет над значением этого параметра, установленном на шлюзе. Актуально только для некоторых Экваеров. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 50 * - :code:`cvv2` - CVV2-код Плательщика. CVV2 (Card Verification Значение) — это трех- или четырех-значное число ПОСЛЕ номера кредитной карты в области подписи карты. Может быть пустым или отсутствовать, если эквайринговый канал поддерживает процессинг без CVV2 или он не актуален для данного платёжного метода. - | ``Необходимость``: Опционально | ``Тип``: Numeric | ``Длина``: 3-4 * - :code:`ipaddress` - IP-адрес Плательщика. Включен для отслеживания мошеннических действий. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 45 * - :code:`comment` - Короткий комментарий. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 50 * - :code:`order_desc` - Описание заказа. - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 64k * - :code:`control` - | Контрольная сумма, сгенерированная :ref:`SHA-1`. Строка для подписи представляет собой объединение следующих параметров: | 1. Параметр запроса: :ex:`login` | 2. Параметр запроса: :ex:`client_orderid` | 3. Параметр запроса: :ex:`cardrefid` | 4. Параметр запроса::ex:`amount` в минимальных денежных единицах (если отправлен). | 5. Параметр запроса: :ex:`currency` | 6.:ex:`merchant_control` (Контрольный ключ, назначенный для учетной записи Присоединяющейся Cтороны в Payneteasy). - | ``Необходимость``: Обязательно | ``Тип``: String | ``Длина``: 40 * - :code:`purpose` - Получатель платежа. Это полезно для Присоединяющейся стороны, позволяющей клиентам переводить деньги с кредитной карты на какой-либо счёт клиента, например игровой счёт или счёт мобильного телефона. Примеры значений: :ex:`+9999999999`; :ex:`mail@example.com` и т. д. Это значение будет использоваться системой мониторинга мошенничества. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 128 * - :code:`redirect_url` - URL-адрес, на который будет перенаправлен держатель карты после завершения транзакции. Обратите внимание: держатель карты будет перенаправлен в любом случае — независимо от того, была ли транзакция :ex:`approved` или :ex:`declined`. Этот параметр не следует использовать для получения результатов из Платёжного Шлюза Payneteasy, поскольку все параметры передаются через браузер клиента и могут быть потеряны при передаче. Для доставки корректного результата платежа в бэкенд следует использовать :ex:`server_callback_url`. Параметр обязателен для сценария 3DS и необязателен для сценария без 3DS. :ex:`https://doc.payneteasy.ru` можно использовать для тестирования, если неизвестно, используется ли 3DS. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 1024 * - :code:`server_callback_url` - | URL-адрес :ex:`server_callback_url`, по которому будет отправлен обратный вызов с результатом транзакции. Присоединяющаяся сторона может использовать обратные вызовы для индивидуальной обработки завершения транзакции (например, для сбора данных о платежах в информационной системе Присоединяющейся стороны). Список параметров, включенных в обратный вызов, см. в разделе :ref:`Обратного вызова Присоединяющейся стороны`. Данный параметр может быть передан вместо :ex:`notify_url`. При использовании :ex:`server_callback_url` платежный шлюз отправляет callback-уведомление только при получении финального статуса исходной транзакции. При использовании :ex:`notify_url` платежный шлюз отправляет уведомление при получении финального статуса и продолжает отправлять уведомления о всех последующих изменениях (возвраты, chargeback и др.). - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 1024 * - :code:`notify_url` - | URL-адрес :ex:`notify_url`, по которому будет отправлен обратный вызов с результатом транзакции. Присоединяющаяся сторона может использовать обратные вызовы для индивидуальной обработки завершения транзакции (например, для сбора данных о платежах в информационной системе Присоединяющейся стороны). Список параметров, включенных в обратный вызов, см. в разделе :ref:`Обратного вызова Присоединяющейся стороны`. Данный параметр может быть передан вместо :ex:`server_callback_url`. При использовании :ex:`notify_url` платежный шлюз отправляет уведомление при получении финального статуса и продолжает отправлять уведомления о всех последующих изменениях (возвраты, chargeback и др.). При использовании :ex:`server_callback_url` платежный шлюз отправляет callback-уведомление только при получении финального статуса исходной транзакции. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 1024 * - :code:`order_desc` - Любая дополнительная информация о транзакции, которая может быть полезна во внешних системах Присоединяющейся стороны, например :ex:`VIP клиент`, :ex:`лид промокампании на ТВ`. - | ``Необходимость``: Опционально | ``Тип``: String | ``Длина``: 64 .. include:: empty.txt .. _api_v2_make-rebill_response_parameters: Параметры ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. note:: | Ответ имеет заголовок Content-Type: text/html;charset=utf-8. Все поля имеют кодировку x-www-form-urlencoded, с символом (0xA) в конце значения каждого параметра. .. list-table:: :widths: 25, 75 :header-rows: 1 :class: longtable * - Параметры ответа - Описание * - :code:`type` - | Тип ответа. Может принимать такие значения как - :ex:`async-response`, :ex:`validation-error`, :ex:`error` и т.д. | Если тип равен :ex:`validation-error` или :ex:`error`, параметры :ex:`error-message` и :ex:`error-code` будут содержать сведения об ошибке. * - :code:`serial-number` - Уникальный номер, присваиваемый сервером Payneteasy конкретному запросу от Присоединяющейся стороны. * - :code:`merchant-order-id` - Номер заказа в системе Присоединяющейся Стороны. * - :code:`paynet-order-id` - Идентификатор заказа, присвоенный Payneteasy. * - :code:`end-point-id` - Идентификатор терминала, используемый для транзакции. * - :code:`error-message` - Для транзакций в статусе :ex:`error` этот параметр будет содержать причину отклонения или сведения об ошибке. * - :code:`error-code` - Код ошибки для транзакций в статусе :ex:`error`. Пример запроса ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: text POST /paynet/api/v2/make-rebill-sale/46750 HTTP/1.1 Host: https://sandbox.payneteasy.ru User-Agent: curl/7.85.0 Accept: */ Content-Length: 229 Content-Type: application/x-www-form-urlencoded Connection: close &login=login &client_orderid=902B4FF5 &cardrefid=1461665 &amount=5.00 ¤cy=USD &cvv2=123 &ipaddress=34.129.65.12 &comment=Information abount Rebill &order_desc=Rebill order description &control=a37f4972233b4a5dbfb4dcaae149ce7feed01ef9 Пример успешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: javascript HTTP/1.1 200 Server: server Date: Thu, 02 Feb 2023 13:22:04 GMT Content-Type: text/html;charset=utf-8 Connection: close Vary: Accept-Encoding X-XSS-Protection: 1 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=31536000 Content-Language: en-US Strict-Transport-Security: max-age=31536000 Content-Length: 144 type=async-response &serial-number=00000000-0000-0000-0000-000002e0d6b9 &merchant-order-id=902B4FF5 &paynet-order-id=6937242 &end-point-id=46750 Пример неуспешного ответа ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. code-block:: javascript HTTP/1.1 200 Server: server Date: Thu, 02 Feb 2023 13:24:47 GMT Content-Type: text/html;charset=utf-8 Connection: close Vary: Accept-Encoding X-XSS-Protection: 1 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=31536000 Content-Language: en-US Strict-Transport-Security: max-age=31536000 Content-Length: 164 type=validation-error &serial-number=00000000-0000-0000-0000-000002e0d74c &merchant-order-id=902B4FF5 &error-message=End+point+with+id+99999+not+found &error-code=3 Коллекция Postman ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. raw:: html :file: ../_static/Postman/Postman_recurrent_sale.html Конструктор запросов ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. only:: insurance_enabled .. raw:: html :file: ../_static/examples/d2_insurance_Request_Debug_recurrent_sale.html .. only:: insurance_disabled .. raw:: html :file: ../_static/examples/recurrent_transaction_Response_Debug_Sale.html