По любому вопросу мы в одном клике

Задать вопрос

Расщепление платежей

Функциональность Расщепление e-commerce платежей дает возможность разделить сумму платежа, поступившего на транзитный счет в рамках интернет-эквайринга на несколько частей. Затем части платежа зачисляются на текущие счета или платежные карты бенефициаров.

Ниже приведено описание функциональности и API запросов мерчанта.

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

Описание

Регистрация Мерчанта-партнера

sequenceDiagram participant MA as Мерчант-агрегатор (МА) participant Bank as Банк autonumber MA->>Bank: Запрос регистрации мерчанта
merchantPartner.do, type=add Bank->>Bank: Проверка наличия МП  Bank->>Bank: Создание МП с указанием данных мерчанта Bank->>Bank: Проверка наличия клиента МП в разрезе МА  Bank->>Bank: Создание данных клиента, контракта и счета МП в разрезе МА.
Присвоение рег. номера МП в разрезе МА Bank->>Bank: Взаимодействие с WAY4 для создания
клиента и обновление данных по МП, контракту и счету Bank-->>MA: Ответ на запрос, regNumber
  1. Mерчант-агрегатор (далее МА) отправляет запрос на регистрацию мерчанта-партнера (далее МП) merchantPartner.do, type=add с указанием данных о клиенте, контракта и счета в Банк.
  2. Банк проверяет, что МП отсутствует в справочнике МП.
  3. Банк создает МП с указанием данных мерчанта.
  4. Банк проверяет, что отсутствуют данные о клиенте МП в разрезе МА.
  5. Банк создает данные о клиенте, контракте, и счете МП в разрезе МА.
  6. Банк взаимодействует с WAY4 для создания клиента и обновляет данные по контракту и счету МП в разрезе МА.
  7. Банк отправляет МА ответ на запрос регистрации МП с указанием регистрационных номеров МП.

Возможные ошибки

Редактирование данных о МП

sequenceDiagram participant MA as Мерчант-агрегатор (МА) participant Bank as Банк autonumber MA->>Bank: Запрос регистрации мерчанта
merchantPartner.do, type=edit Bank->>Bank: Проверка наличия МП Bank->>Bank: Проверка уникальности изменяемых данных Bank->>Bank: Взаимодействие с WAY4 для редактирования
клиента, контракта, ППП, regNumber Bank->>Bank: Обновление данных по МП, контракту, ППП Bank-->>MA: Ответ на запрос, status
  1. Mерчант-агрегатор (далее МА) отправляет запрос на регистрацию мерчанта-партнера (далее МП) merchantPartner.do, type=edit с указанием идентификатора клиента и изменяемыми данными в Банк.
  2. Банк проверяет, что МП присутствует в справочнике МП.
  3. Банк проверяет, что изменяемые данные отличаются от существующих.
  4. Банк взаимодействует с WAY4 для редактирования клиента, контракта и счета.
  5. Банк обновляет соответствующие данные о МП, контракте, счете.
  6. Банк отправляет ответ на запрос регистрации МП МА.

Возможные ошибки

Проведение оплаты

Ниже описан типовой сценарий проведения оплаты - двухстадийная оплата, т.к. после отправки запроса deposit.do банк получает от WAY4 сумму комиссии, которая учитывается при подаче инструкций на расщепление. Но если у вас есть возможность получать комиссию иным способом, вы можете использовать одностадийную оплату с использованием запросов register.do и paymentorder.do (см. Прямые платежи).

