Повторные попытки проведения платежей
Общая информация
При работе с Payment Page пользователю, как правило, достаточно одной попытки для проведения платежа. Но в некоторых случаях, например когда пользователь указывает реквизиты платёжной карты, на которой недостаточно средств, для проведения платежа могут потребоваться дополнительные попытки. Для работы с такими ситуациями в платёжной платформе Openpayze предусмотрена возможность выполнять повторные попытки проведения одного и того же платежа (с одним идентификатором) в рамках одного сеанса работы с Payment Page.
При работе с Payment Page поддерживается процедура выполнения повторных попыток проведения одного и того же платежа без прерывания сеанса работы с платёжной формой. В рамках процедуры в случае отклонения платежа пользователю предоставляются дополнительные попытки для его проведения, при этом количество попыток и время на их выполнение согласовываются со специалистами технической поддержки при подключении этой функциональности.
В общем случае, если возможность выполнения повторных попыток не подключена, при отклонении платежа пользователю отображается итоговая страница с сообщением об ошибке, сеанс работы с Payment Page завершается, и чтобы повторить попытку, пользователю необходимо вернуться к веб-сервису и инициировать новый платёж. Если же возможность выполнения повторных попыток подключена, при отклонении платежа на итоговой странице отображается сообщение об ошибке и предложение повторить попытку (с дополнительной кнопкой для перехода к этой попытке).
Для перехода к очередной попытке проведения платежа на итоговой странице Payment Page отображается дополнительная кнопка, по щелчку которой, пользователь перенаправляется на страницу, с которой была открыта платёжная форма. При этом следует учитывать, что все параметры, указанные в запросе на открытие Payment Page, актуальны как для первой, так и для всех последующих попыток. Так, при предварительном указании метода все попытки возможны только с использованием этого метода, а при указании токена — только с использованием этого токена. Если же такие параметры не указываются, то с каждой новой попыткой пользователь может выбирать любой из доступных методов для проведения платежа.
Поскольку для выполнения повторных попыток не требуется заново открывать платёжную форму, все параметры, указанные в запросе на открытие Payment Page, актуальны как для первой, так и для всех последующих попыток. Это касается в том числе и предварительного выбора платёжных методов и групп методов.
Число дополнительных попыток и время на их выполнение ограничиваются. Эти параметры регулируются по согласованию с курирующим менеджером Openpayze и применяются для каждого платежа в рамках проекта, для которого подключена возможность выполнения повторных попыток.
Пользовательский сценарий
Со стороны пользователя проведение оплаты с выполнением повторных попыток выглядит следующим образом:
- На стороне веб-сервиса мерчанта пользователь подтверждает готовность перейти к оплате.
- Пользователю отображается Payment Page с учётом параметров её вызова, после чего пользователь, он выполняет необходимые действия и ожидает информацию о результате оплаты.
- При отклонении оплаты пользователю отображается страница с предложением повторить попытку. Он соглашается и перенаправляется к шагу 2.
- При проведении оплаты пользователю отображается типовая итоговая страница (без предложения повторить попытку).
Особенности
При подключении повторных попыток проведения платежей необходимо учитывать следующие особенности:
- Необходимость отображения итоговой страницы. Для поддержки возможности выполнения повторных попыток необходимо отображать пользователю итоговую страницу Payment Page. Если при работе с Payment Page применяется автоматическое перенаправление пользователя к веб-сервису (подробнее), то повторные попытки не могут использоваться.Переход к повторным попыткам выполняется с итоговой страницы Payment Page, поэтому для работы с этой возможностью не рекомендуется использовать сценарии с автоматическим возвращением пользователя к веб-сервису.
- Учёт времени выполнения повторных попыток. Отсчёт времени на выполнение всех повторных попыток начинается с момента фиксации на стороне платёжной платформы первого отказа в проведении платежа и не отображается на Payment Page. Однако, если для этого же платежа ограничено время работы с Payment Page (подробнее), то пользователю отображается обратный отсчёт до завершения этого времени, а время на выполнение повторных попыток игнорируется. В любом из этих случаев, если время работы с Payment Page истекло и за это время ни одна попытка не привела к проведению платежа, то платёж отклоняется и пользователю отображается итоговая страница с соответствующим уведомлением.
Подключение
Чтобы подключить возможность повторного проведения платежей, со стороны мерчанта необходимо:
- Согласовать с курирующим менеджером Openpayze подключение этой возможности, необходимость её тестирования и применение ограничений на набор доступных платёжных методов, число дополнительных попыток и на время их выполнения. Такие ограничения действуют для каждого платежа в рамках проекта и могут настраиваться специалистами Openpayze с учётом потребностей мерчанта. Типовые значения числа попыток и времени на их выполнение составляют 5 попыток в течение 10 минут.
- Если была согласована необходимость тестирования, получить от специалистов Openpayze уведомление о готовности к тестированию, проверить работу платёжной формы с использованием этой возможности и сообщить о готовности к запуску.
- Получить от специалистов Openpayze уведомление о подключении возможности.
Схема работы
Повторные попытки проведения платежа выполняются согласно следующей схеме.
- Если попытка проведения оплаты не завершилась списанием или блокировкой средств, то для этой оплаты в платёжной платформе проверяется возможность выполнения повторной попытки.
- От платёжной платформы к веб-сервису направляется оповещение о возможности выполнения повторной попытки.
- От платёжной платформы к Payment Page передаются данные о возможности выполнения повторной попытки.
- Пользователю отображается страница с сообщением об отклонении оплаты и предложением повторить попытку.
- Пользователь соглашается повторить попытку и выполняет необходимые действия.
- Указанные пользователем данные передаются в платёжную платформу, после чего выполняется очередная попытка проведения платежа с их использованием.
При выполнении повторных попыток статус платежа может принимать следующие значения:
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": 200,
"payment": {
"id": "abc67890",
"type": "purchase",
"status": "awaiting customer", // статус платежа
"date": "2022-03-20T14:22:07+0000",
"method": "Greek Banks",
"is_new_attempts_available": true, // доступность повторных попыток
"attempts_timeout": 600, // оставшееся время
"sum": {
"amount": 1000,
"currency": "EUR"
}
},
"customer": {
"id": "123"
},
"operation": {
"id": 9529253065608,
"type": "sale",
"status": "decline",
"date": "2022-03-20T14:22:07+0000",
"created_date": "2022-03-20T14:22:00+0000",
"request_id": "f1de353331a01fd14163fe4226-00009531",
"sum_initial": {
"amount": 1000,
"currency": "EUR"
},
"sum_converted": {
"amount": 1000,
"currency": "EUR"
},
"code": "20000",
"provider": {
"id": 1914,
"payment_id": "",
"auth_code": ""
}
},
"signature": "giRT+RB/rG5JrSMjb/...DaHDxz+JukI2+7HhMivM2mbhQ=="
}
Итоговые оповещения. В случае, если платёж удалось провести или больше нет возможности для его проведения, со стороны платёжной платформы отправляется итоговое оповещение. В итоговых оповещениях параметр is_new_attempts_available принимает значение false, что означает выполнение одного из следующих условий:
- по итогам последней попытки платёж был проведён;
- пользователь отказался от дополнительной попытки;
- все доступные попытки исчерпаны;
- доступное время истекло.
В следующем примере содержится информация о том, что время на выполнение повторных попыток истекло и оплата отклонена.
{
"project_id": 200,
"payment": {
"id": "abc67890",
"type": "purchase",
"status": "decline", // статус платежа
"date": "2022-03-20T14:22:07+0000",
"method": "Greek Banks",
"is_new_attempts_available": false, // доступность повторных попыток
"attempts_timeout": 0, // оставшееся время
"sum": {
"amount": 1000,
"currency": "EUR"
},
"description": "Decline"
},
"customer": {
"id": "123"
},
"operation": {
"id": 9529253065608,
"type": "sale",
"status": "decline",
"date": "2022-03-20T14:22:07+0000",
"created_date": "2022-03-20T14:22:00+0000",
"request_id": "f1de353331a01fd14163fe4226-00009531",
"sum_initial": {
"amount": 1000,
"currency": "EUR"
},
"sum_converted": {
"amount": 1000,
"currency": "EUR"
},
"code": "20000",
"provider": {
"id": 1914,
"payment_id": "",
"auth_code": ""
}
},
"signature": "giRT+RB/rG5JrSMjb/...DaHDxz+JukI2+7HhMivM2mbhQ=="
}