Створення платежу

URL

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

Тип запиту

POST

Headers

Назва

Значення

Accept:

application/json;

Accept-Encoding:

UTF-8;

Content-Type:

application/json; charset=UTF-8;

Body запиту

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

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

Поле

Обов'язкове

Формат

Опис

storeId

так

String,maxSize=20

Ідентифікатор магазину

orderId

так

String,maxSize=50

Унікальний номер платежу

amount

так

Double,Min=300, Max=300 000

Остаточна сума покупки

partsCount

так

Integer,min=2, max=25

Кількість частин, на які ділиться сума транзакції

merchantType

так

String

Тип кредиту, можливі значення: II – миттєва розстрочка; PP – Оплата частинами.

scheme

ні

Integer

Ідентифікатор схеми. Виділяється Банком. За промовчанням не передається. У розрахунку сигнатури немає.

products

так

Array,min=1

Список продуктів кожен продукт містить поля: name - Найменування товару; price - Ціна за одиниця товару; count - Кількість товарів цього виду.

name

так

String,maxSize=128

Найменування товару

count

так

Integer,minSize=1

Кількість товару цього виду

price

так

Double,Min=0.01

Ціна за одиницю товару

recipientId

ні

String

Ідентифікатор одержувача за замовчуванням береться основний одержувач. Встановлення основного одержувача відбувається у профілі магазину.

responseUrl

Ні

String

URL, на який Банк надішле результат угоди

redirectUrl

ні

String

URL, на який Банк зробить редирект клієнта

signature

так

String

Унікальний підпис запиту. Результат функції SHA1 (опис нижче).

sendPhone

ні

String

формат із "+". Телефон для відправки клієнту пуш у п24 для підтвердження платежу. без переходу на чек-аут. Телефон клієнта має бути фінансовим у банку, інакше буде помилка

Робота з параметром "sendPhone"

якщо параметр переданий, то вважаємо, що клієнту після створення токена треба відправити пуш в п24. У відповідь додається параметр sendPhone, туди передається результат надсилання SUCCESS або FAIL. Вихідний параметр додається, лише якщо його передали на вхід

можливі помилки якщо за тел не зареєстрований у банку - client not found якщо тел у неправильному форматі - invalid phone якщо тел порожній - sendPhone cannot be empty помилка створення відправки клієнту пуша в п24- try again after 15 min

якщо у клієнта нема ліміту для оплати частинами - client has not credit limit

відправка пуша в п24 не блокуюча операція, якщо пуш не відправився, то все одно повертаємо токен у відповіді для проведення платежу звичайним способом. додаємо "sendPhone" : "FAIL" та помилку в message

Рекомендуємо використовувати банери в роботі з параметром SendPhone

Розрахунок сигнатури для запиту

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 + token + password ))

  • encodeBase64 () - Функція зашифровує рядок у форматі BASE64;

  • SHA1 () - Стандартна хеш-функція SHA-1 повинна повертати бінарні дані;

  • withoutFloatingPoint () - Функція повертає число без плаваючої точки ;

  • + - Конкатенація текстового рядка.

Last updated