Повторные попытки проведения платежей

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

При работе с Payment Page пользователю, как правило, достаточно одной попытки для проведения платежа. Но в некоторых случаях, например когда пользователь указывает реквизиты платёжной карты, на которой недостаточно средств, для проведения платежа могут потребоваться дополнительные попытки. Для работы с такими ситуациями в платёжной платформе ecommpay предусмотрена возможность выполнять повторные попытки проведения одного и того же платежа (с одним идентификатором) в рамках одного сеанса работы с Payment Page.

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

В общем случае, если возможность выполнения повторных попыток не подключена, при отклонении платежа пользователю отображается итоговая страница с сообщением об ошибке, сеанс работы с Payment Page завершается, и чтобы повторить попытку, пользователю необходимо вернуться к веб-сервису и инициировать новый платёж. Если же возможность выполнения повторных попыток подключена, при отклонении платежа на итоговой странице отображается сообщение об ошибке и предложение повторить попытку (с дополнительной кнопкой для перехода к этой попытке).

Для перехода к очередной попытке проведения платежа на итоговой странице Payment Page отображается дополнительная кнопка, по щелчку которой, пользователь перенаправляется на страницу, с которой была открыта платёжная форма. При этом следует учитывать, что все параметры, указанные в запросе на открытие Payment Page, актуальны как для первой, так и для всех последующих попыток. Так, при предварительном указании метода все попытки возможны только с использованием этого метода, а при указании токена — только с использованием этого токена. Если же такие параметры не указываются, то с каждой новой попыткой пользователь может выбирать любой из доступных методов для проведения платежа.

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

Поскольку для выполнения повторных попыток не требуется заново открывать платёжную форму, все параметры, указанные в запросе на открытие Payment Page, актуальны как для первой, так и для всех последующих попыток. Это касается в том числе и предварительного выбора платёжных методов и групп методов.

В целом при использовании повторных попыток возможности выбора платёжного метода определяются следующим образом.

Предварительный выбор метода или группы Первая попытка Каждая повторная попытка

(отсутствует)

любой из доступных методов в зависимости от целевого действия, выполнявшегося при первой попытке:
  • для оплаты — любой из методов, доступных для проведения оплаты
  • для блокировки средств — любой из методов, доступных для блокировки средств
карточные платежи карточные платежи карточные платежи либо (если согласовано и настроено) Apple Pay или Google Pay
альтернативный метод

(группа методов)

заданный метод

(группа методов)

заданный метод

(группа методов)

Прим.:

Более подробно возможности выбора платёжного метода при выполнении повторных попыток можно описать следующим образом.

  • В случаях, когда метод не был задан предварительно, для повторной попытки пользователь может выбрать один из методов, позволяющих выполнять операции того типа, который использовался для первой попытки. Так, если первая попытка касалась блокировки средств в рамках двухстадийной оплаты (auth), то и для каждой последующей попытки можно выбрать метод, поддерживающий двухстадийные оплаты, чтобы выполнить именно блокировку, а не списание средств (sale).
  • В случаях, когда предварительно были заданы карточные платежи и для используемого проекта подключена соответствующая возможность, пользователь может выбрать для повторной попытки не только карточные платежи, но и один из методов Apple Pay или Google Pay. Эта возможность подключается по согласованию с курирующим менеджером ecommpay.
  • В случаях, когда в параметрах запроса указан один из альтернативных методов, все повторные попытки выполняются с использованием этого метода, без возможности выбора другого.
  • В случаях, когда в параметрах запроса указан токен платёжной карты, все повторные попытки выполняются с использованием этого токена, без возможности выбора другого платёжного метода или инструмента.

Число дополнительных попыток и время на их выполнение ограничиваются. Эти параметры регулируются по согласованию с курирующим менеджером ecommpay и применяются для каждого платежа в рамках проекта, для которого подключена возможность выполнения повторных попыток.

Пользовательский сценарий

Со стороны пользователя проведение оплаты с выполнением повторных попыток выглядит следующим образом:

  1. На стороне веб-сервиса мерчанта пользователь подтверждает готовность перейти к оплате.
  2. Пользователю отображается Payment Page с учётом параметров её вызова, после чего пользователь, он выполняет необходимые действия и ожидает информацию о результате оплаты.
  3. При отклонении оплаты пользователю отображается страница с предложением повторить попытку. Он соглашается и перенаправляется к шагу 2.
  4. При проведении оплаты пользователю отображается типовая итоговая страница (без предложения повторить попытку).