sequenceDiagram participant Client as Клиент participant MA as Мерчант-агрегатор participant Bank as Банк autonumber Client->>MA: Формирование заказа activate Client activate MA MA->>Bank: Запрос регистрации заказа с предавторизацией registerPreAuth.do activate Bank Bank->>Bank: Регистрация заказа Bank-->>MA: Ответ на запрос, orderId deactivate Bank MA->>Client: Перенаправление на Платежную форму deactivate Client deactivate MA Client->>Bank: Отправка данных заполненной формы activate Client activate Bank Bank->>Bank: Проверка вовлеченности в 3DS Bank->>Client: Платежная форма deactivate Client deactivate Bank Client->>Client: Авторизация на ACS activate Client activate Bank Bank->>Bank: Блокировка денежных средств Bank-->>Client: Перенаправление в магазин deactivate Client deactivate Bank Client->>MA: Получить страницу с результатом activate Client activate MA MA->>Bank: Запрос статуса заказа, getOrderStatusExtended.do activate Bank Bank-->>MA: Ответ на запрос, статус заказа deactivate Bank MA->>Client: Перенаправление на финишную страницу deactivate MA deactivate Client MA->>Bank: Запрос завершения оплаты заказа deposit.do activate MA activate Bank Bank-->>Bank: Взаимодействие с WAY4
для обработки запроса
и получения суммы комиссии Bank-->>MA: Ответ на запрос deactivate Bank deactivate MA MA->>Bank: Запрос статуса заказа getOrderStatusExtended.do activate MA activate Bank Bank-->>MA: Ответ на запрос, paymentAmountInfo.feeAmount, authRefNum deactivate Bank deactivate MA
  1. Клиент формирует заказ.
  2. МА выполняет запрос регистрации заказа с предавторизацией registerPreAuth.do.
  3. Банк регистрирует заказ
  4. Банк возвращает orderId.
  5. Клиент перенаправляется на платежную страницу.
  6. Клиент отправляет заполненные данные.
  7. Банк проверяет вовлеченность карты в 3DS.
  8. Клиент перенаправляется на платежную страницу.
  9. Клиент выполняет авторизацию на ACS.
  10. Банк выполняет блокировку денежных средств.
  11. Клиент перенаправляется на страницу магазина.
  12. Браузер клиента запрашивает результат.
  13. МА отправляет запрос статуса заказа getOrderStatusExtended.do.
  14. Банк возвращает ответ на запрос статуса заказа.
  15. МА перенаправляет Клиента на финишную страницу.
  16. МА отправляет запрос завершения оплаты deposit.do.
  17. Банк взаимодействует с WAY4 для обработки запроса и получения суммы комиссии.
  18. Банк возвращает ответ на запрос завершения оплаты.
  19. МА отправляет запрос статуса заказа getOrderStatusExtended.do.
  20. Банк возвращает ответ на запрос статуса заказа. При этом в поле paymentAmountInfo.feeAmount возвращается размер комиссии, а в параметре authRefNum - уникальный номер операции. Эти параметры нужно будет указать при передаче инструкций на расщепление.

Отмена оплаты

sequenceDiagram participant MA as Мерчант-агрегатор (МА) participant Bank as Банк autonumber MA->>Bank: Запрос отмены оплаты
reverse.do Bank->>Bank: Проведение отмены оплаты Bank-->>MA: Ответ на запрос отмены оплаты MA->>Bank: Запрос статуса заказа getOrderStatusExtended.do Bank-->>MA: Ответ на запрос
  1. МА отправляет запрос отмены оплаты reverse.do в Банк.
  2. Банк выполняет отмену оплаты.
  3. Банк возвращает ответ на запрос отмены оплаты.
  4. МА отправляет запрос статуса заказа getOrderStatusExtended.do.
  5. Банк возвращает ответ на запрос статуса заказа.

Возврат оплаты

sequenceDiagram participant MA as Мерчант-агрегатор (МА) participant Bank as Банк autonumber MA->>Bank: Запрос возврата
refund.do Bank->>Bank: Проведение возврата Bank-->>MA: Ответ на запрос возврата MA->>Bank: Запрос статуса заказа getOrderStatusExtended.do Bank-->>MA: Ответ на запрос (refunds.referenceNumber)
  1. МА отправляет запрос возврата refund.do в Банк.
  2. Банк выполняет возврат.
  3. Банк возвращает ответ на запрос возврата.
  4. МА отправляет запрос статуса заказа getOrderStatusExtended.do.
  5. Банк возвращает ответ на запрос статуса заказа. В поле refunds.referenceNumber возвращается уникальный идентификационный номер операции, который необходимо указать при передаче инструкций на расщепление.

Передача инструкций по расщеплению

sequenceDiagram participant MA as Мерчант-агрегатор (МА) participant Bank as Банк autonumber MA->>Bank: Запрос передачи инструкций по расщеплению
splitInstruction.do Bank->>Bank: Необходимые проверки Bank->>Bank: Сохранение инструкций по расщеплению Bank->>Bank: Взаимодействие с WAY4,
обработка каждой инструкции,
указанной в запросе Bank-->>MA: Ответ на запрос
  1. МА отправляет запрос передачи инструкций на расщепление splitInstruction.do в Банк с указанием идентификатора заказа, уникального идентификатора операции (поле referenceNumber), а также данных по расщеплению.
  2. Банк выполняет необходимые проверки (отсутствие дублей инструкций, корректность данных и т.д.), а также определяет направление инструкций по расщеплению, полученных от МА - инструкции относятся платежу или к возврату платежа (полному или частичному).
  3. Банк сохраняет инструкции на расщепление в БД.
  4. Банк взаимодействует с WAY4 для обработки каждой инструкции по расщеплению, указанной в запросе.
  5. Банк возвращает успешный ответ на запрос регистрации инструкции на расщепление splitInstruction.do.

