# Прием платежей

Транзакция осуществляется в асинхронном режиме. В результате запроса вам синхронно придет id платежа, и асинхронно придет callback-уведомление.

Полученные в синхронном ответе userWebLink используйте для работы с платежной страницей, а jsOperationId для работы через Mandarin Custom Pay.

# Одностадийная оплата

Для списания денежных средств с карты в рамках одностадийной схемы оплаты необходимо создать транзакцию с "action": "pay" путем отправки POST запроса на https://secure.mandarinpay.com/api/transactions

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
payment.orderActualTill Нет urls Нет
customerInfo Да urls.return Нет
customerInfo.email Да urls.callback Нет
customerInfo.phone Нет*
allowinteractive Нет
interactive Нет

ОБРАТИТЕ ВНИМАНИЕ!

*Для МСС 4814 и МСС 6050 параметр customerInfo.phone является обязательным. Уточнить МСС для ваших банковских терминалов можно у вашего менеджера или обратившись в службу технической поддержки (opens new window).

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "pay",
		"orderId": "your_unique_order_id",
		"price": "1000.00",
		"orderActualTill": "2020-02-20 12:34:56+00:00"
	},
	"customerInfo": {
		"email": "user@example.com",
		"phone": "+79001234567"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725",
	"userWebLink": "https://secure.mandarinpay.com/Pay?transaction=0eb51e74-e704-4c36-b5cb-8f0227621518",
	"jsOperationId": "9874694yr87y73e7ey39ed80"
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request"  
}

# Двухстадийная оплата

Двухстадийная оплата предполагает, что денежные средства списываются с карты в рамках двух последовательных запросов: авторизация (preauth) некоторой суммы, и последующее списание (pay) или возврат (reversal).

В случае отсутствия операции подтверждения списания денежных средств сумма будет автоматически разблокирована через определенное время (от 7 до 30 дней).

Также возможна операция принудительной разблокировки ВСЕЙ заблокированной суммы (reversal).

# Авторизация

Для авторизации денежных средств с карты в рамках двухстадийной схемы оплаты необходимо создать транзакцию, где "action": "preauth".

Транзакция осуществляется в асинхронном режиме. В результате запроса вам синхронно придет id платежа, и асинхронно придет callback-уведомление.

Полученные в синхронном ответе userWebLink используйте для работы с платежной страницей, а jsOperationId для работы через Mandarin Custom Pay.

После того, как придёт callback-уведомление об успехе авторизации, полученый в нём id транзакции можно использовать для полного или частичного списания ("action": "pay"), а также разблокировки ("action": "reversal") денежных средств через REST API в качестве значения для target.transaction.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
payment.orderActualTill Нет urls Нет
customerInfo Да urls.return Нет
customerInfo.email Да urls.callback Нет
customerInfo.phone Нет

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "preauth",
		"orderId": "your_unique_order_id",
		"price": "1000.00",
		"orderActualTill": "2020-02-20 12:34:56+00:00"
	},
	"customerInfo": {
		"email": "user@example.com",
		"phone": "+79001234567"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725",
	"userWebLink": "https://secure.mandarinpay.com/Pay?transaction=0eb51e74-e704-4c36-b5cb-8f0227621518",
	"jsOperationId": "9874694yr87y73e7ey39ed80"
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request" 
}

# Авторизация с использованием токена карты

Возможно заблокировать средства на привязанной карте плательщика с помощью авторизации по токену карты. Выполняется без участия плательщика и заменяет собой запрос обычной авторизации.

ОБРАТИТЕ ВНИМАНИЕ!

Для активации этого особого вида авторизации нужно обязательно обговорить технические детали с вашим менеджером!

После окончания настройки, вы сможете передавать в запросе параметр target.card со значением токена полных карточных данных, которое получили после токенизации.

Транзакция осуществляется в асинхронном режиме. В результате запроса вам синхронно придет id платежа, и асинхронно придет callback-уведомление.

Возможна ситуация, при которой токен полных карточных данных принудительно переводится в статус payout-only. Это происходит в случаях, когда от платежной системы приходит ответ с кодом, при котором дальнейшее проведение рекуррентных платежей невозможно.

