P2P-переводы
Функциональность P2P-переводов - это перевод денежных средств с одной карты на другую.
Технически на стороне платежных систем схема переводов реализована в два этапа.
- Этап 1: списание денежных средств с карты-источника,
- Этап 2: пополнение карты-приёмника.
Интерфейс переводов, предлагаемый Overpay, позволяет реализовать P2P-перевод в один шаг посредством выполнения P2P-операции.
При выполнении перевода с покупателя (владельца карты-источника) будет удержана комиссия, которая прописана в вашем договоре на P2P-перевод. Таким образом, при совершении перевода в поле суммы amount указывается сумма к перечислению на карту-приемник. Комиссия за выполнение перевода удерживается с карты-источника.
Info
Для P2P-перевода операция возврата невозможна.
Требования
При совершении перевода с карты на карту должны выполнятся следующие требования, установленные платежными системами:
- Обязательная проверка карты-источника с использованием технологии 3-D Secure.
- Обязательный ввод CVV2/CVC2 кода для карты-источника.
- Наличие PCI DSS сертификата для использования данного API и обработки нешифрованных данных карты.
Info
Для быстрого запуска сервиса P2P-переводов Overpay предлагает cтраницу P2P-переводов.
Разместите https://checkout.overpay.io/p2p/?public_key=:SHOP_PUBLIC_KEY, где public_key - это данные вашего публичного ключа, на ваших ресурсах и запустите собственный сервис P2P-переводов.
Проверка возможности P2P-перевода
До осуществления P2P-перевода необходимо проверить возможности такого перевода между картой-источником и картой-приёмником, а также получить информации о комиссии и иные дополнительно запрашиваемые данные о карте-источнике или карте-приёмнике. Для этого отправьте один из POST запросов:
авторизация по секретному ключу
Все запросы осуществляются с авторизацией типа Basic с ID и Secret key магазина как имя пользователя и пароль соответственно на https://gateway.overpay.io/p2p-restrictions
авторизация по публичному ключу в синхронном режиме
Все запросы осуществляются с Bearer авторизацией по публичному ключу c обязательной передачей заголовка X-Api-Version в значении 2 на https://checkout.overpay.io/ctp/api/verify-p2p
авторизация по публичному ключу в асинхронном режиме
При авторизации в синхронном режиме, осуществляется отправка запроса и получение ответа со всеми параметрами.
При авторизации в асинхронном режиме, необходимо отправить запрос (параметры такие же, как и для синхронного запроса) на асинхронный URL и в ответе получить статус задачи new и job_id.
Все запросы осуществляются с Bearer авторизацией по публичному ключу c обязательной передачей заголовка X-Api-Version в значении 2 на https://checkout.overpay.io/ctp/api/async/verify-p2p
Пример ответа со статусом задачи new и job_id
{
  "status": "new",
  "job_id": "62c5b51a1d69bde6e5afaa70"
}
Получение статуса асинхронной задачи
Для получения статуса задачи отправьте GET запрос на https://checkout.overpay.io/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 * условно обязательный | string (2) | Месяц окончания срока действия карты-источника, представленный одной или двумя цифрами (например, 01). | 
| exp_year * условно обязательный | string (4) | Год окончания срока действия карты-источника, представленный четырьмя цифрами (например, 2027). | 
| holder * условно обязательный | string (35) | Имя владельца карты-источника. Максимальная длина: 35 символов. Параметр опционален в системе Overpay, но может требоваться банком-эквайером. | 
| verification_value * условно обязательный | string | 3-х или 4-х цифровой код безопасности (CVC2, CVV2 или CID, в зависимости от бренда карты). | 
| token * условно обязательный | string | Токен карты-источника вместо номера карты-источника. | 
| recipient_card | object | Можно использовать шифрование на стороне клиента. | 
| number * обязательный | string | Номер карты-приёмника. | 
| exp_month * условно обязательный | string (2) | Месяц окончания срока действия карты-приёмника, представленный одной или двумя цифрами (например, 01). | 
| exp_year * условно обязательный | string (4) | Год окончания срока действия карты-приёмника, представленный четырьмя цифрами (например, 2027). | 
| holder * условно обязательный | string (35) | Имя владельца карты-приёмника. Максимальная длина: 35 символов. Параметр опционален в системе Overpay, но может требоваться банком-эквайером. | 
| 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-перевода посредством Overpay API необходимо отправить один из HTTP POST запросов:
авторизация по секретному ключу
Все запросы осуществляются с авторизацией типа Basic с ID и Secret key магазина как имя пользователя и пароль соответственно на https://gateway.overpay.io/transactions/p2ps.
авторизация по публичному ключу в синхронном режиме
Все запросы осуществляются с Bearer авторизацией по публичному ключу c обязательной передачей заголовка X-Api-Version в значении 2 на https://checkout.overpay.io/ctp/api/p2p.
авторизация по публичному ключу в асинхронном режиме
При авторизации в синхронном режиме, осуществляется отправка запроса и получение ответа со всеми параметрами.
При авторизации в асинхронном режиме, необходимо отправить запрос (параметры такие же, как и для синхронного запроса) на асинхронный URL и в ответе получить статус задачи new и job_id.
Все запросы осуществляются с Bearer авторизацией по публичному ключу c обязательной передачей заголовка X-Api-Version в значении 2 на https://checkout.overpay.io/ctp/api/async/p2p.
Пример ответа со статусом задачи new и job_id
{
  "status": "new",
  "job_id": "62c5b51a1d69bde6e5afaa70"
}
Получение статуса асинхронной задачи
Для получения статуса задачи отправьте HTTP GET запрос на https://checkout.overpay.io/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 перевода в вашей системе. Используйте уникальное значение для того, чтобы при запросе статуса транзакции получить актуальную информацию. В противном случае вы получите массив данных по 10 последним транзакциям, найденным по указанному tracking_id. В параметре может быть отправлено несколько значений, разделенных символом;. Например:"cbe59142-90af-4aea-b5a5-5bf3f66cf3da;f7883cb9-0e26-43a7-beb7-4027cb55d1a6;4a6a89d5-6950-400f". Если в запросе было передано более одного значенияtracking_id, поиск транзакции в личном кабинете может быть осуществлен по любому из них. | 
| duplicate_check | boolean | Параметр управляет процессом проверки входящего запроса на уникальность. Если в течение 30 секунд придет запрос на оплату с одинаковыми amountиnumberилиtoken, то запрос будет отклонен. По умолчанию, этот параметр имеет значениеtrue. | 
| language | string | Язык вашей страницы оформления заказа. Если параметр установлен и email уведомление о транзакции включено, то Overpay отправит email, язык текста которого будет language. По умолчанию -en. Доступные значения параметраlanguage. | 
| notification_url | string | URL, на который будут приходить уведомления. Формат запроса уведомления аналогичен формату ответа транзакции. | 
| return_url | string | URL, на который Overpay будет перенаправлять отправителя перевода после возврата с 3-D Secure проверки для завершения P2P перевода. | 
| test | boolean | true- выполнить проверку возможности P2P перевода между тестовыми картами. | 
| credit_card | object | Можно использовать шифрование на стороне клиента. | 
| number | string | Номер карты-источника. | 
| verification_value | string | 3-х или 4-х цифровой код безопасности (CVC2, CVV2 или CID, в зависимости от бренда карты). Может быть отправлен вместе с параметром tokenи Overpay доставит банку-эквайеру данные карты с CVC2/CVV2/CID. | 
| exp_month * условно обязательный | string (2) | Месяц окончания срока действия карты-источника, представленный одной или двумя цифрами (например, 01). | 
| exp_year * условно обязательный | string (4) | Год окончания срока действия карты-источника, представленный четырьмя цифрами (например, 2027). | 
| holder * условно обязательный | string (35) | Имя владельца карты-источника. Максимальная длина: 35 символов. Параметр опционален в системе Overpay, но может требоваться банком-эквайером. | 
| token * условно обязательный | string | Вместо 5 параметров выше вы можете отправить токен карты-источника, который вы получили в ответе первого перевода. | 
| recipient_card | object | Можно использовать шифрование на стороне клиента. | 
| number | string | Номер карты-приёмника. | 
| exp_month * условно обязательный | string (2) | Месяц окончания срока действия карты-приёмника, представленный одной или двумя цифрами (например, 01). | 
| exp_year * условно обязательный | string (4) | Год окончания срока действия карты-приёмника, представленный четырьмя цифрами (например, 2027). | 
| holder * условно обязательный | string (35) | Имя владельца карты-приёмника. Максимальная длина: 35 символов. Параметр опционален в системе Overpay, но может требоваться банком-эквайером. | 
| token | string | вместо 5 параметров выше вы можете отправить токен карты-приёмника, который вы получили в ответе первого перевода. | 
| additional_data | object | Секция, содержащая дополнительную информацию. | 
| receipt_text | array | Текст, который будет добавлен в письмо клиенту. Должен быть представлен как массив строк, например ["Первая строка", "Вторая строка"]. | 
| contract | array | Элементами массива могут быть параметры: oneclick- Overpay вернет токен карты для осуществления последующих платежей по схеме oneclick, когда на странице перевода будут уже частично заполнены реквизиты карты, а пользователю для завершения оплаты достаточно ввести проверочный код карты CVC/CVV и пройти авторизацию по протоколу 3-D Secure. | 
| p2p | object | Секция, содержащая дополнительную информацию о переводе. | 
| type | string | код типа операции перевода, выданный процессинговым центром, длинной 3 символа в alphanumeric формате. | 
| customer | object | Секция информации о покупателе. | 
| ip | string | IP-адрес отправителя перевода. | 
| string | email отправителя перевода. | |
| device_id | string | ID устройства отправителя перевода. | 
| external_id | string (255) | Идентификатор отправителя перевода в системе торговца. | 
| 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": "4012001037141112",
      "verification_value": "123",
      "exp_month": "01",
      "exp_year": "2027",
      "holder": "John Doe"
    },
    "recipient_card": {
      "number": "4200000000000000",
      "holder": "Mary Doe"
    },
    "customer": {
      "ip": "127.0.0.1",
      "device_id": "12312312321fff67",
      "email": "jahn_test@mial.com"
    },
    "sender_billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "country": "PL",
      "city": "Warsaw",
      "address": "Gilbert 104"
    },
    "recipient_billing_address": {
      "first_name": "Mary",
      "last_name": "Doe",
      "country": "PL",
      "city": "Warsaw",
      "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 | Год срока окончания действия карты-источника, представленный четырьмя цифрами (например, 2027). | 
| 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 | Внутренний идентификатор банка в системе Overpay | 
| status | string | статус операции в банке. | 
| customer | object | Секция информации о покупателе. | 
| ip | string | IP-адрес отправителя перевода. | 
| 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": "visa",
      "last_4": "1112",
      "first_1": "4",
      "bin": "420000",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2027,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "0000",
      "first_1": "4",
      "bin": "420000",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://backoffice.overpay.io/customer/transactions/1-82cc07d15d/89caa14443680985ce8ac2452fb9f82b4947926ff5bce0f15a7b4c4d0834ea5d",
    "recipient_billing_address": {
      "first_name": "Mary",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "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": "visa",
      "last_4": "1112",
      "first_1": "4",
      "bin": "401200",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2027,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "0000",
      "first_1": "4",
      "bin": "420000",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://backoffice.overpay.io/customer/transactions/1-4f4db7559d/1b653d8b2c18f48a17b88435ca51e7b22bb69e5080a400faa40e3918ae6552d7",
    "recipient_billing_address": {
      "first_name": "Mary",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "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": "visa",
      "last_4": "1112",
      "first_1": "4",
      "bin": "401200",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": 1,
      "exp_year": 2027,
      "token_provider": null,
      "token": null
    },
    "recipient_card": {
      "holder": "Mary Doe",
      "stamp": "9723c73562cf57c89e162d7adaad7cff30d2fa9364b45063cd4ccfe980a38c53",
      "brand": "visa",
      "last_4": "0000",
      "first_1": "4",
      "bin": "420000",
      "issuer_country": null,
      "issuer_name": null,
      "product": null,
      "exp_month": null,
      "exp_year": null,
      "token_provider": null,
      "token": null
    },
    "receipt_url": "https://backoffice.overpay.io/customer/transactions/1-d8d4cd2503/047da8244b961a41b5ad52e138dd8b866e6e6e773c3510ec1eb1476192b62397",
    "recipient_billing_address": {
      "first_name": "Mary",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "zip": null,
      "state": null,
      "phone": null
    },
    "sender_billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "address": "Gilbert 104",
      "country": "PL",
      "city": "Warsaw",
      "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 проверки карты-источника полностью аналогичен процессу проверки карты в случае операции оплата или авторизация.