Skip to content

Разделенный платеж

Разделенный платеж и статус разделенного платежа

Разделенный платеж API

Подробности конечной точки

Метод: POST
URL: BASE_URL/merchant/splitPayment/
Заголовок:

http
Authorization: Bearer <ACCESS_TOKEN>

Описание:
Разделяет сумму транзакции между несколькими получателями. Каждый получатель получает субтранзакцию на указанную сумму. Транзакция помечается как разделенная после успешного завершения.

💡 Примечание. Получите recipientId у поставщика услуг (Paylov).

Тело запроса

ПолеТипТребуетсяОписание
transactionIdstringДаУникальный идентификатор транзакции.
recipientsarrayДаСписок получателей, получающих транзакцию.
recipients[].recipientIdstringДаУникальный идентификатор получателя.
recipients[].amountnumberДаСумма, выделенная получателю.
recipients[].itemsarrayНетСписок элементов, связанных с получателем.
recipients[].items[].titlestringДаИмя или название предмета.
recipients[].items[].pricenumberДаЦена товара до скидок.
recipients[].items[].discountnumberДаСкидка применяется к товару.
recipients[].items[].countnumberДаКоличество товара.
recipients[].items[].codestringДаУникальный код, идентифицирующий товар.
recipients[].items[].vat_percentnumberДаVAT процент, применимый к товару.
recipients[].items[].package_codestringДаКод, представляющий тип пакета.
recipients[].items[].pinflstringНетИдентификационный номер налогоплательщика (PINFL).
resendOFDbooleanНетФлаг, указывающий, следует ли повторно отправлять данные в фискальную систему.

Запросить пример

json
{
  "transactionId": "9b3bd7be-9327-4608-b886-4353e49df05f",
  "recipients": [
    {
      "recipientId": "string",
      "amount": 100,  #in tiyn
      "items": [
        {
          "title": "string",
          "price": 0,
          "discount": 0,
          "count": 0,
          "code": "string",
          "vat_percent": 0,
          "package_code": "string",
          "tin": "string", # tin or pinfl
          "pinfl": "string"
        }
      ]
    },
    {
      "recipientId": "abda5234-16aq-4896-90a2-b095ff557654",
      "amount": 100
    }

  ],
 "resendOFD": false
}

Ответ

В случае успеха вы получите:

json
{
  "result": {
    "transactionId": "<transaction_id>"
  }
}

💡 Примечание. Если элементы включены в тело запроса, транзакция будет отправлена ​​на OFD для генерации финансовых данных. Транзакция отправляется на OFD асинхронно, поэтому он не будет ждать ответа. OFD может быть задержан из-за большого трафика. После разделения платежа вы можете проверить статус с помощью специального метода. Если ответ не содержит данных OFD, вам необходимо повторно отправить запрос на разделение платежа с помощью resendOFD: true.

Коды ошибок

  • permission_denied
  • transaction_not_found
  • split_already_done
  • invalid_amount
  • recipient_not_found

Пример для recipient_not_found:

json
{
  "error": {
    "code": "recipient_not_found",
    "message": "One or more recipients not found.",
    "data": {
      "notFoundRecipientIds": [
        "<recipient_id>"
      ]
    }
  }
}

Примечания по реализации

  • Проверка разрешений. Проверяет, что у мерчанта есть разделение разрешений на оплату.
  • Проверка:
    • Проверяет, что транзакция существует и еще не разделена.
    • Гарантирует, что сумма сумм получателей соответствует сумме транзакции.
    • Проверяет существование мерчантов-получателей.

Разделить статус платежа API

Подробности конечной точки

Метод: GET
URL: BASE_URL/merchant/splitPayment/status/?transactionId=your_transaction_id
Заголовок:

http
Authorization: Bearer <ACCESS_TOKEN>

Описание: Получает статус всех вложенных транзакций для разделенной транзакции.

ПараметрТипОписаниеТребуется
transactionIdstringID родительской транзакции.Да

Пример ответа
Об успехе,

json
{
  "result": [
    {
      "recipientId": "ccda5111-66a0-4896-90a2-b095ff558129",
      "amount": 100,  #in tiyn
      "status": "paid",
      "createdAt": "2025-01-06 17:17:17"
    },
    {
      "recipientId": "ffddb832-4bd2-410c-a1d9-26dv9fefb111",
      "amount": 100,
      "status": "paid",
      "createdAt": "2025-01-06 17:17:17"
    }
  ]
}

Коды ошибок

  • permission_denied
  • transaction_not_found
  • split_not_found

Замечания по реализации

  • Проверка разрешений. Убедитесь, что у мерчанта есть разделенные разрешения на оплату.

  • Проверка транзакции. Убедитесь, что родительская транзакция существует и принадлежит мерчанту.

  • Сопоставление статусов:

    • paid
    • cancelled
    • check