В этом случае вы получите callback с ошибкой, а также флагом о том, что дальнейшее проведение рекуррентных платежей невозможно. Дополнительно вам будет направлен callback с токеном, имеющим статус payout-only. Дальнейшие попытки автосписаний будут проходить без создания транзакции, в результате запроса вам будет возвращаться ответ Card binding is payout-only.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
payment.orderActualTill Нет urls Нет
customerInfo Да urls.return Нет
customerInfo.email Да urls.callback Нет
customerInfo.phone Нет
target Да
target.card Да

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "preauth",
		"orderId": "your_unique_order_id",
		"price": "1000.00",
		"orderActualTill": "2020-02-20 12:34:56+00:00"
	},
	"customerInfo": {
		"email": "user@example.com",
		"phone": "+79001234567"
	},
	"target": {
		"card": "0eb51e74-e704-4c36-b5cb-8f0227621518"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

Ответ в случае, если автосписание невозможно (200 ОК)

{
	"error": "Card binding is payout-only"  
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request"  
}

# Завершение расчетов

Двухстадийная оплата предполагает, что денежные средства списываются с карты в рамках двух последовательных запросов: авторизация (preauth) некоторой суммы (как обычная, так и по токену карты), и последующее списание (pay) или возврат (reversal).

Для полного или частичного списания используйте "action": "pay" и полученный в уведомлении об успешной авторизации id в качестве значения для target.transaction. Активного участия плательщика при этом не требуется.

Значение price может быть любым в пределах значения, переданного в изначальной транзакции авторизации, где был указан "action": "preauth".

Завершение расчетов с помощью операции pay возможно только один раз на полную сумму платежа или на частичную. В случае частичной оплаты, остальная сумма автоматически разблокируется. Отмена (reversal) при двухстадийной оплате происходит только на полную сумму авторизации.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
customerInfo Да urls Нет
customerInfo.email Да urls.return Нет
customerInfo.phone Нет urls.callback Нет
target Да
target.transaction Да

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "pay",
		"orderId": "your_unique_order_id",
		"price": "900.00"
	},
	"customerInfo": {
		"email": "user@example.com",
		"phone": "+79001234567"
	},
	"target": {
		"transaction": "43913ddc000c4d3990fddbd3980c1725"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request"  
}

# Платеж по сохраненной карте в интерактивном режиме

В этом случае плательщик совершает платеж или авторизацию, выбрав сохраненную карту и вводя только CVV/CVC-код. Следующее действие зависит от настроек вашего терминала: если он позволяет совершить платеж без прохождения процедуры 3-D Secure, то дополнительных действий не требуется. Иначе произойдет переадресация браузера плательщика на ввод СМС-кода для прохождения 3-D Secure.

ОБРАТИТЕ ВНИМАНИЕ!

Если на платеж без использования 3-D Secure поступит опротестование от плательщика, то платежная система автоматически удержит с вас сумму этого платежа.

Кроме того, возможен сценарий, при котором плательщик выбирает сохраненную карту, а затем проходит процедуру 3-D Secure. CVV/CVC-код при этом плательщик не вводит.

При любом сценарии, процесс занимает два этапа:

  1. Инициация.

  2. Создание транзакции.

Для инициации платежа/авторизации необходимо передать в Mandarin токен полных карточных данных и индикатор интерактивного платежа "interactive": true.

Синхронный ответ на запрос инициации содержит id платежа, и jsOperationId для создания транзакции через Mandarin Custom Pay.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
target Да urls Нет
target.card Да urls.return Нет
interactive Да urls.callback Нет

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос interactive платежа

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "pay",
		"orderId": "your_unique_order_id",
		"price": "1000.00"
	},
	"target": {
		"card": "0eb51e74-e704-4c36-b5cb-8f0227621518"
	},
	"interactive": true,
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"parameter to callback and not to show 0": "0",
		"parameter to callback and not to show 1": "1"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешной инициации (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725",
	"jsOperationId": "9874694yr87y73e7ey39ed80"
}

Ответ в случае, если инициация не произошла (400 Bad request)

{
	"error": "Invalid request"  
}

На втором этапе (создание транзакции), Mandarin должен получить от вас значения jsOperationId из предыдущего запроса и CVV (которое передается через Mandarin Custom Pay).

Весь процесс взаимодействия описан подробнее на отдельной странице про интерактивной платеж.

# Платеж "в один клик" по сохраненной карте без CVV/CVC-кода и без 3-D Secure

Платеж осуществляется по ранее сохраненной (привязанной) карте без необходимости повторного ввода следующих данных:

  • CVV/CVC-код — трёхзначный защитный код с обратной стороны карты
  • Подтверждение через 3-D Secure — двухфакторную аутентификацию

Особенности:

  • Платеж инициируется непосредственно плательщиком;
  • Используется ранее сохраненная (привязанная) карта плательщика;
  • Отсутствие дополнительных верификационных шагов для плательщика.

В запросе нужно передать токен полных карточных данных и "allowinteractive": true. Mandarin проведет обычный рекуррентный платеж (автосписание), не спрашивая никакой дополнительной информации у плательщика. Такой способ обеспечивает удобство и быстроту оплыты для клиента и имеет меньше ограничений, чем рекуррентный платеж (opens new window).

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
target Да urls Нет
target.card Да urls.return Нет
allowinteractive Да urls.callback Нет

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос allowinteractive платежа

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "pay",
		"orderId": "your_unique_order_id",
		"price": "1000.00"
	},
	"target": {
		"card": "0eb51e74-e704-4c36-b5cb-8f0227621518"
	},
	"allowinteractive": true,
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного автосписания (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request"  
}

Если токен полных карточных данных находится в статусе payout-only (а значит, автосписание по нему невозможно), то Mandarin попытается спасти положение, переключившись на сценарий для Custom Form (opens new window) и интерактивного платежа с "interactive": true, вместо ошибки Card binding is payout-only вернется значение jsOperationId (в данном случае все-таки нужно будет ввести CVV-код для такого токена карты).

Ответ в случае успешного создания транзакции в интерактивном режиме (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725",
	"jsOperationId": "9874694yr87y73e7ey39ed80"
}

Mandarin должен получить от вас значения jsOperationId, который получен в ответе на запрос и CVV (через Mandarin Custom Form (opens new window)).

Весь процесс взаимодействия описан подробнее на отдельной странице про интерактивной платеж (opens new window).

# Рекуррентный платеж (автосписание)

В Mandarin поддерживаются два основных типа автоматических платежей:

Для корректной работы каждого типа платежей требуется:

  • Отдельная настройка параметров в системе Mandarin;
  • Создание и использование разных Проектов для каждого типа платежей.

Для активации и настройки рекуррентных платежей необходимо обратиться в Службу поддержки (opens new window) или к вашему курирующему менеджеру (opens new window).

ОБРАТИТЕ ВНИМАНИЕ!

Проведение рекуррентных платежей, инициированных компанией имеет определенные ограничения, ниже перечислены рекомендации для правильной работы:

  • По безусловно негативных кодам ответов (opens new window) необходимо прекращать попытки списания навсегда.
  • По остальным кодам ошибок необходимо ограничить попытки списания - по одной карте можно выполнить только одну повторную попытку в течение дня. Третья и последующие попытки не должны направляться.
  • Необходимо разносить платежи равномерно по времени в течение дня и до 1 запроса в секунду на операции.
  • Рекуррентные платежи могут быть недоступны для карт Visa Electron, Maestro, Momentum и т.д., при получении ошибки по такой карте, рекомендовано не проводить повторные попытки списания.

# Платеж с использованием токена карты

Для создания повторного списания средств с карты используйте "action": "pay" и id ранее проведённой успешной токенизации полных карточных данных в качестве target.card.

Транзакция осуществляется в асинхронном режиме. В результате запроса вам синхронно придет id платежа, и асинхронно придет callback-уведомление.

Возможна ситуация, при которой токен полных карточных данных принудительно переводится в статус payout-only. Это происходит в случаях, когда от платежной системы приходит ответ с кодом, при котором дальнейшее проведение рекуррентных платежей невозможно.

В этом случае вы получите callback с ошибкой, а также флагом о том, что дальнейшее проведение рекуррентных платежей невозможно. Дополнительно вам будет направлен callback с токеном, имеющим статус payout-only. Дальнейшие попытки автосписаний будут проходить без создания транзакции, в результате запроса вам будет возвращаться ответ Card binding is payout-only.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
target Да urls Нет
target.card Да urls.return Нет

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос рекуррентного платежа с использованием токена карты

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "pay",
		"orderId": "your_unique_order_id",
		"price": "1000.00"
	},
	"target": {
		"card": "0eb51e74-e704-4c36-b5cb-8f0227621518"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

Ответ в случае, если автосписание невозможно (200 ОК)

{
	"error": "Card binding is payout-only"  
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request"  
}

# Платеж с использованием ранее совершенной транзакции

Для активации данного способа оплаты требуется выполнить дополнительные настройки в системе Mandarin Чтобы настроить функционал, пожалуйста, обратитесь в Службу поддержки (opens new window).

Помимо использования токена полных карточных данных, создание рекуррентного платежа возможно на основании любого ранее совершенного успешного платежа ("action": "pay") или авторизации ("action": "preauth") денежных средств.

Используйте "action": "pay" и id ранее проведённой успешной транзакции (pay или preauth) в качестве target.rebill.

Транзакция осуществляется в асинхронном режиме. В результате запроса вам синхронно придет id платежа, и асинхронно придет callback-уведомление.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
target Да urls Нет
target.rebill Да urls.return Нет

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос рекуррентного платежа на основании успешного платежа/авторизации

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "pay",
		"orderId": "your_unique_order_id",
		"price": "1000.00"
	},
	"target": {
		"rebill": "43913ddc000c4d3990fddbd3980c1725"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request"  
}

# Платеж с использованием ранее совершенной оплаты по СБП

Для активации данного способа оплаты требуется выполнить дополнительные настройки в системе Mandarin Чтобы настроить функционал, пожалуйста, обратитесь в Службу поддержки (opens new window).

Рекуррентные списания через СБП выполняются путём вызова API метода с указанием в rebill id ранее проведённой успешной транзакции pay по СБП.

Транзакция осуществляется в асинхронном режиме. В результате запроса вам синхронно придет id платежа (opens new window), и асинхронно придет callback-уведомление (opens new window).

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
target Да urls Нет
target.rebill Да urls.return Нет

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос рекуррентного платежа на основании успешного платежа по СБП

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "pay",
		"orderId": "your_unique_order_id",
		"price": "1000.00"
	},
	"target": {
		"rebill": "43913ddc000c4d3990fddbd3980c1725"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request"  
}

# Массовые рекуррентные платежи

Для массового списания средств с карт используйте "action": "pay" и id ранее проведённых успешных токенизаций полных карточных данных или id ранее проведённых успешных транзакций (opens new window) в качестве target.rebill.

В результате запроса вам синхронно придет список id платежей, и асинхронно callback-уведомление.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
target Да urls Нет
target.rebill Да urls.return Нет

Запрос на массовые рекуррентные платежи

POST https://secure.mandarinpay.com/api/transactions/bulk-force
[
    {
        "payment": {
            "orderId": "00000281",
            "action": "pay",
            "price": "200.00"
        },
        "urls": {
            "callback": "https://test.com"
        },
        "target": {
            "rebill": "86257b9c-05cb-4608-b79c-0fd62ad6fc15"
        }
    },
        {
        "payment": {
            "orderId": "00000282",
            "action": "pay",
            "price": "400.00"
        },
        "urls": {
            "callback": "https://test.com"
        },
        "target": {
            "rebill": "86257b9c-05cb-4608-b79c-0fd62ad6fc15"
        }
    },
        {
        "payment": {
            "orderId": "00000283",
            "action": "pay",
            "price": "500.00"
        },
        "urls": {
            "callback": "https://test.com"
        },
        "target": {
            "rebill": "86257b9c-05cb-4608-b79c-0fd62ad6fc15"
        }
    }
]

Ответ в случае успешного создания транзакций (200 ОК)

[
    {
        "id": "58592b2520304d20800d993fe6a2b26a"
    },
    {
        "id": "ec2c99fbd72c401fbd11cd098354aa53"
    },
    {
        "id": "9362c8bf0bdd4edd906bf48934a9917f"
    }
]

Ответ в случае, если транзакции не созданы (400 Bad request)

{
	"error": "Invalid request"  
}

# Отмена и возврат

# Отмена авторизации

Для разблокировки авторизованной суммы используйте "action": "reversal" и полученный в уведомлении об успешной авторизации id в качестве значения для target.transaction. Активного участия плательщика при этом не требуется. Отмена производится для всей авторизованной суммы.

Транзакция осуществляется в асинхронном режиме. В результате запроса вам синхронно придет id платежа, и асинхронно придет callback-уведомление.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
customerInfo Да metadata Нет
customerInfo.email Да urls Нет
customerInfo.phone Нет urls.return Нет
target Да urls.callback Нет
target.transaction Да

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "reversal",
		"orderId": "your_unique_order_id"
	},
	"customerInfo":
	{
		"email": "user@example.com",
		"phone": "+79001234567"
	},
	"target": {
		"transaction": "43913ddc000c4d3990fddbd3980c1725"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request" 
}

# Отмена платежа

Для отмены успешной транзакции на списание средств с карты ("action": "pay") используйте "action": "reversal" и id ранее проведённой транзакции в качестве target.transaction.

Отмена возможна как на всю сумму транзакции, так и на часть суммы (частичная отмена). Допускается неограниченное количество частичных отмен одной операции платежа в пределах суммы оплаты. Активного участия плательщика при этом не требуется.

Транзакция осуществляется в асинхронном режиме. В результате запроса вам синхронно придет id платежа, и асинхронно придет callback-уведомление.

Параметр Обязателен Параметр Обязателен
payment Да customValues[] Нет
payment.action Да customValues[].name Нет
payment.orderId Да customValues[].value Нет
payment.price Да metadata Нет
target Да urls Нет
target.transaction Да urls.return Нет
urls.callback Нет

Синхронный ответ и асинхронное callback-уведомление могут содержать более широкий набор параметров по сравнению с примером.

Запрос

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "reversal",
		"orderId": "your_unique_order_id",
    	"price": "1000.00"
	},
	"target": {
		"transaction": "43913ddc000c4d3990fddbd3980c1725"
	},
	"customValues": [
		{"name": "first parameter to save and show", "value": "p1"},
		{"name": "second parameter to save and show", "value": "p2"}
	],
	"metadata": {
		"first_parameter_to_callback_and_not_to_show": "p1",
		"second_parameter_to_callback_and_not_to_show": "p2"
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

Ответ в случае успешного создания транзакции (200 ОК)

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

Ответ в случае, если транзакция не создана (400 Bad request)

{
	"error": "Invalid request"
}

# Прием платежей через СБП

Для стандартной платежной страницы подключение СБП для приема платежей производится через техническую поддержку, методы используются полностью идентичные стандартному приему платежей. Подробнее по ссылке.
При оплате у клиента появится кнопка Оплата СБП, при нажатии откроется QR-код для оплаты.

SBP SBP

# Получение статуса транзакции

Метод API дает возможность по идентификатору операции получить её статус, а также информацию о карте.

Авторизация - XAuth (opens new window).

Запрос: operationId - id платежа (opens new window).

GET https://secure.mandarinpay.com/api/operations/{operationId}

Пример ответа:

{
    "operationType": "Transaction",
    "state": "Success",
    "card": {
        "cardNumber": "519261XXXXXX3242",
        "cardHolder": "CARD HOLDER",
        "expireDate": "25/01",
        "cardId": "a3a5c49e1385e5096d05075d636f7baf",
        "country": "TUR",
        "productName": "Standard Mastercard Card",
        "productCode": "MCS",
        "brand": "mastercard",
        "bank": "ODEA BANK A.S.",
        "cardType": "Credit"
    }
}

Параметры ответа:

Параметр Описание
operationType тип операции, транзакция/привязка
state Статус операции: success, failed, payout-only, pendingExecution/none/unknown - операция не завершена и находится в обработке (может потребоваться сверка с банком-эквайером). Только статус success однозначно указывает на успешность операции!
cardNumber маскированный номер карты
cardHolder держатель карты
expireDate срок действия карты
cardId уникальный хэш полного номера карты
country страна выпуска карты
productName карточный продукт/категория карты
productCode код карточного продукта/категории карт
brand платежная система карты
bank банк, выпустивший карту
cardType тип карты (дебетовая/кредитная)