Разделенный платеж
Разделенный платеж и статус разделенного платежа
Разделенный платеж API
Подробности конечной точки
Метод:
POST
URL: BASE_URL/merchant/splitPayment/
Заголовок:
Authorization: Bearer <ACCESS_TOKEN>Описание:
Разделяет сумму транзакции между несколькими получателями. Каждый получатель получает субтранзакцию на указанную сумму. Транзакция помечается как разделенная после успешного завершения.
💡 Примечание. Получите recipientId у поставщика услуг (Paylov).
Тело запроса
| Поле | Тип | Требуется | Описание |
|---|---|---|---|
transactionId | string | Да | Уникальный идентификатор транзакции. |
recipients | array | Да | Список получателей, получающих транзакцию. |
recipients[].recipientId | string | Да | Уникальный идентификатор получателя. |
recipients[].amount | number | Да | Сумма, выделенная получателю. |
recipients[].items | array | Нет | Список элементов, связанных с получателем. |
recipients[].items[].title | string | Да | Имя или название предмета. |
recipients[].items[].price | number | Да | Цена товара до скидок. |
recipients[].items[].discount | number | Да | Скидка применяется к товару. |
recipients[].items[].count | number | Да | Количество товара. |
recipients[].items[].code | string | Да | Уникальный код, идентифицирующий товар. |
recipients[].items[].vat_percent | number | Да | VAT процент, применимый к товару. |
recipients[].items[].package_code | string | Да | Код, представляющий тип пакета. |
recipients[].items[].pinfl | string | Нет | Идентификационный номер налогоплательщика (PINFL). |
resendOFD | boolean | Нет | Флаг, указывающий, следует ли повторно отправлять данные в фискальную систему. |
Запросить пример
{
"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
}Ответ
В случае успеха вы получите:
{
"result": {
"transactionId": "<transaction_id>"
}
}💡 Примечание. Если элементы включены в тело запроса, транзакция будет отправлена на OFD для генерации финансовых данных. Транзакция отправляется на OFD асинхронно, поэтому он не будет ждать ответа. OFD может быть задержан из-за большого трафика. После разделения платежа вы можете проверить статус с помощью специального метода. Если ответ не содержит данных OFD, вам необходимо повторно отправить запрос на разделение платежа с помощью
resendOFD: true.
Коды ошибок
permission_deniedtransaction_not_foundsplit_already_doneinvalid_amountrecipient_not_found
Пример для recipient_not_found:
{
"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
Заголовок:
Authorization: Bearer <ACCESS_TOKEN>Описание: Получает статус всех вложенных транзакций для разделенной транзакции.
| Параметр | Тип | Описание | Требуется |
|---|---|---|---|
transactionId | string | ID родительской транзакции. | Да |
Пример ответа
Об успехе,
{
"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_deniedtransaction_not_foundsplit_not_found
Замечания по реализации
Проверка разрешений. Убедитесь, что у мерчанта есть разделенные разрешения на оплату.
Проверка транзакции. Убедитесь, что родительская транзакция существует и принадлежит мерчанту.
Сопоставление статусов:
paidcancelledcheck