Оплата
Транзакция оплаты - это одновременное сочетание авторизации и списания средств. Этот тип транзакций обычно используется когда товары или услуги могут быть немедленно предоставлены покупателю.
Info
Требуется наличие PCI DSS сертификата, чтобы использовать данную транзакцию и обрабатывать не шифрованные данные карты.
Запрос
Отправьте POST
запрос на https://gateway.pay-cross.com/transactions/payments
со следующими параметрами:
Параметр | Тип | Описание |
---|---|---|
amount * обязательный |
bigInteger | Стоимость в минимальных денежных единицах. Например, $32.45 должна быть отправлена как 3245 . |
currency * обязательный |
string | Валюта в ISO-4217 формате, например USD . |
description * обязательный |
string (255) | Описание заказа. |
tracking_id | string (255) | ID транзакции или заказа в вашей системе. Пожалуйста, используйте уникальное значение для того, чтобы при запросе статуса транзакции получить актуальную информацию. В противном случае вы получите первую найденную по tracking_id транзакцию. В параметре может быть отправлено несколько значений, разделенных символом ; . Например: "cbe59142-90af-4aea-b5a5-5bf3f66cf3da;f7883cb9-0e26-43a7-beb7-4027cb55d1a6;4a6a89d5-6950-400f" . Если в запросе было передано более одного значения tracking_id , поиск транзакции в личном кабинете может быть осуществлен по любому из них. |
expired_at | string | Время в формате ISO 8601, до которого должен быть совершен платеж. Формат: YYYY-MM-DDThh:mm:ssTZD, где YYYY – год (например, 2023), MM – месяц (например, 02), DD – день (например, 09), hh – часы (например, 18), mm – минуты (например, 20), ss – секунды (например, 45), TZD – часовой пояс (+hh:mm или –hh:mm относительно UTC). Если в указанный момент транзакция всё ещё не будет оплачена, она будет переведён в статус expired . |
duplicate_check | boolean | Параметр управляет процессом проверки входящего запроса на уникальность. Если true , то повторный запрос на оплату с таким же amount и number или token , отправленный в течение 30 секунд после первого запроса, будет отклонен. По умолчанию, этот параметр имеет значение true . |
dynamic_billing_descriptor | string | Динамический идентификатор платежа. |
language | string | Язык вашей страницы оформления заказа. Если параметр установлен и email уведомление о транзакции включено, то PayCross отправит email, язык текста которого будет language . По умолчанию - en . Доступные значения параметра language . |
notification_url | string | URL, на который будут приходить уведомления. Формат запроса уведомления аналогичен формату ответа транзакции. |
verification_url | string | URL, на который будут приходить запрос на подтверждение транзакции. Формат запроса на подтверждение аналогичен формату ответа транзакции. |
return_url * условно обязательный |
string | URL на стороне торговца, на который PayCross будет перенаправлять покупателя после возврата с 3-D Secure проверки. Параметр обязателен, если 3-D Secure включен. Обратитесь к менеджеру за информацией. |
test | boolean | Транзакция будет тестовой, если значение true . |
credit_card | object | |
number * обязательный |
string (19) | Номер карты. |
verification_value * условно обязательный |
string | 3-х или 4-х цифровой код безопасности (CVC2, CVV2 или CID, в зависимости от бренда карты). Может быть отправлен вместе с параметром token и PayCross доставит банку-эквайеру данные карты с CVC2/CVV2/CID. Обязательность параметра зависит от требований эквайера и настроек магазина. |
holder * условно обязательный |
string (35) | Имя владельца карты. Максимальная длина: 35 символов. Параметр опционален в системе PayCross, но может требоваться банком-эквайером. |
exp_month * обязательный |
string (2) | Месяц окончания срока действия карты, представленный одной или двумя цифрами (например, 01). |
exp_year * обязательный |
string (4) | Год окончания срока действия карты, представленный четырьмя цифрами (например, 2026). |
token * условно обязательный |
string | Вместо 5 параметров выше можно отправить токен карты, который был получен в ответе первой оплаты. Если используется токен карты, то необходимо обязательно указывать параметр additional_data.contract |
skip_three_d_secure_verification | boolean | Параметр используется, если вы хотите, чтобы покупатель не проходил авторизацию по протоколу 3-D Secure. Уточните у службы технической поддержки, можете ли вы использовать этот параметр. Если значение параметра - true , PayCross не применяет 3-D Secure проверку к транзакции оплаты. По умолчанию, false .Параметр force_three_d_secure_verification имеет больший приоритет, чем параметр skip_three_d_secure_verification , когда оба переданы со значением true .Значение игнорируется, если к транзакции применено правило Умной Маршрутизации с действием Force 3ds или Skip 3ds . |
force_three_d_secure_verification | boolean | Параметр используется, если вы хотите, чтобы покупатель проходил авторизацию по протоколу 3-D Secure. Уточните у службы технической поддержки, можете ли вы использовать этот параметр. Если значение параметра - true , PayCross принудительно применяет 3-D Secure проверку к транзакции оплаты. По умолчанию, установлено значение false .Параметр force_three_d_secure_verification имеет больший приоритет, чем параметр skip_three_d_secure_verification , когда оба переданы со значением true .Значение игнорируется, если к транзакции применено правило Умной Маршрутизации с действием Force 3ds или Skip 3ds . |
three_d_secure | object | Секция для настройки схемы обработки транзакций с проверкой 3-D Secure 2.0 с расширенным контролем. |
advanced | boolean | Установите значение true , чтобы обрабатывать платежи по схеме с расширенным контролем. В противном случае установите false . |
additional_data | object | Секция, содержащая дополнительную информацию о платеже. |
p2p | object | Секция для работы с AFT транзакциями. |
service_id * условно обязательный |
string | Параметр обязателен для AFT транзакций. Значение параметра уточните у вашего менеджера. |
service_extension * условно обязательный |
string | Значение параметра уточните у вашего менеджера. |
excluded_gateways | array | Массив для работы с каскадными платежами. |
masterpass | object | Секция для работы с сервисом Masterpass. |
params | object | Секция для параметров Masterpass. |
session | string | id пользовательской сессии. |
receipt_text | array | Текст, который будет добавлен в письмо покупателю. Должен быть представлен массивом строк, например, ["Первая строка", "Вторая строка"] . |
contract | array | Массив, элементами которого могут быть параметры:recurring - PayCross вернет токен карты для осуществления последующих платежей без повторного ввода реквизитов карты. Покупатель, соглашаясь с условиями регулярного списания, единожды производит оплату, вводя реквизиты карты, включая проверочный код карты CVC/CVV и проходя авторизацию по протоколу 3-D Secure;oneclick - PayCross вернет токен карты для осуществления последующих платежей по схеме oneclick, когда на странице оплаты будут уже частично заполнены реквизиты карты, а покупателю для завершения оплаты достаточно ввести проверочный код карты CVC/CVV и пройти авторизацию по протоколу 3-D Secure;credit - PayCross вернет токен карты для осуществления транзакций выплаты средств;card_on_file - PayCross вернет токен карты, чтобы сохранить ее в профиле покупателя в вашем сервисе или приложении, и использовать этот токен для последующих транзакций по снятию денег с карты за оказанные услуги или проданные товары. Ознакомьтесь ниже с секцией card_on_file , чтобы узнать, какие есть сценарии использования данного значения. Опция card_on_file в транзакции Оплата работает не со всеми эквайерами. Если вы хотите использовать card_on_file , свяжитесь со своим аккаунт менеджером. |
avs_cvc_verification | object | AVS/CVC проверка. |
card_on_file | object | Данная секция устанавливает атрибуты, связанные с хранением данных карты в профиле покупателя. Если секция не передана, то для initiator и type будут использованы значения по умолчанию. |
initiator | string | merchant - (по умолчанию) транзакция инициирована вашей системой или приложением (например, оплата за поездку в такси)customer - транзакция инициирована покупателем (например, покупатель сам нажал кнопку оплатить сохраненной картой в вашем приложении). |
type | string | Используется, только если additional_data.card_on_file.initiator имеет значение merchant . Возможные значения: delayed_charge - (по умолчанию) предоплата (например, за оказанную услугу);increment - дополнительное списание суммы (например, при допродаже товара или замене на более дорогой товар);resubmission - повторная попытка списать деньги из-за предыдущего отказа в транзакции (например, было недостаточно средств на карте);reauthorization - повторная авторизация (например, нужно перезаблокировать деньги на карте в связи с истечением срока авторизации предыдущей транзакции);no_show - списание средств в случае неявки покупателя(например, покупатель не заехал в отель). |
browser | object | Параметры браузера. Параметры из секции передаются только при использовании 3DS 2.0. |
accept_header | string | Значение HTTP-заголовка Accept запроса от браузера покупателя. |
screen_width | integer | Ширина экрана в пикселях. Соответствует параметру screen.width в JavaScript. |
screen_height | integer | Высота экрана в пикселях. Соответствует параметру screen.height в JavaScript. |
screen_color_depth | integer | Глубина цвета экрана в битах на пиксель. Соответствует параметру screen.colorDepth в JavaScript. Возможные значения: 1 - 1 bit 4 - 4 bits 8 - 8 bits 15 - 15 bits 16 - 16 bits 24 - 24 bits 32 - 32 bits 48 - 48 bits. |
window_width | integer | Размер окна браузера по горизонтали в пикселях. Соответствует параметру document.body.clientWidth в JavaScript. |
window_height | integer | Размер окна браузера по вертикали в пикселях. Соответствует параметру document.body.clientHeight в JavaScript. |
language | string | Язык навигатора. Соответствует параметру navigator.language в JavaScript. |
java_enabled | boolean | Параметр показывает, включен ли java в текущем браузере или нет. Соответствует параметру navigator.javaEnabled() в JavaScript. |
user_agent | string | Строка агента пользователя текущего браузера. Соответствует параметру navigator.userAgent в JavaScript. |
time_zone | integer | Смещение часового пояса относительно часового пояса UTC в минутах для текущей локали. Соответствует параметру new Date().getTimezoneOffset() в JavaScript. |
time_zone_name | string | Название часового пояса. Соответствует параметру Intl.DateTimeFormat().resolvedOptions().timeZone в JavaScript. |
customer * условно обязательный |
object | Секция информации о покупателе. Уточните у службы технической поддержки, необходимо ли передавать параметры данной секции. |
ip * условно обязательный |
string | IP-адрес покупателя, производящего оплату в вашем магазине. |
email * условно обязательный |
string | email покупателя, производящего оплату в вашем магазине. |
device_id * условно обязательный |
string | ID устройства покупателя, производящего оплату в вашем магазине. |
birth_date * условно обязательный |
string | Дата рождения покупателя в формате ISO 8601 YYYY-MM-DD . |
taxpayer_id * условно обязательный |
string | Идентификационный номер налогоплательщика (ИНН), присвоенный покупателю. |
billing_address | object | Секция информации об адресе покупателя. Узнайте у службы поддержки, должны ли вы отправлять параметры этой секции. |
first_name * условно обязательный |
string (30) | Имя покупателя. |
last_name * условно обязательный |
string (30) | Фамилия покупателя. |
country * условно обязательный |
string | Страна покупателя в формате ISO 3166-1 alpha-2. |
city * условно обязательный |
string (60) | Город покупателя. |
state * условно обязательный |
string | Двухбуквенная аббревиатура штата, если страна покупателя US или CA . |
zip | string | Почтовый индекс покупателя. Для country=US , формат почтового индекса должен иметь вид NNNNN или NNNNN-NNNN. |
address * условно обязательный |
string (255) | Адрес покупателя. |
phone * условно обязательный |
string (100) | Номер телефона покупателя. |
travel | object | Необязательная секция, предоставляющая расширенную информацию о продаже авиабилетов, туристических путевок и т.д. |
airline | object | Необязательная секция, содержащая расширенную информацию о проданном авиабилете. |
agency_code | string | IATA код агентства, например 03 . |
agency_name | string | Название агентства, продавшего билет, например, Coral travel . |
ticket_number | string | 14-значный номер билета. Должен содержать 3-значный код билета, 4-значный номер формы, 6-значный серийный номер и контрольное число, например 390 5241 025377 1 . |
booking_number | string | Код брони, например, DKZVUA . |
restricted_ticket_indicator | string | Если билет можно вернуть - 0 . Если вернуть нельзя - 1 . |
legs | array | Список перелетов, каждый элемент которого состоит из: |
airline_code | string | 2-символьный IATA код авиакомпании, например, B2 . |
stop_over_code | string | IATA код длительности пересадки. Если пересадка больше 24 часов, то значение параметра O или пусто. Если аэропорт является транзитным, то значение параметра X . |
flight_number | string | Номер рейса, например, A3 971 . |
departure_date_time | string | Время и дата вылета, наприме, 2024-05-26T05:15:00 . |
arrival_date_time | string | Время и дата прибытия, например, 2024-05-26T07:30:00 . |
originating_country | string | Страна вылета, например, RU . |
originating_city | string | Город вылета, например, Moscow . |
originating_airport_code | string | 3-значный код аэропорта вылета, например, DME . |
destination_country | string | Страна прилета, например, Greece . |
destination_city | string | Город прилета, например, Athens . |
destination_airport_code | string | 3-значный код аэропорта прилета, например, ATH . |
coupon | string | Номер скидочного купона, если был применен. |
class | string | Класс полета, 1-значный IATA код, например, C . |
passengers | array | Список пассажиров, каждый элемент которого состоит из: |
first_name | string | Имя пассажира, например, KONSTANTIN . |
last_name | string | Фамилия пассажира, например, IVANOV . |
Пример запроса
{
"request":{
"amount":100,
"currency":"USD",
"description":"Test transaction",
"tracking_id":"your_uniq_number",
"language":"en",
"test":true,
"billing_address":{
"first_name":"John",
"last_name":"Doe",
"country":"US",
"city":"Denver",
"state":"CO",
"zip":"96002",
"address":"1st Street"
},
"credit_card":{
"number":"4200000000000000",
"verification_value":"123",
"holder":"John Doe",
"exp_month":"05",
"exp_year":"2026"
},
"customer":{
"ip":"127.0.0.1",
"email":"[email protected]"
}
}
}
Пример запроса с токеном карты
{
"request":{
"amount":100,
"currency":"USD",
"description":"Test transaction",
"tracking_id":"your_uniq_number",
"test":true,
"billing_address":{
"first_name":"John",
"last_name":"Doe",
"country":"US",
"city":"Denver",
"state":"CO",
"zip":"96002",
"address":"1st Street"
},
"credit_card":{
"token":"40bd001563085fc35165329ea1ff5c5ecbdbbeef40bd001563085fc35165329e"
},
"customer":{
"ip":"127.0.0.1",
"email":"[email protected]"
}
}
}
Пример запроса с дополнительным текстом
{
"request":{
"amount":100,
"currency":"USD",
"description":"Test transaction",
"tracking_id":"your_uniq_number",
"language":"en",
"test":true,
"billing_address":{
"first_name":"John",
"last_name":"Doe",
"country":"US",
"city":"Denver",
"state":"CO",
"zip":"96002",
"address":"1st Street"
},
"credit_card":{
"number":"4200000000000000",
"verification_value":"123",
"holder":"John Doe",
"exp_month":"05",
"exp_year":"2026"
},
"additional_data":{
"receipt_text": ["First line", "Second Line"]
},
"customer":{
"ip":"127.0.0.1",
"email":"[email protected]"
}
}
}
Пример запроса с информацией о продаже авиабилетов и тур путевок
{
"request":{
"amount":100,
"currency":"USD",
"description":"Test transaction",
"tracking_id":"your_uniq_number",
"test":true,
"billing_address":{
"first_name":"John",
"last_name":"Doe",
"country":"US",
"city":"Denver",
"state":"CO",
"zip":"96002",
"address":"1st Street"
},
"credit_card":{
"token":"40bd001563085fc35165329ea1ff5c5ecbdbbeef40bd001563085fc35165329e"
},
"customer":{
"ip":"127.0.0.1",
"email":"[email protected]"
},
"travel": {
"airline": {
"agency_code": "03",
"agency_name": "Corel travel",
"ticket_number": "390 5241 025377 1",
"booking_number": "DKZVUA",
"restricted_ticket_indicator": "0",
"legs": [
{
"airline_code": "B2",
"stop_over_code": "X",
"flight_number": "A3 971",
"departure_date_time": "2014-05-26T05:15:00",
"arrival_date_time": "2014-05-26T07:30:00",
"originating_country": "RU",
"originating_city": "Moscow",
"originating_airport_code": "DME",
"destination_country": "Greece",
"destination_city": "Athems",
"destination_airport_code": "ATH",
"coupon": "coupon code",
"class": "C"
}
],
"passengers":[
{
"first_name": "KONSTANTIN",
"last_name": "IVANOV"
},
{
"first_name": "JULIA",
"last_name": "IVANOVA"
}
]
}
}
}
}
Ответ
Ответ будет содержать те же параметры, что и запрос, а также дополнительные параметры:
Параметр | Тип | Описание |
---|---|---|
transaction | object | |
uid * обязательный |
string | UID обработанной транзакции. |
status * обязательный |
string | Статус обработанной транзакции. |
message * обязательный |
string | Сообщение с результатом запроса. |
type * обязательный |
string | Тип транзакции. |
tracking_id * обязательный |
string | Значение параметра tracking_id из запроса. |
language * обязательный |
string | Значение параметра language из запроса или en , если параметр не был передан. |
payment_method_type * обязательный |
string | Способ оплаты, используется для завершения транзакции: credit_card . |
credit_card | object | |
brand * обязательный |
string | Определенный бренд карты. |
product * обязательный |
string | Код типа карточного продукта. |
last_4 * обязательный |
string | Последние 4 цифры карты. |
first_1 * обязательный |
string | Первая цифра карты. |
bin * обязательный |
string (6) | Шестизначный банковский идентификационный номер. Первые 6 цифр номера карты. |
bin_8 * обязательный |
string (8) | Восьмизначный банковский идентификационный номер. Первые 8 цифр номера карты. Значение возвращается для карт Visa, Mastercard, Maestro и соответствующих кобрендинговых карт. Для брендов других платежных карт значение параметра – null . |
issuer_country * обязательный |
string (2) | Страна банка, выпустившего карту в формате ISO 3166-1 alpha-2. |
issuer_name * обязательный |
string | Название банка, выпустившего карту. |
stamp * обязательный |
string | Хэш карты. Постоянная величина, даже если дата окончания действия карты или владелец изменены. |
token * обязательный |
string | Токен карты. Позволяет сохранять данные покупателей и производить оплату, когда они делают покупку или вы возобновляете свои услуги. |
token_provider * обязательный |
string | Определенный провайдер токена. Возможные значения или null . |
receipt_url * обязательный |
string | Ссылка на квитанцию обработанной транзакции. |
additional_data | object | Секция, содержащая дополнительную информацию о платеже. |
masterpass | object | Секция для работы с сервисом Masterpass. |
params | object | Секция для параметров Masterpass. |
session | string | ID пользовательской сессии. |
result | string | Результат транзакции в Masterpass. |
status | string | Статус ответа: successful , failed . |
message | string | Сообщение о результате транзакции в Masterpass, сгенерированное PayCross. |
error | string | Сообщение о причине ошибки в Masterpass, сгенерированное PayCross. Возвращается в случае ошибки. |
error_message | string | Сообщение об ошибке, сгенерированное Masterpass. Возвращается в случае ошибки. |
error_code | string | Код ошибки, сгенерированный Masterpass. Возвращается в случае ошибки. |
token | string | Токен карты в системе Masterpass. Возвращается в случае сохранения карты. |
receipt_text | array | Текст, который будет добавлен в письмо покупателю. |
payment | object | |
auth_code * обязательный |
string | Код авторизации, предоставленный эквайером. |
bank_code * обязательный |
string | Код ответа транзакции в банковской системе. |
rrn * обязательный |
string | Номер транзакции в международной платёжной системе. Id транзакции, выданный сетью обработки карт. |
ref_id * обязательный |
string | Номер транзакции в системе банка. |
message * обязательный |
string | Сообщение от системы банка. |
billing_descriptor * обязательный |
string | Идентификатор платежа, назначенный транзакции. |
status * обязательный |
string | Статус обработанной банком-эквайером транзакции. |
redirect_url * обязательный |
string | URL страницы для завершения транзакции. Если параметр status имеет значение incomplete , перенаправьте покупателя на этот URL для прохождения проверки 3-D Secure. |
code * обязательный |
string | Код обработки транзакции. |
friendly_message * обязательный |
string | Сообщение для покупателя с описанием кода ошибки из параметра code . |
avs_cvc_verification | object | Необязательный блок с результатом проверки AVS/CVC |
smart_routing_verification | object | Секция с данными о прохождении проверок транзакции сервисом Умная Маршрутизация. |
status | string | Статус обработки транзакции сервисом. |
Пример ответа
{
"transaction": {
"uid": "12803315-c061-4f8d-8f42-4abaf3f8319d",
"status": "successful",
"amount": 492,
"currency": "EUR",
"description": "Test transaction",
"type": "payment",
"payment_method_type": "credit_card",
"tracking_id": "your_uniq_number",
"message": "Successfully processed",
"test": true,
"created_at": "2024-04-02T12:47:26.818Z",
"updated_at": "2024-04-02T12:47:30.960Z",
"paid_at": "2024-04-02T12:47:30.909Z",
"expired_at": null,
"recurring_type": "initial",
"closed_at": null,
"settled_at": null,
"manually_corrected_at": null,
"language": "en",
"credit_card": {
"holder": "John Doe",
"stamp": "bb58cad9c1204ca2287b3e1006cc1a2c0fb8f062dde9e5232c8be5498bd0e62a",
"brand": "visa",
"last_4": "1097",
"first_1": "4",
"bin": "401200",
"bin_8": "40120000",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": 7,
"exp_year": 2026,
"token_provider": null,
"token": "10f43f34-5a34-430a-afd7-affe77ed5c90"
},
"receipt_url": "https://admin.pay-cross.com/customer/transactions/12803315-c061-4f8d-8f42-4abaf3f8319d/6392098201d357893deef7eb11270e863da7004ebfcd27bdb3235280e90ebf99?language=en",
"status_code": null,
"gateway": {
"iframe": true
},
"mute_notifications": null,
"id": "12803315-c061-4f8d-8f42-4abaf3f8319d",
"additional_data": {
"contract": [
"recurring"
]
},
"redirect_url": "https://gateway.pay-cross.com/process/12803315-c061-4f8d-8f42-4abaf3f8319d",
"code": "S.0000",
"friendly_message": "The operation is successful.",
"smart_routing_verification": {
"status": "successful"
},
"payment": {
"auth_code": "654321",
"bank_code": "05",
"rrn": "999",
"ref_id": "777888",
"message": "Payment was approved",
"amount": 492,
"currency": "EUR",
"billing_descriptor": "test descriptor",
"gateway_id": 3483,
"status": "successful"
},
"customer": {
"ip": null,
"email": null,
"device_id": null,
"birth_date": null
},
"billing_address": {
"first_name": "John",
"last_name": "Doe",
"address": "1st Street",
"country": "US",
"city": "Denver",
"zip": "96002",
"state": "CO",
"phone": null
}
}
}
Пример ответа в случае, если требуется 3-D Secure проверка
{
"transaction": {
"uid": "c37c2df6-707e-4e49-bc0f-1c0a1800a238",
"status": "incomplete",
"amount": 492,
"currency": "EUR",
"description": "Test transaction",
"type": "payment",
"payment_method_type": "credit_card",
"tracking_id": "your_uniq_number",
"message": null,
"test": true,
"created_at": "2024-04-02T13:44:22.590Z",
"updated_at": "2024-04-02T13:44:24.802Z",
"paid_at": null,
"expired_at": null,
"recurring_type": "initial",
"closed_at": null,
"settled_at": null,
"manually_corrected_at": null,
"language": "en",
"credit_card": {
"holder": "John Doe",
"stamp": "bb58cad9c1204ca2287b3e1006cc1a2c0fb8f062dde9e5232c8be5498bd0e62a",
"brand": "visa",
"last_4": "1097",
"first_1": "4",
"bin": "401200",
"bin_8": "40120000",
"issuer_country": null,
"issuer_name": null,
"product": null,
"exp_month": 7,
"exp_year": 2026,
"token_provider": null,
"token": "34577a72-ed65-4b0c-85a1-f62262f54af6"
},
"receipt_url": "https://admin.pay-cross.com/customer/transactions/c37c2df6-707e-4e49-bc0f-1c0a1800a238/571fddcc764f75f0daad3acb746d46a80c4112e51d43eda8538aa1b27597120e?language=en",
"status_code": null,
"gateway": {
"iframe": true
},
"mute_notifications": null,
"id": "c37c2df6-707e-4e49-bc0f-1c0a1800a238",
"additional_data": {
"contract": [
"recurring"
]
},
"redirect_url": "https://gateway.pay-cross.com/process/c37c2df6-707e-4e49-bc0f-1c0a1800a238",
"code": "P.4012",
"friendly_message": "Redirect to pass 3-D Secure verification.",
"smart_routing_verification": {
"status": "successful"
},
"three_d_secure_verification": {
"status": "incomplete",
"message": "Authentication Available",
"ve_status": "Y",
"acs_url": null,
"pa_req": null,
"md": null,
"pa_res_url": "https://gateway.pay-cross.com/process/c37c2df6-707e-4e49-bc0f-1c0a1800a238",
"eci": null,
"pa_status": null,
"xid": null,
"cavv": null,
"cavv_algorithm": null,
"fail_reason": null,
"method_process_url": null,
"creq": null
},
"payment": {
"auth_code": null,
"bank_code": null,
"rrn": null,
"ref_id": null,
"message": null,
"amount": 492,
"currency": "EUR",
"billing_descriptor": null,
"gateway_id": 3483,
"status": "incomplete"
},
"customer": {
"ip": null,
"email": null,
"device_id": null,
"birth_date": null
},
"billing_address": {
"first_name": "John",
"last_name": "Doe",
"address": "1st Street",
"country": "US",
"city": "Denver",
"zip": "96002",
"state": "CO",
"phone": null
}
}
}