Особенности

При подключении повторных попыток проведения платежей необходимо учитывать следующие особенности:

  • Необходимость отображения итоговой страницы. Для поддержки возможности выполнения повторных попыток необходимо отображать пользователю итоговую страницу Payment Page. Если при работе с Payment Page применяется автоматическое перенаправление пользователя к веб-сервису (подробнее), то повторные попытки не могут использоваться.Переход к повторным попыткам выполняется с итоговой страницы Payment Page, поэтому для работы с этой возможностью не рекомендуется использовать сценарии с автоматическим возвращением пользователя к веб-сервису.
  • Поддержка индивидуального дизайна. При использовании оформления платёжной формы, реализованного не на базовой модели её интерфейса, необходимо согласовать с курирующим менеджером ecommpay добавление на итоговую страницу Payment Page дополнительного элемента — кнопки для перехода пользователя к повторным попыткам — и при необходимости предоставить соответствующий макет специалистам технической поддержки.
  • Учёт времени выполнения повторных попыток. Отсчёт времени на выполнение всех повторных попыток начинается с момента фиксации на стороне платёжной платформы первого отказа в проведении платежа и не отображается на Payment Page. Однако, если для этого же платежа ограничено время работы с Payment Page (подробнее), то пользователю отображается обратный отсчёт до завершения этого времени, а время на выполнение повторных попыток игнорируется. В любом из этих случаев, если время работы с Payment Page истекло и за это время ни одна попытка не привела к проведению платежа, то платёж отклоняется и пользователю отображается итоговая страница с соответствующим уведомлением.

Подключение

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

  1. Согласовать с курирующим менеджером ecommpay подключение этой возможности, необходимость её тестирования и применение ограничений на набор доступных платёжных методов, число дополнительных попыток и на время их выполнения. Такие ограничения действуют для каждого платежа в рамках проекта и могут настраиваться специалистами ecommpay с учётом потребностей мерчанта. Типовые значения числа попыток и времени на их выполнение составляют 5 попыток в течение 10 минут.
  2. Если была согласована необходимость тестирования, получить от специалистов ecommpay уведомление о готовности к тестированию, проверить работу платёжной формы с использованием этой возможности и сообщить о готовности к запуску.
  3. Получить от специалистов ecommpay уведомление о подключении возможности.

Схема работы

Повторные попытки проведения платежа выполняются согласно следующей схеме.

Рис.: Проведение оплаты с выполнением повторной попытки. Описание шагов

  1. Если попытка проведения оплаты не завершилась списанием или блокировкой средств, то для этой оплаты в платёжной платформе проверяется возможность выполнения повторной попытки.
  2. От платёжной платформы к веб-сервису направляется оповещение о возможности выполнения повторной попытки.
  3. От платёжной платформы к Payment Page передаются данные о возможности выполнения повторной попытки.
  4. Пользователю отображается страница с сообщением об отклонении оплаты и предложением повторить попытку.
  5. Пользователь соглашается повторить попытку и выполняет необходимые действия.
  6. Указанные пользователем данные передаются в платёжную платформу, после чего выполняется очередная попытка проведения платежа с их использованием.

При выполнении повторных попыток статус платежа может принимать следующие значения:

  • processing — при проверке возможности выполнения дополнительной попытки в случае отклонения оплаты (в процессе выполнения шага 1 на схеме), а также при получении платёжных данных от пользователя в рамках дополнительной попытки (по результатам выполнения шага 6);
  • awaiting customer — с момента выявления в платёжной платформе возможности выполнения повторной попытки (в рамках шага 1) и до момента получения данных от пользователя (по результатам выполнения шага 6) или до момента истечения времени на выполнение повторных попыток (после чего платежу присваивается итоговый статус decline);
  • success — при выполнении целевого действия (если одна из выполненных попыток привела к списанию или блокировке средств);
  • decline — в случае, если было исчерпано число дополнительных попыток или время на их выполнение и при этом ни одна из выполненных попыток не привела к списанию или блокировке средств, а также в случае, если пользователь отказался от выполнения повторной попытки.

Описание всех используемых статусов платежей представлено в разделе Модель проведения платежей.

Работа с оповещениями

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

