Перейти к содержанию

P2P-переводы

Функциональность P2P-переводов - это перевод денежных средств с одной карты на другую.

Технически на стороне платежных систем схема переводов реализована в два этапа.

  • Этап 1: списание денежных средств с карты-источника,
  • Этап 2: пополнение карты-приёмника.

Интерфейс переводов, предлагаемый eComCharge, позволяет реализовать P2P-перевод в один шаг посредством выполнения P2P-операции.

При выполнении перевода с покупателя (владельца карты-источника) будет удержана комиссия, которая прописана в вашем договоре на P2P-перевод. Таким образом, при совершении перевода в поле суммы amount указывается сумма к перечислению на карту-приемник. Комиссия за выполнение перевода удерживается с карты-источника.

Info

Для P2P-перевода операция возврата невозможна.


Требования

При совершении перевода с карты на карту должны выполнятся следующие требования, установленные платежными системами:

  1. Обязательная проверка карты-источника с использованием технологии 3-D Secure.
  2. Обязательный ввод CVV2/CVC2 кода для карты-источника.
  3. Наличие PCI DSS сертификата для использования данного API и обработки нешифрованных данных карты.

Info

Для быстрого запуска сервиса P2P-переводов eComCharge предлагает cтраницу P2P-переводов.

Разместите https://checkout.ecomcharge.com/p2p/?public_key=:SHOP_PUBLIC_KEY, где public_key - это данные вашего публичного ключа, на ваших ресурсах и запустите собственный сервис P2P-переводов.


Проверка возможности P2P-перевода

До осуществления P2P-перевода необходимо проверить возможности такого перевода между картой-источником и картой-приёмником, а также получить информации о комиссии и иные дополнительно запрашиваемые данные о карте-источнике или карте-приёмнике.

Отправьте один из POST запросов:

авторизация по секретному ключу

Все запросы осуществляются с авторизацией типа Basic с ID и Secret key магазина как имя пользователя и пароль соответственно на https://processing.ecomcharge.com/p2p-restrictions

авторизация по публичному ключу в синхронном режиме

Все запросы осуществляются с Bearer авторизацией по публичному ключу c обязательной передачей заголовка X-Api-Version в значении 2 на https://checkout.ecomcharge.com/ctp/api/verify-p2p

авторизация по публичному ключу в асинхронном режиме

При авторизации в синхронном режиме, осуществляется отправка запроса и получение ответа со всеми параметрами.

При авторизации в асинхронном режиме, необходимо отправить запрос (параметры такие же, как и для синхронного запроса) на асинхронный URL и в ответе получить статус задачи new и job_id.

Все запросы осуществляются с Bearer авторизацией по публичному ключу c обязательной передачей заголовка X-Api-Version в значении 2 на https://checkout.ecomcharge.com/ctp/api/async/verify-p2p

Пример ответа со статусом задачи new и job_id
{
  "status": "new",
  "job_id": "62c5b51a1d69bde6e5afaa70"
}

Получение статуса асинхронной задачи

Для получения статуса задачи отправьте GET запрос на https://checkout.ecomcharge.com/ctp/api/async/jobs/job_id, где job_id как идентификатор задачи имеет формат 62c5b51a1d69bde6e5afaa70.

Пример ответа для задачи со статусом new
{
  "status": "new",
  "job_id": "62c5b51a1d69bde6e5afaa70"
}
Пример ответа для задачи со статусом failed
{
    "job_id": "62c5b51a1d69bde6e5afaa70",
    "status": "failed",
    "response": {
        "status": "error",
        "errors": [
            "error"
        ],
        "message": "Request processing error. Please try again later",
        "finished": false
    }
}
Пример ответа для задачи со статусом done
{
  "status": "done",
  "job_id": "62c5b51a1d69bde6e5afaa70",
  "response": {
    //Параметры стандартного ответа
  }
}

Запрос