Возможные ошибки

API запросы

Для авторизации обращения к системе Банка в любом запросе со стороны магазина должны быть приведены имя и пароль магазина, полученные при регистрации магазина в системе. Взаимодействия реализуются как HTTP обращения методом POST на определенные URL. Body запроса должен содержать json-объект. Результат обработки запроса возвращается в виде JSON объекта. Например: {"errorCode":"12","errorMessage":"Empty amount"}.

Все текстовые поля должны иметь кодировку Юникод (UTF-8). Если в ответе на запрос errorCode (Код ошибки) = 0, это означает, что запрос был обработан платежным шлюзом без системных ошибок. При этом errorCode не отображает статус заказа.

Регистрация мерчанта-партнера

Запрос merchantPartner.do позволяет мерчанту-агрегатору создавать и редактировать сведения о мерчанте-партнере.

Параметры запроса

Обязательность при type=add Обязательность при type=edit Название Тип Описание
Обязательно Обязательно

userName String [1..100] Логин учетной записи API продавца.
Обязательно Обязательно

password String [1..30] Пароль учетной записи API продавца.
Обязательно Обязательно

merchants Array Массив данных по Мерчантам-партнерам. См. описание ниже.

Параметры блока merchants:

Обязательность при type=add Обязательность при type=edit Название Тип Описание
Обязательно Обязательно

type String [1..4] Тип действия с Мерчантом-партнером:
  • add - добавление мерчант-партнера;
  • edit - редактирование сведений о мерчанте-партнере/постоянном платежном получении.

В случае type=edit указываются только те поля, которые должны быть отредактированы. При передачи неизменяемых параметров будет возвращена ошибка. В случае type=edit передавать незаполненные поля запрещено.
Необязательно Обязательно

regNumber String [1..11] Регистрационный номер Мерчант-партнера. Указывается, только если type=edit.
Обязательно Необязательно

unp String [1..9] Учетный номер плательщика (УНП) Юридических лиц и Индивидуальных предпринимателей (9 цифр). Обязательно, если type=add. Формат: первые 2 символа - буквы или цифры 0-9, с 3 по 9 символы - цифры 0-9.
Обязательно Необязательно

shortName String [1..255] URL страницы МП на платформе (или наименование интернет-ресурса для приложений) в формате merchant.com. Обязательно, если type=add.
Обязательно Необязательно

companyName String [1..255]
  • Для физических лиц (ФЛ) указывается Фамилия Имя Отчество;
  • Для индивидуальных предпринимателей (ИП) - ИП Фамилия Имя Отчество;
  • Для юридических лиц (ЮЛ) - полное наименование ЮЛ с указанием формы собственности.
Допустимо указание только символов кириллицы. Обязательно, если type=add.
Обязательно Необязательно

companyTradeName String [1..255]
  • Для физических лиц (ФЛ) указывается Фамилия Имя Отчество;
  • Для индивидуальных предпринимателей (ИП) - торговое наименование (или ИП фамилия имя отчество );
  • Для юридических лиц (ЮЛ) - торговое название предприятия.
Допустимо указание только символов кириллицы. Обязательно, если type=add.
Обязательно Необязательно

order Object Блок сведений о постоянном платежном поручении. Обязательно, если type=add. См. описание ниже.

Параметры блока order:

Обязательность при type=add Обязательность при type=edit Название Тип Описание
Обязательно Необязательно

targetNumber String [1..28] Номер счета. Обязательно, если type=add. Допустимо указание только цифр и символов латиницы. В случае, если type=edit и текущий счет зарегистрирован в Альфа Банк Беларусь, то новый счет также должен быть зарегистрирован в Альфа Банк Беларусь (в targetNumber с 5 по 8 символы указано значение ALFA).
Условие Необязательно

bic String [1..8] Банковский идентификационный код. Обязательно только в случае, если type=add и счет зарегистрирован не в АББ (в targetNumber с 5 по 8 символы значение отличается от ALFA).
Условие Необязательно

