Сплитование платежей — решение, разработанное специально для маркетплейсов. Сплитование платежей позволяет рассчитываться с несколькими поставщиками товаров/услуг, производя одно списание с карты покупателя.
Чтобы подключить сплитование платежей, обратитесь к вашему сопровождающему менеджеру и запросите подключение решения.
Чтобы отправить платеж со сплитованием, передайте в запросе API Создание счёта массив splits
c данными поставщиков.
Пример выставления счёта с оплатой сплитованием
curl --location \
--request PUT \
'https://api.qiwi.com/partner/payin/v1/sites/Obuc-02/bills/eqwptt' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <token>' \
--data-raw '{
"amount": {
"value": "3.00",
"currency": "RUB"
},
"expirationDateTime": "2021-12-31T23:59:59+03:00",
"comment": "Мой комментарий",
"splits": [
{
"type": "MERCHANT_DETAILS",
"siteUid": "Obuc-00",
"splitAmount": {
"value": 2.00,
"currency": "RUB"
},
"orderId": "dressesforwhite",
"comment": "Платье"
},
{
"type": "MERCHANT_DETAILS",
"siteUid": "Obuc-01",
"splitAmount": {
"value": 1.00,
"currency": "RUB"
},
"orderId": "shoesforvalya",
"comment": "Туфли"
}
]
}'
Пример ответа при выставлении счета с оплатой сплитованием
{
"billId": "eqwptt",
"invoiceUid": "44b2ef2a-edc6-4aed-87d3-01cf37ed2732",
"amount": {
"currency": "RUB",
"value": "3.00"
},
"expirationDateTime": "2021-12-31T23:59:59+03:00",
"status": {
"value": "CREATED",
"changedDateTime": "2021-02-05T10:21:17+03:00"
},
"comment": "Мой комментарий",
"flags": [
"TEST"
],
"payUrl": "https://oplata.qiwi.com/form?invoiceUid=44b2ef2a-edc6-4aed-87d3-01cf37ed2732",
"splits": [
{
"type": "MERCHANT_DETAILS",
"siteUid": "Obuc-00",
"splitAmount": {
"currency": "RUB",
"value": "2.00"
},
"orderId": "dressesforwhite",
"comment": "Платье"
},
{
"type": "MERCHANT_DETAILS",
"siteUid": "Obuc-01",
"splitAmount": {
"currency": "RUB",
"value": "1.00"
},
"orderId": "shoesforvalya",
"comment": "Туфли"
}
]
}
Формат массива splits
в запросе:
Название | Тип | Описание |
---|---|---|
splits | Array | Массив данных о поставщиках |
----- | ------ | ------ |
type | String | Тип передаваемых данных. Доступные значения: MERCHANT_DETAILS (данные поставщика) |
siteUid | String | Зарегистрированный ID поставщика |
splitAmount | Object | Возмещение поставщику |
---- | ---- | ----- |
value | Number | Сумма возмещения, округленная в меньшую сторону до 2 десятичных знаков |
currency | String(3) | Буквенный код валюты возмещения по ISO. Доступен только RUB |
----- | ----- | ----- |
orderId | String | Номер заказа (необязательный) |
comment | String | Комментарий к заказу (необязательный) |
В объекте splits
ответа содержатся данные о сплитованных платежах:
Поле ответа | Тип | Описание |
---|---|---|
splits | Array | Массив с данными о сплитованных платежах |
----- | ------ | ------ |
type | String | Тип передаваемых данных. Всегда возвращается строка MERCHANT_DETAILS |
siteUid | String | ID поставщика |
splitAmount | Object | Данные о возмещении поставщику |
---- | ---- | ----- |
value | String | Сумма возмещения |
currency | String(3) | Буквенный код валюты возмещения по ISO |
----- | ----- | ----- |
orderId | String | Номер заказа |
comment | String | Комментарий к заказу |
Чтобы отправить платёж со сплитованием, передайте в запросе API Платёж JSON-массив paymentSplits
с данными поставщиков.
Пример платежа со сплитованием
{
"paymentMethod": "...",
"customer": "....",
"deviceData": "...",
"paymentSplits": [
{
"type":"MERCHANT_DETAILS",
"siteUid":"shop_mst-01",
"splitAmount": {
"value":300.00,
"currency":"RUB"
},
"orderId":"dasdad444ll4ll",
"comment":"Цветы"
},
{
"type":"MERCHANT_DETAILS",
"siteUid":"shop_mst-02",
"splitAmount": {
"value":200.00,
"currency":"RUB"
},
"orderId":"sdadada887sdDDDDd",
"comment":"Фрукты"
}
]
}
Пример ответа на платеж со сплитованием
{
"paymentId": "23",
"billId": "autogenerated-2a8fcfab-45cb-43b9-81bd-edf65e0ef874",
"createdDateTime": "2020-10-12T15:29:12+03:00",
"amount": {
"currency": "RUB",
"value": "100.00"
},
"capturedAmount": {
"currency": "RUB",
"value": "100.00"
},
"refundedAmount": {
"currency": "RUB",
"value": "0.00"
},
"paymentMethod": "..",
"status": "..",
"paymentCardInfo": "..",
"paymentSplits": [
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-01",
"splitAmount": {
"currency": "RUB",
"value": "30.00"
},
"splitCommissions": {
"merchantCms": {
"currency": "RUB",
"value": "10.00"
}
},
"orderId": "313fh1f23j13k1k",
"comment": "Товар из корзины"
},
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-02",
"splitAmount": {
"currency": "RUB",
"value": "20.00"
},
"splitCommissions": {
"merchantCms": {
"currency": "RUB",
"value": "10.00"
}
},
"orderId": "sdadada887sdDDDDd",
"comment": "Фрукты"
},
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-03",
"splitAmount": {
"currency": "RUB",
"value": "50.00"
},
"splitCommissions": {
"merchantCms": {
"currency": "RUB",
"value": "10.00"
}
},
"orderId": "dasdad444ll4ll",
"comment": "Цветы"
}
]
}
Формат массива paymentSplits
в запросе:
Название | Тип | Описание |
---|---|---|
paymentSplits | Array | Массив данных о поставщиках |
----- | ------ | ------ |
type | String | Тип передаваемых данных. Доступные значения: MERCHANT_DETAILS (данные поставщика) |
siteUid | String | ID поставщика |
splitAmount | Object | Возмещение поставщику |
---- | ---- | ----- |
value | Number | Сумма возмещения, округленная в меньшую сторону до 2 десятичных знаков |
currency | String(3) | Буквенный код валюты возмещения по ISO. Доступен только RUB |
----- | ----- | ----- |
orderId | String | Номер заказа (необязательный) |
comment | String | Комментарий к заказу (необязательный) |
В объекте paymentSplits
ответа содержатся данные о принятых платежах и комиссиях:
Поле ответа | Тип | Описание |
---|---|---|
paymentSplits | Array | Массив с данными о принятых платежах |
----- | ------ | ------ |
type | String | Тип передаваемых данных. Всегда возвращается строка MERCHANT_DETAILS |
siteUid | String | ID поставщика |
splitAmount | Object | Данные о возмещении поставщику |
---- | ---- | ----- |
value | String | Сумма возмещения |
currency | String(3) | Буквенный код валюты возмещения по ISO |
---- | ---- | ----- |
splitCommissions | Object | Данные о комиссии (необязательный) |
----- | ---- | ----- |
merchantCms | Object | Данные о комиссии с поставщика |
---- | ----- | ---- |
value | String | Сумма комиссии |
currency | String(3) | Буквенный код валюты комиссии по ISO |
----- | ----- | ----- |
orderId | String | Номер заказа |
comment | String | Комментарий к заказу |
После успешной авторизации списания денежных средств доступен возврат средств по операции сплитованного платежа. Поддерживается как полный, так и частичный возврат.
Пример запроса с возвратами по сплитованному платежу
PUT /partner/payin/v1/sites/test-01/payments/23/refunds/1 HTTP/1.1
Accept: application/json
Authorization: Bearer 5c4b25xx93aa435d9cb8cd17480356f9
Content-type: application/json
Host: api.qiwi.com
{
"amount": {
"value": 100.00,
"currency": "RUB"
},
"refundSplits": [
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-01",
"splitAmount": {
"value": 30.00,
"currency": "RUB"
},
"orderId": "sdadada887sdDDDDd",
"comment": "Фрукты"
},
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-02",
"splitAmount": {
"value": 20.00,
"currency": "RUB"
},
"orderId": "313fh1f23j13k1k",
"comment": "Товар из корзины"
},
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-03",
"splitAmount": {
"value": 50.00,
"currency": "RUB"
},
"orderId": "dasdad444ll4ll",
"comment": "Цветы"
}
]
}
Пример ответа
{
"refundId": "1",
"createdDateTime": "2020-10-12T15:32:29+03:00",
"amount": {
"currency": "RUB",
"value": "100.00"
},
"status": {
"value": "COMPLETED",
"changedDateTime": "2020-10-12T15:32:30+03:00"
},
"refundSplits": [
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-02",
"splitAmount": {
"currency": "RUB",
"value": "20.00"
},
"splitCommissions": {
"merchantCms": {
"currency": "RUB",
"value": "10.00"
}
},
"orderId": "sdadada887sdDDDDd",
"comment": "Фрукты"
},
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-01",
"splitAmount": {
"currency": "RUB",
"value": "30.00"
},
"splitCommissions": {
"merchantCms": {
"currency": "RUB",
"value": "10.00"
}
},
"orderId": "313fh1f23j13k1k",
"comment": "Товар из корзины"
},
{
"type": "MERCHANT_DETAILS",
"siteUid": "shop_mst-03",
"splitAmount": {
"currency": "RUB",
"value": "50.00"
},
"splitCommissions": {
"merchantCms": {
"currency": "RUB",
"value": "10.00"
}
},
"orderId": "dasdad444ll4ll",
"comment": "Цветы"
}
]
}
В запросе API Операция возврата передайте JSON-массив refundSplits
с данными о возвратах. Укажите общую сумму возврата и сумму возврата для каждого сплита.
Формат массива refundSplits
в запросе:
Название | Тип | Описание |
---|---|---|
refundSplits | Array | Массив данных о возвратах |
----- | ------ | ------ |
type | String | Тип передаваемых данных. Доступные значения: MERCHANT_DETAILS (данные поставщика) |
siteUid | String | ID поставщика |
splitAmount | Object | Информация об отменённом возмещении поставщику |
---- | ---- | ----- |
value | Number | Сумма отменённого возмещения, округленная в меньшую сторону до 2 десятичных знаков |
currency | String(3) | Буквенный код валюты отменённого возмещения по ISO. Доступен только RUB |
----- | ----- | ----- |
orderId | String | Номер заказа (необязательный) |
comment | String | Комментарий к заказу (необязательный) |
В JSON-массиве refundSplits
ответа содержатся данные о принятых возвратах:
Поле ответа | Тип | Описание |
---|---|---|
refundSplits | Array | Массив данных о возвратах |
----- | ------ | ------ |
type | String | Тип передаваемых данных. Всегда возвращается строка MERCHANT_DETAILS |
siteUid | String | ID поставщика |
splitAmount | Object | Информация об отменённом возмещении поставщику |
---- | ---- | ----- |
value | String | Сумма отменённого возмещения |
currency | String(3) | Буквенный код валюты отменённого возмещения по ISO |
---- | ---- | ----- |
splitCommissions | Object | Информация о комиссии (необязательный) |
----- | ---- | ----- |
merchantCms | Object | Информация о комиссии с поставщика |
---- | ----- | ---- |
value | String | Сумма комиссии |
currency | String(3) | Буквенный код валюты комиссии по ISO |
----- | ----- | ----- |
orderId | String | Номер заказа |
comment | String | Комментарий к заказу |
Уведомления по сплитованным платежам и по возвратам сплитованных платежей формируются аналогично описанным выше ответам на запросы API:
- В тело уведомления с типом
PAYMENT
добавляется JSON-массивpaymentSplits
с информацией о платежах поставщиков. - В тело уведомления с типом
REFUND
добавляется JSON-массивrefundSplits
с информацией о возвратах.