Промежуточные оповещения. При получении информации об отклонении оплаты и выявлении возможности выполнения повторной попытки этой оплаты от платёжной платформы к веб-сервису отправляется промежуточное оповещение. К особенностям таких оповещений можно отнести наличие параметров, содержащих информацию с информацией о доступности повторных попыток (is_new_attempts_available) и оставшемся времени на их выполнение (timeout_attempts; в секундах — ss).

В промежуточных оповещениях параметр is_new_attempts_available принимает значение true, что означает одновременное выполнение следующих условий:

  • ни одна попытка ещё не привела к проведению платежа;
  • остаются доступные попытки;
  • остаётся время на выполнение повторных попыток.

В следующем примере содержится информация о том, что в рамках оплаты 100028024 доступны повторные попытки (is_new_attempts_available = true) и на их выполнение остаётся десять минут (attempts_timeout = 600).

Рис.: Пример данных из оповещения о возможности выполнения повторной попытки

{
   "project_id": 212,
   "payment": {
      "id": "100028024",
      "type": "purchase",
      "status": "awaiting customer",    // статус платежа
      "date": "2020-07-21T17:51:04+0000",
      "method": "card",
      "is_new_attempts_available": true,    // доступность повторных попыток
      "attempts_timeout": 600,    // оставшееся время
      "sum": {
         "amount": 131970,
         "currency": "USD"
      },
      "description": ""
   },
   "account": {
      "number": "431422******0056",
      "type": "visa",
      "card_holder": "JOHN DOE",
      "expiry_month": "01",
      "expiry_year": "2023"
   },
   "operation": {
      "id": 20759000013841,
      "type": "auth",
      "status": "decline",
      "date": "2020-07-21T17:51:04+0000",
      "created_date": "2020-07-21T17:20:55+0000",
      "request_id": "7ba0fb24436a717d3091f7b71007891696db6e-00020760",
      "sum_initial": {
         "amount": 131970,
         "currency": "USD"
      },
      "sum_converted": {
         "amount": 131970,
         "currency": "USD"
      },
      "code": "108",
      "provider": {
         "id": 414,
         "payment_id": "",
         "endpoint_id": 414
      }
   },
   "signature":"oXlx8QWh3OC/YOqb2ib3C5jq/lHvisceI9Lqg/tRTuwcrNmj1zQ..."
}

Итоговые оповещения. В случае, если платёж удалось провести или больше нет возможности для его проведения, со стороны платёжной платформы отправляется итоговое оповещение. В итоговых оповещениях параметр is_new_attempts_available принимает значение false, что означает выполнение одного из следующих условий:

  • по итогам последней попытки платёж был проведён;
  • пользователь отказался от дополнительной попытки;
  • все доступные попытки исчерпаны;
  • доступное время истекло.

В следующем примере содержится информация о том, что время на выполнение повторных попыток истекло и оплата отклонена.

Рис.: Пример данных из оповещения об отклонении оплаты

{
   "project_id": 212,
   "payment": {
      "id": "100028024",
      "type": "purchase",
      "status": "decline",    // статус платежа
      "date": "2020-07-21T17:51:04+0000",
      "method": "card",
      "is_new_attempts_available": false,    // доступность повторных попыток
      "attempts_timeout": 0,    // оставшееся время
      "sum": {
         "amount": 131970,
         "currency": "USD"
      },
      "description": ""
   },
   "account": {
      "number": "431422******0056",
      "type": "visa",
      "card_holder": "JOHN DOE",
      "expiry_month": "01",
      "expiry_year": "2023"
   },
   "operation": {
      "id": 20759000013841,
      "type": "auth",
      "status": "decline",
      "date": "2020-07-21T17:51:04+0000",
      "created_date": "2020-07-21T17:20:55+0000",
      "request_id": "7ba0fb24436a717d3091a2bdf7891696db6e-00020760",
      "sum_initial": {
         "amount": 131970,
         "currency": "USD"
      },
      "sum_converted": {
         "amount": 131970,
         "currency": "USD"
      },
      "code": "603",
      "message": "Auto decline",
      "provider": {
         "id": 414,
         "payment_id": "",
         "endpoint_id": 414
      }
   },
   "signature": "oXlx8QWh3OC/YOqb2ib3C5VLPksceI9Lqg/tRTuwcrNmj1zQ..."
}