currency String [3] Валюта счета. Обязательно только в случае, если type=add и счет зарегистрирован в АББ (в targetNumber с 5 по 8 символы указано значение ALFA). В этом случае указывается одно из следующих значений:
  • BYN - белорусский рубль;
  • USD - доллар США;
  • EUR - евро.

В случае, если счет зарегистрирован не в АББ, то не указывается, либо указывается значение BYN. В случае, если type=edit, то не указывается. В случае изменения валюты у МП, необходимо зарегистрировать нового МП.

Параметры ответа

Обязательность Название Тип Описание
Обязательно

status String [1..20] Статус обработки запроса. Доступны следующие значения:
  • COMPLETE - запрос обработан успешно;
  • COMPLETE_WITH_ERRORS - запрос обработан с ошибками.
Статус COMPLETE_WITH_ERRORS возвращается, если хотя бы один из Мерчантов-партнеров не был зарегистрирован.
Обязательно

merchants Array Массив данных по Мерчантам-партнерам. См. описание ниже.

Параметры блока merchants:

Обязательность Название Тип Описание
Обязательно

regNumber String [1..11] Регистрационный номер Мерчант-партнера.
Обязательно

unp String [1..9] Учетный номер плательщика (УНП) Юридических лиц и Индивидуальных предпринимателей (9 цифр). Обязательно, если type=add. Формат: первые 2 символа - буквы или цифры 0-9, с 3 по 9 символы - цифры 0-9.
Обязательно

status String [1..6] Статус регистрации Мерчанта-партнера. Доступны следующие значения:
  • SUCCESS - регистрация пройдена успешно;
  • FAIL - регистрация не выполнена.
Необязательно

error String [1..512] Сообщение об ошибке (если в ответе вернулась ошибка) на языке, переданном в запросе.

Параметры блока error:

Обязательность Название Тип Описание
Обязательно

errorCode String Код ошибки. Доступны следующие значения:
  • -146100500 - GENERAL ERROR;
  • -246100500 - EXTERNAL_COMMUNICATION_ERROR;
  • -346100500 - PARTNER_ALREADY_REGISTERED;
  • -346100501 - PARTNER_DOESNT_EXIST;
  • -446100501 - SAME_DATA.
Полный перечень ошибок необходимо уточнять у Банка.
Необязательно

errorDesc String [1..99] Описание ошибки.

Примеры

Пример запроса - регистрация МП

curl --request POST \
  --url https://abby.rbsuat.com/split-abb/partner/merchantPartner.do \
  --header 'content-type: application/json;charset=UTF-8' \
  --data userName=username \
  --data password=password \
  --data merchants={"type": "add", "unp": "623458985", "shortName": "merchant.ru", "companyName": "Company Name", "companyTradeName": "Company TradeName"}'
  --data order={"targetNumber": "723456789", "bic": "PJCBBY2X", "currency": "BYN"}'

Пример запроса - изменение МП

curl --request POST \
  --url https://abby.rbsuat.com/split-abb/partner/merchantPartner.do \
  --header 'content-type: application/json;charset=UTF-8' \
  --data userName=username \
  --data password=password \
  --data merchants={"type": "edit", "regNumber": "SPLIT000087", "companyName": "Companyname"}'

Пример успешного ответа

{   "status": "COMPLETE", 
    "merchants":[{
        "regNumber":"SPLIT000087",
        "unp":"623458985",
        "status":"SUCCESS",
        "error":null
        }
    ]
}

Пример неуспешного ответа - попытка повторной регистрации МП

{
    "status": "COMPLETE_WITH_ERRORS", 
    "merchants":[{
        "regNumber":null,
        "unp":"623458985",
        "status":"FAIL",
        "error":{"errorCode":-346100500,"errorDesc":"Partner already registered"}
            }
        ]
    }

Передача инструкции по расщеплению

Запрос splitInstruction.do позволяет мерчанту-агрегатору отправлять инструкции на расщепление платежей по мерчант-партнеру.

Параметры запроса

Обязательность Название Тип Описание
Обязательно

userName String [1..100] Логин учетной записи API продавца.
Обязательно

password String [1..30] Пароль учетной записи API продавца.
Обязательно

orderId String [1..36] Номер заказа в платежном шлюзе. Уникален в пределах платежного шлюза.
Обязательно

referenceNumber String [12] Уникальный идентификационный номер, который присваивается операции по ее завершению.
Обязательно

