Создание платежа без списания

URL

https://payparts2.privatbank.ua/ipp/v2/payment/hold

Тип запроса

POST

Заголовки

Название Значение
Accept: application/json;
Accept-Encoding: UTF-8;
Content-Type: application/json; charset=UTF-8;

Тело запроса

{
    "storeId": "",
    "orderId": "",
    "amount": 400.00,
    "partsCount": 6,
    "merchantType": "PP",
    "scheme": 1111,
    "products": [
        {
            "name": "Телевизор",
            "count": 2,
            "price": 100.00
        },
        {
            "name": "Микроволновка",
            "count": 1,
            "price": 200.00
        }
    ],
    "recipientId":"qwerty1234",
    "responseUrl": "http://shop.com/response",
    "redirectUrl": "http://shop.com/redirect",
    "signature": ""
}

Описание полей

Поле Обязательное Формат Валидация значения Описание
storeId Да String notEmpty, notNull, maxSize=20 Идентификатор магазина
orderId Да String notEmpty, notNull, maxSize=64 Уникальный номер платежа
amount Да Double notNull, Min=300, Max=50 000 Окончательная сумма покупки
partsCount Да Integer notNull, min=2, max=25 Количество частей на которые делится сумма транзакции (Для заключения кредитного договора) Должно быть > 1.
merchantType Да String notNull Тип кредита, возможные значения: II - Мгновенная рассрочка; PP - Оплата частями; PB - Оплата частями. Деньги в периоде. IA - Мгновенная рассрочка. Акционная.
scheme Нет Integer Идентификатор схемы. Выделяется Банком. По умолчанию не передается. В расчете сигнатуры не используется.
products Да Array notEmpty, min=1 Список продуктов, каждый продукт содержит поля: name - Наименование товара; price - Цена за еденицу товара; count - Количество товаров данного вида.
name Да String notEmpty, notNull, maxSize=128 Наименование товара
count Да Integer notEmpty, notNull, minSize=1 Количество товара данного вида
price Да Double notNull, Min=0.01 Цена за единицу товара
recipientId Нет String Идентификатор получателя, по умолчанию берется основной получатель. Установка основного получателя происходит в профиле магазина.
responseUrl Нет String URL, на который Банк отправит результат сделки
redirectUrl Нет String URL, на который Банк сделает редирект клиента
signature Да String notEmpty, notNull Уникальная подпись запроса. Результат функции SHA1(описание ниже).

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

SIGNATURE - подпись запроса, обязательный параметр считается по формуле :
encodeBase64 ( SHA1 ( password + storeId + orderId + withoutFloatingPoint(amount) + partsCount + merchantType + responseUrl + redirectUrl + products_string + password )), где:

  • encodeBase64 () - Функция зашифровывает строку в формате BASE64;
  • SHA1 () - Стандартная хеш-функция SHA-1, должна возвращать бинарные данные;
  • withoutFloatingPoint () - Функция возвращает число без плавающей точки ;
  • "+" - Конкатенация текстовой строки.
Параметр Значение
password Пароль вашего магазина
storeId Идентификатор магазина
orderId Уникальный номер платежа
amount Окончательная сумма покупки, без плавающей точки (запятой). Пример: "purchaseAmount": 301.00, то в сигнатуру необходимо передать 30100
partsCount Количество частей на которые делится сумма транзакции ( >1)
merchantType Тип кредита
responseUrl URL, на который Банк отправит результат сделки
redirectUrl URL, на который Банк сделает редирект клиента
products_string (product.name(A) + product.count(A) + withoutFloatingPoint(product.price(A)) + product.name(B) + product.count(B) + withoutFloatingPoint(product.price(B)) + ... )
password Пароль вашего магазина

Успешный ответ

{
  "state" : "SUCCESS",
  "storeId" : "merchant",
  "orderId" : "order_id",
  "token" : "E8E354374D404C1E9279DCCF1C7B5541",
  "signature" : "b47f80a7fbb34db084bb35527f84ed4a"
}

Описание полей

Параметр Значение
password Пароль вашего магазина
state Результат отработки запроса
storeId Идентификатор магазина
orderId Уникальный номер платежа
message В случае ошибки, содержит сообщение ошибки
password Пароль вашего магазина

Расчет сигнатуры для ответа

SIGNATURE = encodeBase64 ( SHA1 ( password + state + storeId + orderId + token + password ))

  • encodeBase64 () - Функция зашифровывает строку в формате BASE64;
  • SHA1 () - Стандартная хеш-функция SHA-1, должна возвращать бинарные данные;
  • withoutFloatingPoint () - Функция возвращает число без плавающей точки ;
  • + - Конкатенация текстовой строки.

Ответ с ошибкой

{
  "state" : "FAIL",
  "storeId" : "merchant",
  "orderId" : "order_id",
  "message" : "error message",
  "signature" : "37d9c9732fe843929deb01424fb4b0fa"
}

Расчет сигнатуры для ответа

SIGNATURE = encodeBase64 ( SHA1 ( password + state + storeId + orderId + message + password ))

  • encodeBase64 () - Функция зашифровывает строку в формате BASE64;
  • SHA1 () - Стандартная хеш-функция SHA-1, должна возвращать бинарные данные;
  • withoutFloatingPoint () - Функция возвращает число без плавающей точки ;
  • + - Конкатенация текстовой строки.