# Каскадное проведение платежей {#ru_gate_cascading} статья о возможности выполнять дополнительные попытки проведения платежей через Gate **На уровень выше:**[Дополнительные возможности](ru_Gate_Additional_capabilities.md) ## Оплаты с прямым использованием карт {#ru_gate_cascading_cards} ### Общая информация {#section_rlm_rfp_qjb .section} По различным причинам проведение платежей может прерываться. Например, на стороне провайдеров или банков причинами могут служить технические сбои, задержки в обработке платежа или же достижение лимитов, заданных для пользователя на стороне какого-либо провайдера. Для таких случаев в платформе Ecommpay поддерживается возможность каскадного проведения платежей. Каскадное проведение включает в себя последовательные дополнительные попытки проведения платежа через резервных провайдеров без изменения платёжного метода. При работе с прямым использованием карт эта возможность доступна только для разовых оплат в одну или две стадии как с поддержкой, так и без поддержки протокола 3‑D Secure. При работе с прямым использованием карт допускается только однократное списание средств, поэтому инициирование дополнительных попыток осуществляется на стороне платёжной платформы. Для поддержки такой возможности на стороне веб-сервиса требуются доработки относительно реализации стандартного проведении разовых оплат. Подробная информация о настройке веб-сервиса и схеме взаимодействия с платёжной платформой представлена далее. ### Подключение и настройка {#section_fpy_5hcgh_qjb .section} Чтобы подключить каскадное проведение платежей и настроить взаимодействие с платёжной платформой, со стороны мерчанта необходимо: 1. Решить организационные вопросы, согласовав с курирующим менеджером Ecommpay подключение этой возможности и необходимые доработки веб-сервиса. 2. Доработать веб-сервис для использования каскадного проведения платежей. - Дополнить платёжный интерфейс новыми элементами взаимодействия с пользователем. При проведении повторной аутентификации 3‑D Secure рекомендуется уведомлять пользователя об отказе в проведении текущей попытки оплаты и получать согласие пользователя на повторную аутентификацию с использованием данных карты, введённых при проведении исходной попытки. Для этого можно использовать уведомление и кнопку. Также при исчерпанном лимите на дополнительные попытки рекомендуется предложить пользователю вернуться в веб-сервис и начать оплату заново с новым идентификатором платежа \(`payment_id`\). - Поддержать неоднократную аутентификацию 3‑D Secure без внесения изменений в данные карты, введённые при выполнении первой попытки. Для этого требуется принимать от платёжной платформы промежуточные оповещения с данными для перенаправления пользователя при каждом проведении повторной аутентификации. А также следует учесть, что в этом случае в набор параметров таких оповещений входит дополнительный параметр `cascading_with_redirect`. Затем с согласия пользователя необходимо повторно выполнить перенаправление на страницу аутентификации без внесения изменений в данные, введённые ранее. 3. Отладить и протестировать возможность каскадного проведения оплат совместно с сотрудниками технической поддержки Ecommpay. ### Схема проведения {#section_sb4_nvd_kkb .section} Каскадное проведение платежа начинается стандартно: от веб-сервиса к платёжной платформе отправляется запрос на оплату. Далее при необходимости выполняется аутентификация пользователя по протоколу 3‑D Secure. Если эта попытка завершается списанием средств, то от платёжной платформы к веб-сервису отправляется оповещение с итоговым статусом платежа — `success`, а иначе продолжается каскадное проведение платежа. Далее, пока ни одна из выполненных попыток не привела к успешному списанию и дополнительные попытки ещё не исчерпаны, на стороне платёжной платформы инициируется выполнение новой попытки списать средства. Если в рамках дополнительной попытки не требуется аутентификация 3‑D Secure, то она выполняется без взаимодействия с пользователем и веб-сервисом. Если требуется аутентификация, то от платёжной платформы к веб-сервису отправляется оповещение с данными для перенаправления пользователя, и затем с согласия пользователя продолжается выполнение этой оплаты с повторной аутентификацией. Статусу платежа присваивается одно из промежуточных значений `awaiting_3ds_result`, `awaiting_redirect_result` или `processing`\). Каскадное проведение платежа заканчивается стандартно: от платёжной платформы к веб-сервису отправляется оповещение с одним из итоговых статусов платежа: `success`, если одна из выполненных попыток привела к списанию средств, или `decline`, если ни одна из выполненных попыток не привела к списанию и лимит на дополнительные попытки исчерпан. Далее представлена схема каскадного проведения оплаты в контексте оплаты в одну стадию с возможной аутентификацией 3‑D Secure. ![](images/universal/cascade/ru_gate_sale_cascading.svg) \* В качестве провайдера может выступать Ecommpay. 1. От платёжной платформы к провайдеру передаётся запрос на проведение платежа. 2. На стороне провайдера выявляется необходимость в аутентификации пользователя. Если требуется аутентификация, то к платформе отправляются данные для перенаправления пользователя, а иначе отправляется запрос к эмитенту на проведение платежа. 3. От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя. 4. Осуществляется взаимодействие с пользователем: - Если аутентификация первичная, то выполняется перенаправление пользователя на страницу аутентификации \(ACS URL\) эмитента. - Если аутентификация повторная, то рекомендуется сначала отобразить пользователю ранее введённые данные карты, сообщение об ошибке и предложение повторить попытку оплаты, и далее с согласия пользователя выполнить перенаправление на страницу аутентификации \(ACS URL\) эмитента. 5. Пользователю отображается страница аутентификации, и он осуществляет требуемые действия. 6. На стороне эмитента выполняется аутентификация пользователя. 7. Выполняется перенаправление пользователя к веб-сервису с передачей данных о результате аутентификации. 8. Пользователю отображается страница ожидания в платёжном интерфейсе веб-сервиса. 9. От веб-сервиса на заданный URL Ecommpay передаётся запрос на продолжение проведения платежа с учётом результата аутентификации. 10. Запрос на продолжение проведения платежа поступает в платёжную платформу. 11. В платёжной платформе выполняется приём запроса с проверкой его корректности. 12. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности. 13. От платёжной платформы к провайдеру отправляется запрос на проведение платежа. 14. На стороне провайдера осуществляется обработка запроса на проведение платежа. В результате от сервиса провайдера либо к платформе отправляется уведомление об отказе, и на стороне платформы инициируется дополнительная попытка, либо к эмитенту отправляется запрос на проведение оплаты, и продолжается стандартное проведение платежа. ### Формат оповещений {#section_bnh_qw4_rjb .section} При каскадном проведении оплат с применением платёжных карт используются итоговые оповещения стандартного формата, описание которого представлено в разделе [Работа с оповещениями](ru_platform_callbacks.md#), и промежуточные оповещения стандартного формата для перенаправления пользователя на страницу аутентификации, описание этих форматов представлено в разделе [Аутентификация 3‑D Secure](ru_gate_payment_3ds.md#). К особенностям промежуточных оповещений в этом случае можно отнести наличие параметра `cascading_with_redirect`, который может принимать одно из следующих значений: - `true` — если требуется получить подтверждение пользователя на дополнительную попытку проведения оплаты, так как в одной из предыдущих попыток выполнялась аутентификация 3‑D Secure; - `false` — если не требуется получить подтверждение пользователя на дополнительную попытку, так как ни в одной из предыдущих попыток не выполнялась аутентификация 3‑D Secure. Причина отказа в выполнении попытки проведения оплаты может быть указана в параметре `message` объекта `operations`. Далее представлен пример набора данных в оповещении для случая, когда на стороне веб-сервиса не требуется получать согласие пользователя на дополнительную попытку проведения оплаты. ``` { "cascading_with_redirect": false, "payment": { "date": "2020-03-28T09:28:54+0000", "OperationFee": { "amount": 0, "currency": "USD" }, "type": "purchase", "sum": { "amount": 2000, "currency": "USD" }, "status": "awaiting 3ds result", "method": "card", "id": "1115888716", "description": "" }, "customer": { "id": "11158745" }, "account": { "number": "431422******0056", "type": "visa", "card_holder": "Jane Doe", "expiry_month": "11", "expiry_year": "2025" }, "project_id": 18616, "operation": { "id": 50454000052091, "type": "sale", "status": "awaiting 3ds result", "date": "2020-03-28T09:28:54+0000", "created_date": "2020-03-28T09:28:53+0000", "request_id": "af5e3a32bf6f8742c9are9", "sum_initial": { "amount": 2000, "currency": "USD" }, "sum_converted": { "amount": 2000, "currency": "USD" }, "code": "9999", "message": "Awaiting processing", "eci": "07", "provider": { "id": 4164, "payment_id": "", "endpoint_id": 4184 } }, "card_type": "Visa Gold", "acs": { "pa_req": "eJxVUd85...W6ip/iPo2E=", "acs_url": "https://acs.bank.com/pareq", "md": "eyZjUtODg...IjoiIn0=" }, "signature": "T1e+AOko05D...KupPd7TA==" } ```