instructions Array Массив данных по инструкциям по расщеплению в рамках указанного заказа. Допускается указание от 1 до 50 инструкций. См. описание ниже.

Параметры блока instructions:

Обязательность Название Тип Описание
Необязательно

splitid String [1..30] Идентификатор инструкции в системе МА. Используется для удобства отслеживания статуса инструкции по расщеплению.
Обязательно

regNumber String [1..11] Регистрационный номер Мерчант-партнера, полученный в ответе на запрос регистрации МП - merchantPartner.do.
Обязательно

amount Integer [0..12] Сумма расщепления в минимальных единицах валюты (например, в копейках), указанной при регистрации заказа.
Необязательно

sign String [1..20] Знак суммы расщепления. Доступны следующие значения:
  • + - положительная сумма;
  • - - отрицательная сумма.
Отрицательная сумма используется для возмещения расходов комиссии для мерчанта-агрегатора. В случае, если знак не указан, то по умолчанию считается значение sign="+".

Параметры ответа

Обязательность Название Тип Описание
Обязательно

status String [1..20] Статус обработки запроса. Доступны следующие значения:
  • COMPLETE - запрос обработан успешно;
  • COMPLETE_WITH_ERRORS - запрос обработан с ошибками.
Статус COMPLETE_WITH_ERRORS возвращается, если хотя бы один из Мерчантов-партнеров не был зарегистрирован.
Обязательно

instructions Array Массив данных по инструкциям по расщеплению в рамках указанного заказа. Допускается указание от 1 до 50 инструкций. См. описание ниже.

Параметры блока instructions:

Обязательность Название Тип Описание
Необязательно

splitid String [1..30] Идентификатор инструкции в системе МА. Используется для удобства отслеживания статуса инструкции по расщеплению.
Обязательно

regNumber String [1..11] Регистрационный номер Мерчант-партнера, полученный в ответе на запрос регистрации МП - merchantPartner.do.
Обязательно

amount Integer [0..12] Сумма расщепления в минимальных единицах валюты (например, в копейках), указанной при регистрации заказа.
Необязательно

sign String [1..20] Знак суммы расщепления. Доступны следующие значения:
  • + - положительная сумма;
  • - - отрицательная сумма.
Отрицательная сумма используется для возмещения расходов комиссии для мерчанта-агрегатора. В случае, если знак не указан, то по умолчанию считается значение sign="+".
Обязательно

status String [1..6] Статус передачи инструкции по расщеплению. Доступны следующие значения:
  • SUCCESS - инструкция по расщеплению передана успешно;
  • FAIL - инструкция по расщеплению не передана.
Необязательно

error String [1..512] Сообщение об ошибке (если в ответе вернулась ошибка) на языке, переданном в запросе.
Обязательно

errorCode String Код ошибки. Доступны следующие значения:
  • GENERAL_ERROR(-146100500, "General error");
  • EXTERNAL_COMMUNICATION_ERROR(-246100500, "External service communication error");
  • PARTNER_NOT_FOUND(-346100501, "Partner is not found");
  • ORDER_IN_WRONG_STATE(-346100503, "Order is in wrong state for splitting");
  • CURRENCY_MISMATCH(-346100504, "Order currency is not equals partner currency");
  • NEGATIVE_SUM(TBD, " For refund operation is not possible to use negative sum").
Полный перечень ошибок необходимо уточнять у Банка.
Необязательно

errorDesc String [1..99] Описание ошибки.

Примеры

Пример запроса

curl --request POST \
  --url https://abby.rbsuat.com/split-abb/split/splitInstruction.do \
  --header 'content-type: application/json;charset=UTF-8' \
  --data userName=username \
  --data password=password \
  --data orderId=5e97e3fd-1d20-4b4b-a542-f5995f5e8208 \
  --data referenceNumber=123456789012 \
  --data instructions={"splitId": "a2345lk3d", "regNumber": "SPLIT000087", "amount": "100", "sign": "+"}'

Пример успешного ответа

{
    "status": "COMPLETE", 
    "instructions":[{
        "splitId":"a2345lk3d",
        "regNumber":"SPLIT000087",
        "amount":"100",
        "sign":"+",
        "status":"SUCCESS",
        "error":"null"
        }
    ]
}

Пример неуспешного ответа - неуспешная авторизация

{ 
    "errorDesc":"Authentication failed"
}

Ограничения

Категории:
eCommerce API V1
Категории
Результаты поиска