P2P-переводы
Функциональность P2P-переводов - это перевод денежных средств с одной карты на другую.
Технически на стороне платежных систем схема переводов реализована в два этапа.
- Этап 1: списание денежных средств с карты-источника,
- Этап 2: пополнение карты-приёмника.
Интерфейс переводов, предлагаемый eComCharge, позволяет реализовать P2P-перевод в один шаг посредством выполнения P2P-операции.
При выполнении перевода с покупателя (владельца карты-источника) будет удержана комиссия, которая прописана в вашем договоре на P2P-перевод. Таким образом, при совершении перевода в поле суммы amount
указывается сумма к перечислению на карту-приемник. Комиссия за выполнение перевода удерживается с карты-источника.
Info
Для P2P-перевода операция возврата невозможна.
Требования
При совершении перевода с карты на карту должны выполнятся следующие требования, установленные платежными системами:
- Обязательная проверка карты-источника с использованием технологии 3-D Secure.
- Обязательный ввод CVV2/CVC2 кода для карты-источника.
- Наличие 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 * условно обязательный |
string (2) | Месяц окончания срока действия карты-источника, представленный одной или двумя цифрами (например, 01). |
exp_year * условно обязательный |
string (4) | Год окончания срока действия карты-источника, представленный четырьмя цифрами (например, 2026). |
holder * условно обязательный |
string (35) | Имя владельца карты-источника. Максимальная длина: 35 символов. Параметр опционален в системе eComCharge, но может требоваться банком-эквайером. |
verification_value * условно обязательный |
string | 3-х или 4-х цифровой код безопасности (CVC2, CVV2 или CID, в зависимости от бренда карты). |
token * условно обязательный |
string | Токен карты-источника вместо номера карты-источника. |
recipient_card | object | Можно использовать шифрование на стороне клиента. |
number * обязательный |
string | Номер карты-приёмника. |
exp_month * условно обязательный |
string (2) | Месяц окончания срока действия карты-приёмника, представленный одной или двумя цифрами (например, 01). |
exp_year * условно обязательный |
string (4) | Год окончания срока действия карты-приёмника, представленный четырьмя цифрами (например, 2026). |
holder * условно обязательный |
string (35) | Имя владельца карты-приёмника. Максимальная длина: 35 символов. Параметр опционален в системе eComCharge, но может требоваться банком-эквайером. |
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 транзакцию. В параметре может быть отправлено несколько значений, разделенных символом ; . Например: "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 уведомление о транзакции включено, то 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. |
exp_month * условно обязательный |
string (2) | Месяц окончания срока действия карты-источника, представленный одной или двумя цифрами (например, 01). |
exp_year * условно обязательный |
string (4) | Год окончания срока действия карты-источника, представленный четырьмя цифрами (например, 2026). |
holder * условно обязательный |
string (35) | Имя владельца карты-источника. Максимальная длина: 35 символов. Параметр опционален в системе eComCharge, но может требоваться банком-эквайером. |
token * условно обязательный |
string | Вместо 5 параметров выше вы можете отправить токен карты-источника, который вы получили в ответе первого перевода. |
recipient_card | object | Можно использовать шифрование на стороне клиента. |
number | string | Номер карты-приёмника. |
exp_month * условно обязательный |
string (2) | Месяц окончания срока действия карты-приёмника, представленный одной или двумя цифрами (например, 01). |
exp_year * условно обязательный |
string (4) | Год окончания срока действия карты-приёмника, представленный четырьмя цифрами (например, 2026). |
holder * условно обязательный |
string (35) | Имя владельца карты-приёмника. Максимальная длина: 35 символов. Параметр опционален в системе eComCharge, но может требоваться банком-эквайером. |
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-адрес отправителя перевода. |
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-адрес отправителя перевода. |
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 проверки карты-источника полностью аналогичен процессу проверки карты в случае операции оплата или авторизация.