Параметр Тип Описание
request object
amount * обязательный
integer Сумма перевода, которая должна быть зачислена на карту-приёмник, в минимальных денежных единицах. Например, сумма 32.45 USD должна быть отправлена как 3245.
currency * обязательный
string Валюта перевода в ISO-4217 формате, например USD.
credit_card object Можно использовать шифрование на стороне клиента.
number * обязательный
string Номер карты-источника.
exp_month * условно обязательный
integer Месяц окончания срока действия карты, представленный двумя цифрами (например, 01).
exp_year * условно обязательный
integer Год срока окончания действия карты, представленный четырьмя цифрами (например, 2026).
verification_value * условно обязательный
string 3-х или 4-х цифровой код безопасности (CVC2, CVV2 или CID, в зависимости от бренда карты).
token * условно обязательный
string Токен карты-источника вместо номера карты-источника.
recipient_card object Можно использовать шифрование на стороне клиента.
number * обязательный
string Номер карты-приёмника.
exp_month * условно обязательный
integer Месяц окончания срока действия карты, представленный двумя цифрами.
exp_year * условно обязательный
integer Год срока окончания действия карты, представленный четырьмя цифрами.
token * условно обязательный
string Токен карты-приёмника вместо номера карты-приёмника.
test boolean true - выполнить проверку возможности P2P-перевода между тестовыми картами.
additional_data object Секция, содержащая дополнительную информацию.
p2p object Секция, содержащая дополнительную информацию о переводе.
type string Код типа операции перевода, выданный процессинговым центром, длинной 3 символа в alphanumeric формате.
Пример запроса
{
  "request": {
    "amount": 100,
    "currency": "USD",
    "credit_card": {
      "number": "4012001037141112"
    },
    "recipient_card": {
      "number": "4200000000000000"
    },
    "test": true
  }
}

Ответ

Если перевод возможен, то ответ будет содержать следующие параметры:

Параметр Тип Описание
status * обязательный
string successful
message * обязательный
string Сообщение от системы банка.
commission object
minimum * обязательный
float Минимальная сумма комиссии, которая будет снята с карты-источника.
percent * обязательный
float Процент комиссии, которая будет снята с карты-источника.
bank_fee * обязательный
float Абсолютная величина комиссии, рассчитанная процессингом банка.
currency * обязательный
string Валюта комиссии в ISO-4217 формате, например USD.
test boolean true - выполнить проверку возможности P2P-перевода между тестовыми картами.
Пример JSON-ответа для возможного перевода
{
  "status": "successful",
  "message": "p2p is allowed",
  "commission": {
    "minimum": 0.7,
    "percent": 1.5,
    "bank_fee": 7.35,
    "currency": "USD"
  }
}

Если перевод не возможен, то ответ будет содержать следующие параметры:

Параметр Тип Описание
status * обязательный
string failed
message * обязательный
string Сообщение от системы банка.
required_fields object Если секция была получена в ответе, то комиссия за перевод не расчитывается.
credit_card array Массив параметров, которые должны быть запрошены о карте-источнике. Возможные элементы массива: holder, verification_value, exp_month, exp_year.
recipient_card array Массив параметров, которые должны быть запрошены дополнительно о карте-приёмнике. Возможные элементы массива: holder, exp_month, exp_year.
Пример JSON-ответа, если перевод невозможен
{
  "status": "failed",
  "message": "Missed credit card fields: holder.Missed recipient card fields: holder.",
  "required_fields": {
    "credit_card": [
      "holder"
    ],
    "recipient_card": [
      "holder"
    ]
  }
}

Если произошла ошибка, то ответ будет содержать следующие параметры:

Параметр Тип Описание
error_code * обязательный
string Код ошибки.
message * обязательный
string Текстовое описание ошибки.
errors * обязательный
object Объекты параметров, в которых возникли ошибки.
Пример JSON-ответа при ошибке
{
  "error_code": "invalid_params",
  "message": "Unprocessable entity",
  "errors": {
    "amount": [
      "must be an integer"
    ],
    "currency": [
      "is unknown ISO 4217 Alpha-3 code"
    ],
    "credit_card": {
      "number": [
        "is not a card number"
      ]
    },
    "recipient_card": {
      "number": [
        "is not a card number"
      ]
    }
  }
}

