Получение информации о состоянии платежа
Обзор
При работе с платёжной платформой ecommpay получать актуальную информацию о состоянии платежей можно разными способами: через интерфейс Dashboard, а также на программном уровне — через оповещения, автоматически отправляемые в заданных случаях (подробнее — в разделе Оповещения), и ответы на запросы о состоянии платежа. Такие запросы можно отправлять при любой необходимости — например, для проверки статуса оплаты через платёжный терминал, когда проведение платежа может занимать не один день, — но не ранее, чем через 10 секунд после отправки запроса на проведение платежа.
Получать информацию о платеже на программном уровне можно следующими способами:
- По идентификатору платежа.Этот способ может быть актуален в случаях, когда запрос на проведение платежа был принят и платёж был зарегистрирован в платформе. В таких случаях ответы содержат основную информацию о платеже, а в случаях, когда запрос на проведение платежа ещё не принят (например при вызове платёжной формы Payment Page и её закрытии пользователем до подтверждения оплаты) — информацию о том, что такой платёж не был зарегистрирован в платформе.
- По идентификатору запроса на проведение платежа. Этот способ может быть актуален в случаях, когда запрос на проведение платежа не был принят из-за ошибок в запросе. В таких случаях ответы содержат информацию о выявленных ошибках. Получать информацию о платеже после принятия запроса на его проведение предпочтительнее по идентификатору платежа.
Запрос о состоянии платежа выполняется в рамках синхронной схемы взаимодействия между веб-сервисом и платёжной платформой. Это означает, что запрос полностью выполняется на стороне платёжной платформы в течение одного HTTP-сеанса, а в ответе на корректно составленный запрос содержится HTTP-код ответа (200
) и запрошенная информация без указания статуса запроса. В случаях, если запрос некорректен или с его приёмом и обработкой возникли проблемы, в ответе на запрос содержатся HTTP-код ответа, статус обработки запроса error
и описание причины обнаруженной ошибки. Информация об HTTP-кодах ответов представлена в разделе Организация взаимодействия, а о кодах ошибок, используемых в платёжной платформе — в разделе Информация об операциях.
Получение информации по идентификатору платежа
Формат запроса
Формат запроса на получение информации о состоянии платежа по его идентификатору соответствует описанному в разделе Организация взаимодействия, конечной точкой API для этого запроса выступает /v2/payment/status, а в теле запроса должен содержаться объект general
с основными идентификационными сведениями:
project_id
— идентификатор проекта, полученный от ecommpay при интеграции;payment_id
— идентификатор платежа, информацию о состоянии которого необходимо получить;signature
— подпись запроса, составленная на основе вышеуказанных параметров (подробнее — в разделе Работа с подписью).
Формат ответа
Формат ответа на запрос о состоянии платежа соответствует описанному в разделе Организация взаимодействия. В заголовке целевого ответа содержится стартовая строка с указанием протокола и его версии (HTTP/1.1
), кода ответа и поясняющей фразы к этому коду (200 OK
). В теле такого ответа содержатся:
- идентификатор проекта и подпись;
- информация о статусе платежа и обо всех инициированных в рамках этого платежа операциях;
- дополнительная информация, состав которой может варьироваться в зависимости от используемого платёжного метода и может настраиваться для разных методов по согласованию со специалистами технической поддержки.
Базовый набор сведений, передаваемых в ответ на запрос о состоянии платежа, указан в спецификации Gate API.
Примеры ответов
Далее представлен пример данных о проведённой двухстадийной оплате. В этом примере указаны:
- код ответа о том, что запрос был успешно принят (
200
); - статус платежа (
success
); - код используемого платёжного метода (
card
); - сведения об операциях
auth
иcapture
в массивеoperations
.
В представленном далее примере данных о незавершённой одностадийной оплате содержится следующая информация:
- код ответа о том, что запрос был успешно принят (
200
); - статус платежа (
awaiting redirect result
); - код используемого платёжного метода (Malaysian Banks);
- сведения об операции
sale
в массивеoperations
.
Далее представлен пример ответа на некорректно составленный запрос. Если в запросе обнаружена ошибка, то в ответе указывается следующее:
- код ответа с описанием причины ошибки в стартовой строке (
400 Bad Request
); - статус обработки запроса (
error
); - уточняющая информация об ошибке: код ошибки (
2004
) и поясняющее описание к нему (Required field not provided
).
Для сравнения далее представлен пример ответа с информацией об отклонении платежа. В этом примере указаны:
- код ответа о том, что запрос был успешно принят (
200
); - статус платежа (
decline
); - сведения об операции
sale
, которые включают код ошибки при выполнении операции (20502
) и поясняющее описание к нему (Error during operation validation
).
Далее представлен пример ответа на запрос о состоянии такого платежа, запрос на инициирование которого не был принят в платёжной платформе (например, когда пользователь закрыл платёжную форму до подтверждения оплаты). В этом случае в ответе содержатся:
- код ответа о том, что запрос был успешно принят (
200
); - статус платежа (
error
); - уточняющая информация об ошибке: код ошибки (
3061
) и описание к нему (Transaction not found
).
Получение информации по идентификатору запроса
Формат запроса
Формат запроса на получение информации о состоянии платежа по идентификатору запроса на его проведение соответствует описанному в разделе Организация взаимодействия, конечной точкой API для этого запроса выступает /v2/payment/status/request, а в теле запроса должны содержаться следующие сведения:
project_id
— идентификатор проекта, полученный от ecommpay при интеграции;request_id
— идентификатор запроса на проведение платежа, информацию о состоянии которого необходимо получить, полученный в ответе от платёжной платформы;signature
— подпись запроса, составленная на основе вышеуказанных параметров (подробнее — в разделе Работа с подписью).
Формат ответа
Формат ответа на запрос о состоянии платежа соответствует описанному в разделе Организация взаимодействия. В заголовке ответа на успешно принятый запрос содержится стартовая строка с указанием протокола и его версии (HTTP/1.1
), кода ответа и поясняющей фразы к коду (200 OK
), а в теле такого ответа содержится информация о целевом платеже: набор сведений о платеже и инициированных при его проведении операциях либо информация об ошибках в запросе на проведение этого платежа.