Skip to content

Latest commit

 

History

History
450 lines (410 loc) · 16.5 KB

_splits_ru.html.md

File metadata and controls

450 lines (410 loc) · 16.5 KB

Сплитование платежей {#payments_split}

Сплитование платежей — решение, разработанное специально для маркетплейсов. Сплитование платежей позволяет рассчитываться с несколькими поставщиками товаров/услуг, производя одно списание с карты покупателя.

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

Интеграция с Платежной формой QIWI {#use-splits-qiwi-form}

Чтобы отправить платеж со сплитованием, передайте в запросе 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 Комментарий к заказу

Интеграция с Платёжной формой мерчанта {#use-splits-merchant-form}

Чтобы отправить платёж со сплитованием, передайте в запросе 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 Комментарий к заказу

Возвраты по сплитованным платежам {#split-refund}

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

Пример запроса с возвратами по сплитованному платежу

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 Комментарий к заказу

Уведомления по сплитованным операциям {#split-operations-notification}

Уведомления по сплитованным платежам и по возвратам сплитованных платежей формируются аналогично описанным выше ответам на запросы API: