# Роутинг

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

# Регистрация саб-мерчанта

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

Для начала работы Саб-мерчант должен самостоятельно завести Личный кабинет Mandarin через процедуру стандартной регистрации (opens new window), пройдя шаги от (1) подачи заявки до (4) завершения обработки анкеты.

Помимо основного процесса регистрации Личного кабинета доступно массовое заведение Личных кабинетов через реестр. Для использования этого сценария обратитесь к вашему курирующему менеджеру.

После одобрения Личного кабинета можно переходить к процедуре привязки созданного Личного кабинета Саб-мерчанта к вашему аккаунту Маркетплейса

# Создание аккаунта саб-мерчанта

Для создания аккаунта Саб-мерчанта используется token, который доступен в Личном кабинете Саб-мерчанта в разделе Routing Настроек проекта.

Параметр Тип Обязателен Описание
accountType string Да Тип аккаунта,
для юрлица принимает значение business.
token string Да Токен аккаунта юрлица.

Синхронный ответ содержит id (идентификатор) аккаунта.

Запрос

POST https://secure.mandarinpay.com/api/v1/accounts/business
{

	"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjaGFudF9pZCI6MiwiaXNzIjoiMzAg0LzQsNGPIDIwMjIg0LMuIn0.unGctyIBkp4EHXw-7bFqWbbkmfhs2yCJ-jAKJGqRP_1"

}

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

{
	"id": "01dab7d8-be9b-4f87-ba91-801731787725",
	"type": "Business"
}

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

{
	"error": "Invalid request"  
}

# Прием платежей (Роутинг)

Используются стандартные API-запросы для приема платежей, в соответствии с документацией. Возможны одностадийная оплата, рекуррентный платеж (автосписание) и двухстадийная оплата (в этом случае авторизация остается стандартной, а распределение платежей происходит при завершении расчетов).

При этом в запрос pay добавляется объект routing.destination, содержащий схему распределения платежа. Для приема платежей: сумма значений amount из объекта routing должна быть равна верхнеуровневому amount!

ВАЖНО! При использовании двух-стадийной оплаты объект routing добавляется во второй запрос с "action": "pay"

Плательщик может вводить данные карты на платежной странице или встраиваемой форме оплаты Mandarin Custom Pay.

Параметр Тип Обязателен Описание
routing Да Объект, содержащий параметры роутинга.
routing.destination string Да Массив, содержащий получателей платежа.
routing.destination. accountId string Да Идентификатор аккаунта получателя.
routing.destination. amount.value string Да Сумма, перечисляемая на аккаунт получателя. Для приема платежей: от этой суммы будет удержана комиссия платформы. Разделитель - точка.
routing.destination. amount.currency string Да Валюта суммы, перечисляемой на аккаунт получателя. Сейчас всегда RUB.
routing.destination. platformFeeAmount. value string Да Комиссия платформы, от суммы, перечисляемой на аккаунт получателя. Разделитель - точка.
routing.destination. platformFeeAmount. currency string Да Валюта комиссии платформы. Сейчас всегда RUB.
routing.destination. description string Нет Описание.

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

  • 3950 рублей на аккаунт 16f90c5e-6bc3-11eb-9439-0242ac130002, принадлежащий юрлицу.
  • 50 рублей на аккаунт платформы.
  • 950 рублей на аккаунт 8ba85f01-8cc8-4161-b45d-ce6442e678ae, который принадлежит другому юрлицу.
  • еще 50 рублей на аккаунт платформы. Итого 100 рублей на аккаунт платформы.

Запрос одностадийной оплаты

POST https://api.mandarin.io/secure/transactions
{
	"payment": {
		"action": "pay",
		"orderId": "your_unique_order_id",
		"amount": {
			"value": "5000.00",
			"currency": "RUB"
		},
		"orderActualTill": "2020-02-20 12:34:56+00:00"
	},
	"routing": {
		"destination": [{
				"accountId": "16f90c5e-6bc3-11eb-9439-0242ac130002",
				"amount": {
					"value": "4000.00",
					"currency": "RUB"
				},
				"platformFeeAmount": {
					"value": "50.00",
					"currency": "RUB"
				},
				"description": ""
			},
			{
				"accountId": "8ba85f01-8cc8-4161-b45d-ce6442e678ae",
				"amount": {
					"value": "1000.00",
					"currency": "RUB"
				},
				"platformFeeAmount": {
					"value": "50.00",
					"currency": "RUB"
				},
				"description": ""
			}
		]
	},
	"customerInfo": {
		"email": "user@example.com",
		"phone": "+79001234567"
	}
}

Ответ на запрос соответствует стандартному ответу для создания транзакций.

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

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

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

{
	"error": "Invalid request"  
}

# Токенизация (Роутинг)

Для токенизации используются стандартные запросы на токенизацию. Впоследствие токен карты можно использовать для создания рекуррентных списаний, платежей с сохраненной картой в интерактивном режиме или платежей с сохраненной картой без ввода cvv кода и без прохождения 3d-secure

# Отмена платежа (Роутинг)

Используются стандартный API-запросы для возврата по ранее завершенной оплате, в соответствии с документацией.

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

При этом в запрос pay добавляется объект routing.source, содержащий схему распределения возврата между аккаунтами Саб-мерчантов. Для приема платежей: сумма значений amount из объекта routing должна быть равна верхнеуровневому amount!

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

Параметр Обязателен Параметр Обязателен
routing Да Объект, содержащий параметры роутинга.
routing.source string Да Массив, содержащий плательщиков.
routing.source.accountId string Да Идентификатор аккаунта плательщика.
routing.source.amount.value string Да Сумма, перечисляемая на аккаунт плательщика. Разделитель - точка.
routing.source.amount.currency string Да Валюта суммы, списанной с аккаунта плательщика. Сейчас всегда RUB.
routing.source.platformFeeAmount. value string Да Используется при возврате удержанной комиссии, может быть равно 0. Разделитель - точка.
routing.source.platformFeeAmount. currency string Да Валюта комиссии платформы. Сейчас всегда RUB.
routing.source.description string Нет Описание.

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

Запрос

POST https://secure.mandarinpay.com/api/transactions
{
	"payment": {
		"action": "reversal",
		"orderId": "your_unique_order_id",
    	"price": "5000.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"
	},
	"routing": {
		"source": [{
				"accountId": "16f90c5e-6bc3-11eb-9439-0242ac130002",
				"amount": {
					"value": "4000.00",
					"currency": "RUB"
				},
				"platformFeeAmount": {
					"value": "50.00",
					"currency": "RUB"
				},
				"description": ""
			},
			{
				"accountId": "8ba85f01-8cc8-4161-b45d-ce6442e678ae",
				"amount": {
					"value": "1000.00",
					"currency": "RUB"
				},
				"platformFeeAmount": {
					"value": "50.00",
					"currency": "RUB"
				},
				"description": ""
			}
		]
	},
	"urls": {
		"callback": "http://...",
		"return": "http://..."
	}
}

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

{
	"id": "43913ddc000c4d3990fddbd3980c1725"
}

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

{
	"error": "Invalid request"
}

# Перечисление средств (Роутинг)

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