Осуществление P2P-перевода

Для осуществления P2P-перевода посредством eComCharge API необходимо отправить один из HTTP POST запросов:

авторизация по секретному ключу

Все запросы осуществляются с авторизацией типа Basic с ID и Secret key магазина как имя пользователя и пароль соответственно на https://processing.ecomcharge.com/transactions/p2ps.

авторизация по публичному ключу в синхронном режиме

Все запросы осуществляются с Bearer авторизацией по публичному ключу c обязательной передачей заголовка X-Api-Version в значении 2 на https://checkout.ecomcharge.com/ctp/api/p2p.

авторизация по публичному ключу в асинхронном режиме

При авторизации в синхронном режиме, осуществляется отправка запроса и получение ответа со всеми параметрами.

При авторизации в асинхронном режиме, необходимо отправить запрос (параметры такие же, как и для синхронного запроса) на асинхронный URL и в ответе получить статус задачи new и job_id.

Все запросы осуществляются с Bearer авторизацией по публичному ключу c обязательной передачей заголовка X-Api-Version в значении 2 на https://checkout.ecomcharge.com/ctp/api/async/p2p.

Пример ответа со статусом задачи new и job_id
{
  "status": "new",
  "job_id": "62c5b51a1d69bde6e5afaa70"
}

Получение статуса асинхронной задачи

Для получения статуса задачи отправьте HTTP GET запрос на https://checkout.ecomcharge.com/ctp/api/async/jobs/job_id, где job_id имеет формат 62c5b51a1d69bde6e5afaa70.

Ответы для статусов задач (new, failed, done) такие же как ответы, описанные в разделе Получение статуса асинхронной задачи.

Запрос

Параметр Тип Описание
request object
amount integer Сумма перевода, которая должна быть зачислена на карту-приёмник, в минимальных денежных единицах. Например, сумма 32.45 USD должна быть отправлена как 3245.
currency string Валюта перевода в ISO-4217 формате, например USD.
description string Описание перевода.
expired_at string Время в формате ISO 8601 YYYY-MM-DDThh:mm:ssTZD, до которого должен быть подтвержден перевод.
tracking_id string ID перевода в вашей системе. Используйте уникальное значение для того, чтобы при запросе статуса транзакции получить актуальную информацию. В противном случае вы получите первую найденную по tracking_id транзакцию.
duplicate_check boolean Параметр управляет процессом проверки входящего запроса на уникальность. Если в течение 30 секунд придет запрос на оплату с одинаковыми amount и number или token, то запрос будет отклонен. По умолчанию, этот параметр имеет значение true.
language string Язык вашей страницы оформления заказа. Если параметр установлен и email уведомление о транзакции включено, то eComCharge отправит email, язык текста которого будет language. По умолчанию - en. Доступные значения параметра language.
notification_url string URL, на который будут приходить уведомления. Формат запроса уведомления аналогичен формату ответа транзакции.
return_url string URL, на который eComCharge будет перенаправлять отправителя перевода после возврата с 3-D Secure проверки для завершения P2P перевода.
test boolean true - выполнить проверку возможности P2P перевода между тестовыми картами.
credit_card object Можно использовать шифрование на стороне клиента.
number string Номер карты-источника.
verification_value string 3-х или 4-х цифровой код безопасности (CVC2, CVV2 или CID, в зависимости от бренда карты).
Может быть отправлен вместе с параметром token и eComCharge доставит банку-эквайеру данные карты с CVC2/CVV2/CID.
holder * условно обязательный
string Имя владельца карты-источника.
exp_month integer Месяц окончания срока действия карты-источника, представленный двумя цифрами (например, 01).
exp_year integer Год срока окончания действия карты-источника, представленный четырьмя цифрами (например, 2026).
token * условно обязательный
string Вместо 5 параметров выше вы можете отправить токен карты-источника, который вы получили в ответе первого перевода.
recipient_card object Можно использовать шифрование на стороне клиента.
number string Номер карты-приёмника.
holder * условно обязательный
string Имя владельца карты-приёмника.
exp_month * условно обязательный
integer Месяц окончания срока действия карты-приёмника, представленный двумя цифрами (например, 01).
exp_year * условно обязательный
integer Год срока окончания действия карты-приёмника, представленный четырьмя цифрами (например, 2026).
token string вместо 5 параметров выше вы можете отправить токен карты-приёмника, который вы получили в ответе первого перевода.
additional_data object Секция, содержащая дополнительную информацию.
receipt_text array Текст, который будет добавлен в письмо клиенту. Должен быть представлен как массив строк, например ["Первая строка", "Вторая строка"].
contract array Элементами массива могут быть параметры:

