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

Разделение платежа

Разделение платежа (split payment) - это способ проведения оплаты в маркетплейсе, при котором одна транзакция направляется в адрес двух и более юридических лиц (магазинов в системе eComCharge).

Условия использования разделения платежа

Ограничения использования разделения платежа

  • Работает только с токенами карт.
  • Маркетплейс должен быть зарегистрирован в системе eComCharge как отдельный магазин.
  • Магазины маркетплейса должны быть зарегистрированы в системе eComCharge и иметь Shop ID магазина.
  • Валюта транзакции в адрес магазинов маркетплейса определяется валютой транзакции списания средств с клиента. Возможность установки отдельной валюты для платежей в адрес магазинов маркетплейса отсутствует (конвертер валют не работает с разделением платежей).

Распределение сумм платежей через операцию разделения платежа

  • Сумма, которая будет списана с карты клиента, указывается в параметре amount в запросе разделения платежа.
  • Сумма, которая будет выплачена каждому магазину, указывается в секции split в запросе разделения платежа.
  • Сумма, которая будет выплачена маркетплейсу (комиссия маркетплейса), рассчитывается как разница между суммой amount, указанной в запросе разделения платежа, и суммами платежей каждому магазину из секции split.

Запрос разделения платежа

Для проведения платежа с разделением суммы отправьте POST запрос на https://api.ecomcharge.com/splits/payment с такими же параметрами как у запросов авторизации или оплаты и дополнительной секцией split:

Параметр Тип Описание
amount * обязательный
integer Сумма, которая будет списана с карты пользователя в минимальных денежных единицах (например, $32.45 это 3245)
additional_data object Секция дополнительной информации о платеже.
split object Секция, содержащая информацию о магазинах, принимающих участие в разделении платежа.
{shop ID} * обязательный
integer Сумма в минимальных денежных единицах, которая должна быть выплачена магазину (например, $32.45 это 3245). Сумма платежей в адрес магазинов не должна превышать или быть равной сумме, указанной в параметре amount.

Ключ параметра должен содержать Shop ID того магазина, который принимает участие в разделении платежа.

Авторизация запроса разделенного платежа выполняется при помощи заголовков с учетными данными главного магазина (маркетплейса). Авторизация для магазинов маркетплейса выполняется автоматически по их shop ID, которые указываются в запросе на разделение платежа в секции split.

Пример запроса
{
  "request": {
    "amount": 100,
    "currency": "USD",
    "description": "Test transaction",
    "tracking_id": "tracking_id_000",
    "billing_address": {
      "first_name": "John",
      "last_name": "Doe",
      "country": "US",
      "city": "Denver",
      "state": "CO",
      "zip": "96002",
      "address": "1st Street"
    },
    "credit_card": {
      "token": "credit-card-token"
    },
    "customer": {
      "ip": "127.0.0.1",
      "email": "john@example.com",
      "device_id": "12312312321fff67",
      "birth_date": "1980-01-31"
    },
    "additional_data": {
      "contract": "test",
      "split": {
        "241": 40,
        "242": 50
      }
    }
  }
}

Ответ

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

Параметр Тип Описание
uid * обязательный
string UID транзакции.
amount * обязательный
integer Сумма в минимальных денежных единицах. Например, $32.45 это 3245.
status * обязательный
string Возможны стандартные статусы транзакций и статус cancelling - запрошена отмена транзакций (все транзакции будут отменены или уже отменены).
message * обязательный
string Сообщение с результатом запроса.
shop_id * обязательный
integer Shop ID магазина.
parent * обязательный
boolean Допустимые значения:
true - родительская (главная) транзакция (комиссия маркетплейса). Родительская транзакция обрабатывается первой.
false - транзакция в адрес магазина маркетплейса.
parent_uid * обязательный
string UID родительской транзакции.
Пример успешного ответа
{
  "splits": [
    {
      "uid": "21-99834feb0b",
      "amount": 70,
      "status": "successful",
      "message": "Successfully processed",
      "shop_id": 91,
      "parent": true,
      "parent_uid": null
    },
    {
      "uid": "22-56784ffecd",
      "amount": 10,
      "status": "successful",
      "message": "Successfully processed",
      "shop_id": 1111,
      "parent": false,
      "parent_uid": "21-99834feb0b"
    },
    {
      "uid": "23-abcd4f1234",
      "amount": 20,
      "status": "successful",
      "message": "Successfully processed",
      "shop_id": 2222,
      "parent": false,
      "parent_uid": "21-99834feb0b"
    }
  ]
}
Пример ответа, если одна из транзакций была отклонена
{
  "splits": [
    {
      "uid": "21-99834feb0b",
      "amount": 10,
      "status": "cancelling",
      "message": "Cancel has been requested.",
      "shop_id": 240,
      "parent": true,
      "parent_uid": "nil"
    },
    {
      "uid": "123",
      "amount": 40,
      "status": "cancelling",
      "message": "Cancel has been requested.",
      "shop_id": 241,
      "parent": false,
      "parent_uid": "21-99834feb0b"
    },
    {
      "uid": "234",
      "amount": 50,
      "status": "failed",
      "message": "Decline",
      "shop_id": 242,
      "parent": false,
      "parent_uid": "21-99834feb0b"
    }
  ]
}
Пример ответа, если сумма платежей в адрес магазинов выше или равна сумме, указанной в параметре amount

HTTP статус код 422.

{
  "message": "Split sum is equal or more than main amount."
}

Отмена разделения платежа

Если хотя бы одна транзакция из разделенного платежа будет отклонена или вернет ошибку, система отменит все предыдущие транзакции.

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

  • Если главная транзакция была отклонена шлюзом или эквайером, eComCharge не будет обрабатывать все оставшиеся транзакции из запроса на разделение платежа.
  • Если главная транзакция была успешно обработана, но первая транзакция из запроса на разделение платежа не была успешно завершена, eComCharge отправит для главной транзакции запрос на отмену авторизации или возврат средств.
  • Если главная транзакция была успешно обработана, и несколько транзакций из запроса на разделение платежа были успешно обработаны, но последняя транзакция была отклонена шлюзом или эквайером, eComCharge отменит авторизацию или выполнит возврат средств для всех предыдущих транзакций, включая главную.
  • Если ошибка произойдет до отправки каких-либо запросов на шлюз, eComCharge также обработает этот случай и вернет стандартное сообщение об ошибке.