Прямые платежи
Общее описание
При платеже напрямую интернет-магазин имеет собственную платежную страницу для сбора данных карты непосредственно через свой веб-сайт.
Если вы собираете данные карты на своей стороне и не хотите, чтобы они присутствовали на вашем сервере, вам следует использовать seToken (Self Encrypted Token) — самоподписанный токен, используемый для безопасной передачи данных карты. Если вы используете seToken, соответствие PCI DSS не требуется.
Обратите внимание, что seToken может быть сгенерирован с помощью SDK.
Нажмите здесь, чтобы получить дополнительную информацию о seToken.
Схема интеграции
- Клиент выбирает продукт в интернет-магазине и нажимает на кнопку Купить.
- Сервер Интернет-магазина получает запрос на покупку и открывает платежную страницу.
- Покупатель вводит данные своей карты на платежной странице интернет-магазина.
- Сервер интернет-магазина собирает данные карты.
-
Сервер интернет-магазина запрашивает регистрацию заказа, отправляя вызов API register.do. Этот запрос должен содержать параметр
amount
– сумму платежа в минимальных единицах валюты и параметрreturnUrl
– адрес, на который будет перенаправлен клиент после успешной оплаты на Шаге 9 (дополнительная информация о перенаправлении доступна здесь). В ответ платежный шлюз отправляетorderId
- уникальный номер заказа в системе платежного шлюза.Пример запроса на регистрацию заказа:
curl --request POST \ --url https://abby.rbsuat.com/payment/rest/register.do \ --header 'content-type: application/x-www-form-urlencoded' \ --data amount=2000 \ --data currency=933 \ --data userName=test_user \ --data password=test_user_password \ --data returnUrl=finish.html \ --data description=my_first_order \ --data language=en
Пример ответа на регистрацию заказа:
{ "orderId": "0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0", "formUrl": "https://abby.rbsuat.com/payment/merchants/pay/payment_en.html?mdOrder=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0" }
Также вы можете удерживать сумму на счете до списания средств с помощью вызова registerPreAuth.do. Чтобы узнать больше о холдировании и завершении, нажмите здесь.
Оплата. Затем интернет-магазин передает данные карты для оплаты заказа, отправляя API-вызов paymentorder.do платежному шлюзу. Этот запрос содержит параметр
MDORDER
— уникальный номер заказа в системе платежного шлюза, возвращаемый в ответе наregister.do
.Пример запроса оплаты заказа:
curl --request POST \ --url https://abby.rbsuat.com/payment/rest/paymentorder.do \ --header 'content-type: application/x-www-form-urlencoded' \ --data userName=test_user \ --data password=test_user_password \ --data MDORDER=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0 \ --data '$PAN=4000001111111118' \ --data '$CVC=123' \ --data YYYY=2030 \ --data MM=12 \ --data 'TEXT=TEST CARDHOLDER' \ --data 'ip=185.230.240.201' \ --data language=en
Пример ответа на запрос оплаты заказа:
{ "info": "Your order is proceeded, redirecting...", "errorCode": 0, "acsUrl": "https://web.payuat.com/acs/auth/start.do", "paReq": "eJxVUtFu4jAQ/BWU92DHcSCpFle946ryAEd7FKl9OZl4gbSNA05ypP36s0NSWsmSd8br3fGO4brJ3wb/0JRZoSdeMKTeAHVaqEzvJt7j6taPvWsBq71BnP7BtDYoYI5lKXc4yNTEG48kj5KN8jfxOPH5NqZ+kiTURxYlSEMaxtvUE7C8ecCjgK6RsH2GDEgPbUWT7qWuBMj0+GO2EJyNR5QC6SDkaGZTEfGQhRzIGYGWOYpSarUpmr95VwJIS0Na1Loy72LEQyA9gNq8iX1VHa4IqbCshmmRA3EkkIuGZe2i0hZpMiUWH/en39NZs3j5xearHZ+vnk6LD7tPnyZAXAYoWaFglAWUB8mAjq/simIgLQ8yd93tefugM4CD63Hz9eQrA3bQxvrQy+8RYHMoNLo7QD5jeHDGCNgaPNZtXgTkAgC1OmdYiZwGNLB3ewpIv19e/fPO+ZBWdsYvxamWr6rcnNaqWMuQrbF+zqLlXbQ7OHfaJKcqs9NlPDjLcgCIK0M640n3Z2z07S/9Bypv08k=", "termUrl": "https://abby.rbsuat.com/payment/rest/finish3ds.do?lang=en" }
Кроме того, вы можете использовать методы API для прямых платежей через Apple Pay, Samsung Pay или Google Pay.
Узнайте больше о токенизированных платежах здесь.
-
Если требуется 3-D Secure (параметр
acsUrl
возвращается на Шаг 5), платежный шлюз связывается с Directory Server, чтобы получить доступ к ACS. Он возвращает все данные, необходимые для перенаправления из ACS в интернет-магазин.Если 3-D Secure не используется, Шаги 7–9 пропускаются, а клиент перенаправляется на страницу подтверждения платежа (Шаг 10). Параметр
redirect
в этом случае игнорируется, так как интернет-магазин использует собственную страницу подтверждения оплаты.
-
Сервер интернет-магазина запрашивает упрощенную переадресацию покупателя в ACS, отправляя вызов API acsRedirect.do платежному шлюзу. В запросе используется параметр
orderId
(полученный на Шагe 5).Пример запроса:
https://abby.rbsuat.com/payment/acsRedirect.do?orderId=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0
Также возможно перенаправление клиента на ACS с помощью POST-запроса (обычный редирект). Описание этого способа доступно здесь.
Платежный шлюз перенаправляет клиента в ACS.
Держатель карты подтверждает заказ и ACS перенаправляет его в платежный шлюз.
-
Покупатель возвращается на страницу интернет-магазина (по адресу, указанному при оформлении заказа на Шаге 5) или закрывает страницу.
Пример URL-редиректа:
https://mybestmerchantreturnurl.com/?orderId=0179018d-8f96-7fbe-bc2b-4b7e00a7d8c0&lang=en
Платежный шлюз асинхронно отправляет уведомление обратного вызова на сервер интернет-магазина (если эта возможность включена).
-
(Необязательно) Интернет-магазин отправляет запрос getOrderStatusExtended.do платежному шлюзу, чтобы проверить статус заказа и убедиться, что заказ действительно оплачен. Запрос содержит параметр
orderId
, полученный на Шагe 5. В ответ платежный шлюз возвращает статус заказа в параметреorderStatus
. Статус2
означает успешный платеж, статус1
означает успешную предварительную авторизацию для двухэтапных платежей (в этом случае производится холдирование средств). Дополнительно возвращается параметрactionCode
- он содержит код ответа процессинга банка. См. список кодов ответа здесь.Дополнительные сведения см. в разделе Получение статуса заказа.