oneclick - eComCharge вернет токен карты для осуществления последующих платежей по схеме oneclick, когда на странице перевода будут уже частично заполнены реквизиты карты, а пользователю для завершения оплаты достаточно ввести проверочный код карты CVC/CVV и пройти авторизацию по протоколу 3-D ­Secure.
p2p object Секция, содержащая дополнительную информацию о переводе.
type string код типа операции перевода, выданный процессинговым центром, длинной 3 символа в alphanumeric формате.
customer object Секция информации о покупателе.
ip string IP-адрес отправителя перевода.
email string email отправителя перевода.
device_id string ID устройства отправителя перевода.
sender_billing_address object
first_name string Имя отправителя перевода.
last_name string Фамилия отправителя перевода.
country string Страна отправителя перевода в ISO 3166-1 alpha-2 формате.
city string Город отправителя перевода.
state string Двухбуквенная абревиатура штата отправителя перевода, если страна отправителя перевода US или CA.
zip string Почтовый индекс отправителя перевода. Для country=US, формат zip должен иметь вид NNNNN или NNNNN-NNNN.
address string Адрес отправителя перевода.
phone string Номер телефона отправителя перевода.
recipient_billing_address object
first_name string Имя получателя перевода.
last_name string Фамилия получателя перевода.
country string Страна получателя перевода в ISO 3166-1 alpha-2 формате.
city string Город получателя перевода.
state string Двухбуквенная абревиатура штата получателя перевода, если страна получателя перевода US или CA.
zip string Почтовый индекс получателя перевода. Для country=US, формат zip должен иметь вид NNNNN или NNNNN-NNNN.
address string Адрес получателя перевода.
phone string Номер телефона получателя перевода.
billing_address object cекция billing_adress оставлена для сохранения совместимости с предыдущей версией API. Если разрабатывается новая интеграция - использовать секции sender_billing_adress и recipient_billing_adress.
first_name string Имя отправителя перевода.
last_name string Фамилия отправителя перевода.
country string Страна отправителя перевода в формате ISO 3166-1 alpha-2.
city string Город отправителя перевода.
state string Двухбуквенная абревиатура штата отправителя перевода, если страна отправителя перевода US или CA.
zip string Почтовый индекс отправителя перевода. Для country=US, формат zip должен иметь вид NNNNN или NNNNN-NNNN.
address string Адрес отправителя перевода.
phone string Номер телефона отправителя перевода.
Пример JSON-запроса
{
  "request": {
    "test": false,
    "amount": 100,
    "currency": "EUR",
    "description": "Test transaction ütf",
    "tracking_id": "tracking_id_000",
    "billing_address": {
      "phone": "123"
    },
    "credit_card": {
      "number": "2012001037140165",
      "verification_value": "123",
      "exp_month": "01",
      "exp_year": "2026",
      "holder": "John Doe"
    },
    "recipient_card": {
      "number": "2019001037140165",
      "holder": "Mary Doe"
    },
    "customer": {
      "ip": "127.0.0.1",
      "device_id": "12312312321fff67",
      "email": "jahn_test@mial.com"
    },
    "sender_billing_address": {
      "first_name": "Mary",
      "last_name": "Smith",
      "country": "BY",
      "city": "Minsk",
      "address": "Gilbert 104"
    },
    "recipient_billing_address": {
      "first_name": "Jane",
      "last_name": "Smith",
      "country": "BY",
      "city": "Minsk",
      "address": "Gilbert 104"
    }
  }
}

Ответ

