Каскадное проведение платежей
Оплаты с прямым использованием карт
Общая информация
По различным причинам проведение платежей может прерываться. Например, на стороне провайдеров или банков причинами могут служить технические сбои, задержки в обработке платежа или же достижение лимитов, заданных для пользователя на стороне какого-либо провайдера.
Для таких случаев в платформе ecommpay поддерживается возможность каскадного проведения платежей. Каскадное проведение включает в себя последовательные дополнительные попытки проведения платежа через резервных провайдеров без изменения платёжного метода. При работе с прямым использованием карт эта возможность доступна только для разовых оплат в одну или две стадии как с поддержкой, так и без поддержки протокола 3‑D Secure.
При работе с прямым использованием карт допускается только однократное списание средств, поэтому инициирование дополнительных попыток осуществляется на стороне платёжной платформы.
Для поддержки такой возможности на стороне веб-сервиса требуются доработки относительно реализации стандартного проведении разовых оплат. Подробная информация о настройке веб-сервиса и схеме взаимодействия с платёжной платформой представлена далее.
Подключение и настройка
Чтобы подключить каскадное проведение платежей и настроить взаимодействие с платёжной платформой, со стороны мерчанта необходимо:
- Решить организационные вопросы, согласовав с курирующим менеджером ecommpay подключение этой возможности и необходимые доработки веб-сервиса.
- Доработать веб-сервис для использования каскадного проведения платежей.
- Дополнить платёжный интерфейс новыми элементами взаимодействия с пользователем.
При проведении повторной аутентификации 3‑D Secure рекомендуется уведомлять пользователя об отказе в проведении текущей попытки оплаты и получать согласие пользователя на повторную аутентификацию с использованием данных карты, введённых при проведении исходной попытки. Для этого можно использовать уведомление и кнопку. Также при исчерпанном лимите на дополнительные попытки рекомендуется предложить пользователю вернуться в веб-сервис и начать оплату заново с новым идентификатором платежа (
payment_id
). - Поддержать неоднократную аутентификацию 3‑D Secure без внесения изменений в данные карты, введённые при выполнении первой попытки.
Для этого требуется принимать от платёжной платформы промежуточные оповещения с данными для перенаправления пользователя при каждом проведении повторной аутентификации. А также следует учесть, что в этом случае в набор параметров таких оповещений входит дополнительный параметр
cascading_with_redirect
. Затем с согласия пользователя необходимо повторно выполнить перенаправление на страницу аутентификации без внесения изменений в данные, введённые ранее.
- Дополнить платёжный интерфейс новыми элементами взаимодействия с пользователем.
- Отладить и протестировать возможность каскадного проведения оплат совместно с сотрудниками технической поддержки ecommpay.
Схема проведения
Каскадное проведение платежа начинается стандартно: от веб-сервиса к платёжной платформе отправляется запрос на оплату. Далее при необходимости выполняется аутентификация пользователя по протоколу 3‑D Secure. Если эта попытка завершается списанием средств, то от платёжной платформы к веб-сервису отправляется оповещение с итоговым статусом платежа — success
, а иначе продолжается каскадное проведение платежа.
Далее, пока ни одна из выполненных попыток не привела к успешному списанию и дополнительные попытки ещё не исчерпаны, на стороне платёжной платформы инициируется выполнение новой попытки списать средства. Если в рамках дополнительной попытки не требуется аутентификация 3‑D Secure, то она выполняется без взаимодействия с пользователем и веб-сервисом. Если требуется аутентификация, то от платёжной платформы к веб-сервису отправляется оповещение с данными для перенаправления пользователя, и затем с согласия пользователя продолжается выполнение этой оплаты с повторной аутентификацией. Статусу платежа присваивается одно из промежуточных значений awaiting_3ds_result
, awaiting_redirect_result
или processing
).
Каскадное проведение платежа заканчивается стандартно: от платёжной платформы к веб-сервису отправляется оповещение с одним из итоговых статусов платежа: success
, если одна из выполненных попыток привела к списанию средств, или decline
, если ни одна из выполненных попыток не привела к списанию и лимит на дополнительные попытки исчерпан.
Далее представлена схема каскадного проведения оплаты в контексте оплаты в одну стадию с возможной аутентификацией 3‑D Secure.
* В качестве провайдера может выступать ecommpay.
- От платёжной платформы к провайдеру передаётся запрос на проведение платежа.
- На стороне провайдера выявляется необходимость в аутентификации пользователя. Если требуется аутентификация, то к платформе отправляются данные для перенаправления пользователя, а иначе отправляется запрос к эмитенту на проведение платежа.
- От платёжной платформы к веб-сервису направляется оповещение с данными для перенаправления пользователя.
- Осуществляется взаимодействие с пользователем:
- Если аутентификация первичная, то выполняется перенаправление пользователя на страницу аутентификации (ACS URL) эмитента.
- Если аутентификация повторная, то рекомендуется сначала отобразить пользователю ранее введённые данные карты, сообщение об ошибке и предложение повторить попытку оплаты, и далее с согласия пользователя выполнить перенаправление на страницу аутентификации (ACS URL) эмитента.
- Пользователю отображается страница аутентификации, и он осуществляет требуемые действия.
- На стороне эмитента выполняется аутентификация пользователя.
- Выполняется перенаправление пользователя к веб-сервису с передачей данных о результате аутентификации.
- Пользователю отображается страница ожидания в платёжном интерфейсе веб-сервиса.
- От веб-сервиса на заданный URL ecommpay передаётся запрос на продолжение проведения платежа с учётом результата аутентификации.
- Запрос на продолжение проведения платежа поступает в платёжную платформу.
- В платёжной платформе выполняется приём запроса с проверкой его корректности.
- От платёжной платформы к веб-сервису направляется ответ с информацией о получении запроса и его корректности.
- От платёжной платформы к провайдеру отправляется запрос на проведение платежа.
- На стороне провайдера осуществляется обработка запроса на проведение платежа. В результате от сервиса провайдера либо к платформе отправляется уведомление об отказе, и на стороне платформы инициируется дополнительная попытка, либо к эмитенту отправляется запрос на проведение оплаты, и продолжается стандартное проведение платежа.
Формат оповещений
При каскадном проведении оплат с применением платёжных карт используются итоговые оповещения стандартного формата, описание которого представлено в разделе Оповещения, и промежуточные оповещения стандартного формата для перенаправления пользователя на страницу аутентификации, описание этих форматов представлено в разделе Аутентификация 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=="
}