Правила формирования запроса на проведение платежа

Необходимые URL для работы в зависимости от выбранной модели:
https://www.liqpay.ua/api/requestServer-Server
https://www.liqpay.ua/api/3/checkoutClient-Server
Для вызова API LiqPay необходимо передать параметры data и signature (Server - Server) POST методом или перенаправить клиента (Client - Server) используя POST метод, где:
data - json строка с параметрами APIs закодированная функцией base64, base64_encode( json_string ),
signature - уникальная подпись каждого запроса base64_encode( sha1( private_key + data + private_key) ),
base64_encode - возвращает строку, закодированную методом base64,
sha1 - возвращается хэш в виде бинарной строки из 20 символов.
Формирование data и signature, пример:
Для подключения приема оплаты через LiqPay, формируем json строку с параметрами вызова апи, где:
Parameter Required Type Description
version Required Number Версия API. Например: 3
public_key Required String Публичный ключ - идентификатор созданной компании. Например: i00000000
private_key Required String Приватный ключ созданной компании (не предоставляется никому кроме Вашего разработчика). Например: a4825234f4bae72a0be04eafe9e8e2bada209255
action Required String Тип операции. Возможные значения: pay - платеж, hold - блокировка средств на счету отправителя, subscribe - регулярный платеж, paydonate - пожертвование, auth - предавторизация карты
amount Required Number Сумма платежа.Например: 5, 7.34
currency Required String Валюта платежа. Возможные значения: USD, EUR, RUB, UAH, BYN, KZT. Дополнительные валюты могут быть установлены по запросу компании.
description Required String Назначение платежа.
order_id Required String Уникальный ID покупки в Вашем магазине. Максимальная длина 255 символов.
Больше параметров в документации
Пример создания json_string:
json_string = {"public_key":"i00000000","version":"3","action":"pay","amount":"3","currency":"UAH","description":"test","order_id":"000001"}
Пример кодирования json_string функцией base64_encode, компания получает data:
data = eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwIiwidmVyc2lvbiI6IjMiLCJhY3Rpb24iOiJwYXkiLCJhbW91bnQiOiIzIiwiY3VycmVuY3kiOiJVQUgiLCJkZXNjcmlwdGlvbiI6InRlc3QiLCJvcmRlcl9pZCI6IjAwMDAwMSJ9
Пример формирования signature, компания формирует строку sign_string путем конкатенации private_key + data + private_key:
sign_string = a4825234f4bae72a0be04eafe9e8e2bada209255eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwIiwidmVyc2lvbiI6IjMiLCJhY3Rpb24iOiJwYXkiLCJhbW91bnQiOiIzIiwiY3VycmVuY3kiOiJVQUgiLCJkZXNjcmlwdGlvbiI6InRlc3QiLCJvcmRlcl9pZCI6IjAwMDAwMSJ9a4825234f4bae72a0be04eafe9e8e2bada209255
После применения функций base64_encode( sha1( sign_string) ) получаем строку:
signature = wR+UZDC4jjeL/qUOvIsofIWpZh8=
Пример отправки запроса к LiqPay:
1. Для перенаправления клиента на страницу оплаты LiqPay (Client - Server) необходимо сформировать HTML-форму:
<form method="POST" action="https://www.liqpay.ua/api/3/checkout" accept-charset="utf-8">
 <input type="hidden" name="data" value="eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwIiwidmVyc2lvbiI6IjMiLCJhY3Rpb24iOiJwYXkiLCJhbW91bnQiOiIzIiwiY3VycmVuY3kiOiJVQUgiLCJkZXNjcmlwdGlvbiI6InRlc3QiLCJvcmRlcl9pZCI6IjAwMDAwMSJ9"/>
 <input type="hidden" name="signature" value="wR+UZDC4jjeL/qUOvIsofIWpZh8="/>
 <input type="image" src="//static.liqpay.ua/buttons/p1ru.radius.png"/>
</form>
2. Для взаимодействия (Server - Server) полученные data и signature необходимо отправить на url https://www.liqpay.ua/api/request:
curl --silent -XPOST https://www.liqpay.ua/api/request --data-urlencode
data="eyJwdWJsaWNfa2V5IjoiaTAwMDAwMDAwIiwidmVyc2lvbiI6IjMiLCJhY3Rpb24iOiJwYXkiLCJhbW91bnQiOiIzIiwiY3VycmVuY3kiOiJVQUgiLCJkZXNjcmlwdGlvbiI6InRlc3QiLCJvcmRlcl9pZCI6IjAwMDAwMSJ9" --data-urlencode
signature="wR+UZDC4jjeL/qUOvIsofIWpZh8="
3. Статус операции будет отправлен на server_url.
4. Успешное завершение оплаты.