Параметры ответа копируют параметры запроса с небольшим количеством специфичных ответу данных:

Параметр Тип Описание
transaction object
uid string UID обработанной транзакции.
status string статус перевода.
amount integer Сумма перевода, которая зачислена на карту-приёмник, в минимальных денежных единицах.
currency string Валюта перевода в ISO-4217 формате, например USD.
description string Описание перевода.
type string p2p
payment_method_type string credit_card
tracking_id string Значение параметра tracking_id из запроса.
message string Сообщение с результатом запроса.
test boolean Если true, то это тестовая операция.
created_at string Время создания перевода в ISO 8601 формате YYYY-MM-DDThh:mm:ssTZD.
updated_at string Время последнего обновления данных перевода в базе данных в ISO 8601 формате YYYY-MM-DDThh:mm:ssTZD
paid_at string В случае успешно завершенного перевода - это время завершения перевода в базе данных в ISO 8601 формате YYYY-MM-DDThh:mm:ssTZD.
redirect_url * обязательный
string URL страницы для завершения транзакции.

Если параметр status имеет значение incomplete, перенаправьте покупателя на этот URL для прохождения проверки 3-D Secure.
language string Значение параметра language из запроса или en, если параметр не был передан.
credit_card object
holder string Имя владельца карты-источника.
stamp string Отпечаток номера карты-источника.
brand string Брэнд карты-источника.
last_4 string Последние четыре цифры карты-источника.
first_1 string Первая цифра карты-источника.
bin string BIN карты-источника.
issuer_country string Страна карты-источника.
issuer_name string Банк-эмитент карты-источника.
product * required
string Тип карточного продукта карты-источника.
exp_month string Месяц окончания срока действия карты-источника, представленный двумя цифрами (например, 01).
exp_year string Год срока окончания действия карты-источника, представленный четырьмя цифрами (например, 2026).
token string Токен карты-источника, который возвращается если передан в запросе параметр contract.
recipient_card object
holder string Имя владельца карты-приёмника.
stamp string Отпечаток номера карты-приёмника.
brand string Брэнд карты-приёмника.
last_4 string Последние четыре цифры карты-приёмника.
first_1 string Первая цифра карты-приёмника.
bin string BIN карты-приёмника.
issuer_country string Страна карты-приёмника.
issuer_name string Банк-эмитент карты-приёмника.
product * required
string Тип карточного продукта карты-приёмника.
exp_month integer Месяц окончания срока действия карты-приёмника, представленный двумя цифрами (например, 01).
exp_year integer Год срока окончания действия карты-приёмника, представленный четырьмя цифрами (например, 2027).
token string Токен карты-приёмника, который возвращается если передан в запросе параметр contract.
verify_p2p object Результат проверки параметров запроса, которые необходимы для завершения P2P перевода.
status string статус проверки.
message string Сообщение с результатом запроса.
amount integer Сумма перевода, которая зачислена на карту-приёмник, в минимальных денежных единицах.
currency string Валюта перевода в ISO-4217 формате, например USD.
bank_fee float Сумма комиссии банка за P2P перевод.
required_fields object
credit_card array Массив параметров, которые должны быть запрошены о карте-источнике. Возможные элементы массива: holder, verification_value, exp_month, exp_year.
recipient_card array Массив параметров, которые должны быть запрошены дополнительно о карте-приёмнике. Возможные элементы массива: holder, exp_month, exp_year.
p2p object Данные о P2P переводе, полученные из банка.
reciept_url string Сcылка на квитанцию обработанной транзакции.
ref_id string Номер операции в банке, осуществившем P2P перевод.
bank_code string Код ответа банка.
message string Сообщение с результатом запроса.
amount integer Сумма перевода, которая зачислена на карту-приёмник, в минимальных денежных единицах.
currency string Валюта перевода в ISO-4217 формате, например USD.
billing_descriptor string Текст, который будет отображен на банковской выписке карты-источника.
gateway_id integer Внутренний идентификатор банка в системе eComCharge
status string статус операции в банке.
customer object Секция информации о покупателе.
ip string IP-адрес отправителя перевода.
email string email отправителя перевода.
device_id string ID устройства отправителя перевода.
sender_billing_address object
first_name string Имя отправителя перевода.
last_name string Фамилия отправителя перевода.
country string Страна отправителя перевода в формате ISO 3166-1 alpha-2.
city string Город отправителя перевода.
state string Двухбуквенная абревиатура штата отправителя перевода, если страна отправителя перевода US или CA.
zip string Почтовый индекс отправителя перевода. Для country=US, формат zip должен иметь вид NNNNN или NNNNN-NNNN.
address string Адрес отправителя перевода.
phone string Номер телефона отправителя перевода.
recipient_billing_address object
first_name string Имя получателя перевода.
last_name string Фамилия получателя перевода.
country string Страна получателя перевода в формате ISO 3166-1 alpha-2.
city string Город получателя перевода.
state string Двухбуквенная абревиатура штата получателя перевода, если страна получателя перевода US или CA.
zip string Почтовый индекс получателя перевода. Для country=US, формат zip должен иметь вид NNNNN или NNNNN-NNNN.
address string Адрес получателя перевода.
phone string Номер телефона получателя перевода.
additional_data object Секция, содержащая дополнительную информацию о переводе.
receipt_text array Текст, который будет добавлен в письмо клиенту. Должен быть представлен как массив строк, например ["Первая строка", "Вторая строка"].
Пример JSON-ответа, требующего 3-D Secure проверки P2P перевода
{
  "transaction": {
    "uid": "1-82cc07d15d",
    "status": "incomplete",
    "amount": 100,
    "currency": "EUR",
    "description": "Test transaction ütf",
    "type": "p2p",
    "payment_method_type": "credit_card",
    "tracking_id": "tracking_id_000",
    "message": null,
    "test": false,
    "created_at": "2021-06-08T09:28:18.073Z",
    "updated_at": "2021-06-08T09:28:20.280Z",
    "paid_at": null,
    "language": "en",
    "redirect_url": "http://127.0.0.1:9887/process/1-82cc07d15d",
    "credit_card": {
      "holder": "John Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "mir",
      "last_4": "0165",
      "first_1": "2",
      "bin": "220031",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2026,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "mir",
      "last_4": "0165",
      "first_1": "2",
      "bin": "220031",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://gateway.ecomcharge.com/customer/transactions/1-82cc07d15d/89caa14443680985ce8ac2452fb9f82b4947926ff5bce0f15a7b4c4d0834ea5d",
    "recipient_billing_address": {
      "first_name": "Jane",
      "last_name": "Smith",
      "address": "Gilbert 104",
      "country": "BY",
      "city": "Minsk",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "Mary",
      "last_name": "Smith",
      "address": "Gilbert 104",
      "country": "BY",
      "city": "Minsk",
      "zip": null,
      "state": null,
      "phone": null
    },
    "status_code": null,
    "id": "1-82cc07d15d",
    "verify_p2p": {
      "status": "successful",
      "message": "3DS",
      "amount": 100,
      "currency": "EUR",
      "bank_fee": null,
      "required_fields": null
    },
    "p2p": {
      "ref_id": null,
      "message": null,
      "amount": 100,
      "currency": "EUR",
      "billing_descriptor": null,
      "gateway_id": 1,
      "status": "incomplete",
      "auth_code": null,
      "rrn": null,
      "bank_code": null
    },
    "customer": {
      "ip": "127.0.0.1",
      "email": "jahn_test@mial.com",
      "device_id": "12312312321fff67",
      "birth_date": null
    }
  }
}
Пример JSON-ответа успешно завершенного P2P перевода
{
  "transaction": {
    "uid": "1-4f4db7559d",
    "status": "successful",
    "amount": 100,
    "currency": "EUR",
    "description": "Test transaction ütf",
    "type": "p2p",
    "payment_method_type": "credit_card",
    "tracking_id": "tracking_id_000",
    "message": "Successfully processed",
    "test": false,
    "created_at": "2021-06-08T11:54:11.725Z",
    "updated_at": "2021-06-08T11:54:39.219Z",
    "paid_at": "2021-06-08T11:54:39.203Z",
    "language": "en",
    "redirect_url": "http://127.0.0.1:9887/process/1-4f4db7559d",
    "credit_card": {
      "holder": "John Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "mir",
      "last_4": "0165",
      "first_1": "2",
      "bin": "220031",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2026,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "mir",
      "last_4": "0165",
      "first_1": "2",
      "bin": "220031",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://gateway.ecomcharge.com/customer/transactions/1-4f4db7559d/1b653d8b2c18f48a17b88435ca51e7b22bb69e5080a400faa40e3918ae6552d7",
    "recipient_billing_address": {
      "first_name": "Jane",
      "last_name": "Smith",
      "address": "Gilbert 104",
      "country": "BY",
      "city": "Minsk",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "Mary",
      "last_name": "Smith",
      "address": "Gilbert 104",
      "country": "BY",
      "city": "Minsk",
      "zip": null,
      "state": null,
      "phone": null
    },
    "status_code": null,
    "id": "1-4f4db7559d",
    "verify_p2p": {
      "status": "successful",
      "message": "3DS",
      "amount": 100,
      "currency": "EUR",
      "bank_fee": null,
      "required_fields": null
    },
    "p2p": {
      "ref_id": "000005800042000145210608125426&000005800042000146210608125433",
      "message": "Approved",
      "amount": 100,
      "currency": "EUR",
      "billing_descriptor": null,
      "gateway_id": 1,
      "status": "successful",
      "auth_code": null,
      "rrn": null,
      "bank_code": null
    },
    "customer": {
      "ip": "127.0.0.1",
      "email": "jahn_test@mial.com",
      "device_id": "12312312321fff67",
      "birth_date": null
    }
  }
}
Пример JSON-ответ неуспешно завершенного P2P перевода
{
  "transaction": {
    "uid": "1-d8d4cd2503",
    "status": "failed",
    "amount": 100,
    "currency": "EUR",
    "description": "Test transaction ütf",
    "type": "p2p",
    "payment_method_type": "credit_card",
    "tracking_id": "tracking_id_000",
    "message": "Failed",
    "test": false,
    "created_at": "2021-06-08T11:48:15.002Z",
    "updated_at": "2021-06-08T11:48:15.165Z",
    "paid_at": null,
    "language": "en",
    "redirect_url": "http://127.0.0.1:9887/process/1-d8d4cd2503",
    "credit_card": {
      "holder": "John Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "mir",
      "last_4": "0165",
      "first_1": "2",
      "bin": "220031",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2026,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "mir",
      "last_4": "0165",
      "first_1": "2",
      "bin": "220031",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://gateway.ecomcharge.com/customer/transactions/1-d8d4cd2503/047da8244b961a41b5ad52e138dd8b866e6e6e773c3510ec1eb1476192b62397",
    "recipient_billing_address": {
      "first_name": "Jane",
      "last_name": "Smith",
      "address": "Gilbert 104",
      "country": "BY",
      "city": "Minsk",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "Mary",
      "last_name": "Smith",
      "address": "Gilbert 104",
      "country": "BY",
      "city": "Minsk",
      "zip": null,
      "state": null,
      "phone": null
    },
    "status_code": null,
    "id": "1-d8d4cd2503",
    "verify_p2p": {
      "status": "failed",
      "message": "3DS",
      "amount": 100,
      "currency": "EUR",
      "bank_fee": null,
      "required_fields": null
    },
    "p2p": {
      "ref_id": null,
      "message": null,
      "amount": 100,
      "currency": "EUR",
      "billing_descriptor": null,
      "gateway_id": 1,
      "status": "incomplete",
      "auth_code": null,
      "rrn": null,
      "bank_code": null
    },
    "customer": {
      "ip": "127.0.0.1",
      "email": "jahn_test@mial.com",
      "device_id": "12312312321fff67",
      "birth_date": null
    }
  }
}

3-D Secure проверка

Процес 3-D Secure проверки карты-источника полностью аналогичен процессу проверки карты в случае операции оплата или авторизация.