Каскадное проведение платежей

Оплаты с прямым использованием карт

Общая информация

По различным причинам проведение платежей может прерываться. Например, на стороне провайдеров или банков причинами могут служить технические сбои, задержки в обработке платежа или же достижение лимитов, заданных для пользователя на стороне какого-либо провайдера.

Для таких случаев в платформе ecommpay поддерживается возможность каскадного проведения платежей. Каскадное проведение включает в себя последовательные дополнительные попытки проведения платежа через резервных провайдеров без изменения платёжного метода. При работе с прямым использованием карт эта возможность доступна только для разовых оплат в одну или две стадии как с поддержкой, так и без поддержки протокола 3‑D Secure.

При работе с прямым использованием карт допускается только однократное списание средств, поэтому инициирование дополнительных попыток осуществляется на стороне платёжной платформы.

Для поддержки такой возможности на стороне веб-сервиса требуются доработки относительно реализации стандартного проведении разовых оплат. Подробная информация о настройке веб-сервиса и схеме взаимодействия с платёжной платформой представлена далее.

Подключение и настройка

Чтобы подключить каскадное проведение платежей и настроить взаимодействие с платёжной платформой, со стороны мерчанта необходимо:

  1. Решить организационные вопросы, согласовав с курирующим менеджером ecommpay подключение этой возможности и необходимые доработки веб-сервиса.
  2. Доработать веб-сервис для использования каскадного проведения платежей.
    • Дополнить платёжный интерфейс новыми элементами взаимодействия с пользователем.

      При проведении повторной аутентификации 3‑D Secure рекомендуется уведомлять пользователя об отказе в проведении текущей попытки оплаты и получать согласие пользователя на повторную аутентификацию с использованием данных карты, введённых при проведении исходной попытки. Для этого можно использовать уведомление и кнопку. Также при исчерпанном лимите на дополнительные попытки рекомендуется предложить пользователю вернуться в веб-сервис и начать оплату заново с новым идентификатором платежа (payment_id).

    • Поддержать неоднократную аутентификацию 3‑D Secure без внесения изменений в данные карты, введённые при выполнении первой попытки.

      Для этого требуется принимать от платёжной платформы промежуточные оповещения с данными для перенаправления пользователя при каждом проведении повторной аутентификации. А также следует учесть, что в этом случае в набор параметров таких оповещений входит дополнительный параметр cascading_with_redirect. Затем с согласия пользователя необходимо повторно выполнить перенаправление на страницу аутентификации без внесения изменений в данные, введённые ранее.

  3. Отладить и протестировать возможность каскадного проведения оплат совместно с сотрудниками технической поддержки ecommpay.

Схема проведения

Каскадное проведение платежа начинается стандартно: от веб-сервиса к платёжной платформе отправляется запрос на оплату. Далее при необходимости выполняется аутентификация пользователя по протоколу 3‑D Secure. Если эта попытка завершается списанием средств, то от платёжной платформы к веб-сервису отправляется оповещение с итоговым статусом платежа — success, а иначе продолжается каскадное проведение платежа.

Далее, пока ни одна из выполненных попыток не привела к успешному списанию и дополнительные попытки ещё не исчерпаны, на стороне платёжной платформы инициируется выполнение новой попытки списать средства. Если в рамках дополнительной попытки не требуется аутентификация 3‑D Secure, то она выполняется без взаимодействия с пользователем и веб-сервисом. Если требуется аутентификация, то от платёжной платформы к веб-сервису отправляется оповещение с данными для перенаправления пользователя, и затем с согласия пользователя продолжается выполнение этой оплаты с повторной аутентификацией. Статусу платежа присваивается одно из промежуточных значений awaiting_3ds_result, awaiting_redirect_result или processing).

Каскадное проведение платежа заканчивается стандартно: от платёжной платформы к веб-сервису отправляется оповещение с одним из итоговых статусов платежа: success, если одна из выполненных попыток привела к списанию средств, или decline, если ни одна из выполненных попыток не привела к списанию и лимит на дополнительные попытки исчерпан.

Далее представлена схема каскадного проведения оплаты в контексте оплаты в одну стадию с возможной аутентификацией 3‑D Secure.

* В качестве провайдера может выступать ecommpay.

Рис.: Каскадное проведение оплаты с поддержкой 3‑D Secure

  1. От платёжной платформы к провайдеру передаётся запрос на проведение платежа.
  2. На стороне провайдера выявляется необходимость в аутентификации пользователя. Если требуется аутентификация, то к платформе отправляются данные для перенаправления пользователя, а иначе отправляется запрос к эмитенту на проведение платежа.
  3. От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя.
  4. Осуществляется взаимодействие с пользователем:
    • Если аутентификация первичная, то выполняется перенаправление пользователя на страницу аутентификации (ACS URL) эмитента.
    • Если аутентификация повторная, то рекомендуется сначала отобразить пользователю ранее введённые данные карты, сообщение об ошибке и предложение повторить попытку оплаты, и далее с согласия пользователя выполнить перенаправление на страницу аутентификации (ACS URL) эмитента.
  5. Пользователю отображается страница аутентификации, и он осуществляет требуемые действия.
  6. На стороне эмитента выполняется аутентификация пользователя.
  7. Выполняется перенаправление пользователя к веб-сервису с передачей данных о результате аутентификации.
  8. Пользователю отображается страница ожидания в платёжном интерфейсе веб-сервиса.
  9. От веб-сервиса на заданный URL ecommpay передаётся запрос на продолжение проведения платежа с учётом результата аутентификации.
  10. Запрос на продолжение проведения платежа поступает в платёжную платформу.
  11. В платёжной платформе выполняется приём запроса с проверкой его корректности.
  12. От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
  13. От платёжной платформы к провайдеру отправляется запрос на проведение платежа.
  14. На стороне провайдера осуществляется обработка запроса на проведение платежа. В результате от сервиса провайдера либо к платформе отправляется уведомление об отказе, и на стороне платформы инициируется дополнительная попытка, либо к эмитенту отправляется запрос на проведение оплаты, и продолжается стандартное проведение платежа.

Формат оповещений

При каскадном проведении оплат с применением платёжных карт используются итоговые оповещения стандартного формата, описание которого представлено в разделе Оповещения, и промежуточные оповещения стандартного формата для перенаправления пользователя на страницу аутентификации, описание этих форматов представлено в разделе Аутентификация 3‑D Secure. К особенностям промежуточных оповещений в этом случае можно отнести наличие параметра 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=="
    }