Публичный
Оплата по QR-коду
Генерация QR-кода для оплаты клиентом через мобильный банк Privat24

Схема работы API оплаты по QR-коду
Формирование запроса к API при самостоятельной интеграции:
Пример использования SDK:
#!/bin/bash
PUBLIC_KEY='your_public_key'
PRIVATE_KEY='your_private_key'
API_URL='https://www.liqpay.ua/api/request'
JSON="{ 
    \"action\" : \"payqr\",
    \"version\" : 3,
    \"public_key\" : \"${PUBLIC_KEY}\", 
    \"amount\" : 1,
    \"currency\" : \"USD\",
    \"description\" : \"description text\",
    \"order_id\" : \"order_id_1\"
}"
# DATA is base64_encode result from JSON string
DATA=$(echo -n ${JSON} | base64)
# SIGNATURE is base64 encode result from sha1 binary hash from concatenate string ${PRIVATE_KEY}${DATA}${PRIVATE_KEY}
SIGNATURE=$(echo -n "${PRIVATE_KEY}${DATA}${PRIVATE_KEY}" | openssl dgst -binary -sha1 | base64)
# REQ is json response from liqpay
REQ=$(curl --silent -XPOST ${API_URL} --data-urlencode data="${DATA}" --data-urlencode signature="${SIGNATURE}")
echo "Result: ${REQ}"
$liqpay = new LiqPay($public_key, $private_key);
$res = $liqpay->api("request", array(
'action'         => 'payqr',
'version'        => '3',
'amount'         => '1',
'currency'       => 'USD',
'description'    => 'description text',
'order_id'       => 'order_id_1'    
));
HashMap<String, String> params = new HashMap<String, String>();
params.put("action", "payqr");
params.put("version", "3");
params.put("amount", "1");
params.put("currency", "USD");
params.put("description", "description text");
params.put("order_id", "order_id_1"); 

LiqPay liqpay = new LiqPay(PUBLIC_KEY, PRIVATE_KEY);
HashMap<String, Object> res = liqpay.api("request", params);    
System.out.println(res.get("status"));
  
liqpay = LiqPay(public_key, private_key)
res = liqpay.api("request", {
"action"         : "payqr",
"version"        : "3",
"amount"         : "1",
"currency"       : "USD",
"description"    : "description text",
"order_id"       : "order_id_1"
})
liqpay = Liqpay::Liqpay.new(
:public_key  => 'public_key',
:private_key => 'private_key'
)
res = liqpay.api("request", {
:action         => "payqr",
:version        => "3",
:amount         => "1",
:currency       => "USD",
:description    => "description text",
:order_id       => "order_id_1"
})
LiqPay = liqpay:init(PublicKey, PrivateKey),
Res = liqpay:api("request", [
{<<"action">>,      <<"payqr">>}, 
{<<"version">>,     <<"3">>}, 
{<<"amount">>,      <<"1">>}, 
{<<"currency">>,    <<"USD">>}, 
{<<"description">>, <<"description text">>}, 
{<<"order_id">>,    <<"order_id_1">>}
], LiqPay)
var LiqPay = require('liqpay');
var liqpay = new LiqPay(public_key, private_key);
liqpay.api("request", {
"action"         : "payqr",
"version"        : "3",
"amount"         : "1",
"currency"       : "USD",
"description"    : "description text",
"order_id"       : "order_id_1"
}, function( json ){
console.log( json.status );
});
my $liqpay = Liqpay->new($public_key,$private_key);
my $res = $liqpay->api("request",
{
'action'         => 'payqr',
'version'        => '3',
'amount'         => '1',
'currency'       => 'USD',
'description'    => 'description text',
'order_id'       => 'order_id_1'
}
);
Init("my_public_key", "my_private_key")
Api("request", map[string]interface{}{
    "action": "payqr",
    "version": 3,
    "public_key": PublicKey,
    "amount": 1,
    "currency": "UAH",
    "description": "Test payment",
    "order_id": "order_id_1",
})
Параметры для формирования data:
Основные
Parameter Required Type Description
version Required Number Версия API. Текущее значение - 3
public_key Required String Публичный ключ - идентификатор магазина. Получить ключ можно в настройках магазина
action Required String payqr
amount Required Number Сумма платежа.Например: 5, 7.34
currency Required String Валюта платежа. Возможные значения: USD, EUR, RUB, UAH
description Required String Назначение платежа.
ip Required String IP клиента
order_id Required String Уникальный ID покупки в Вашем магазине. Максимальная длина 255 символов.
language Optional String Язык клиента ru, uk, en
prepare Optional String Предподготовка платежа. Этот режим позволяет определить все ли данные заполнены, нужна ли 3DS проверка карты, не превышен ли лимит. Средства с карты плательщика не списываются. Для включения режима необходимо передать значение 1
recurringbytoken Optional String Этот параметр позволяет генерировать card_token плательщика, который вы получите в callback запросе на server_url. card_token позволяет проводить платежи без ввода реквизитов карты плательщика, используя API paytoken. Для получения card_token необходимо передать в запросе значение: 1
recurring Optional Boolean Признак рекуррентной оплаты по токену. Используется для оплат по токенам международных платежных систем (MasterCard, Visa). Возможные значения: true — операция выполняется без участия клиента, false — операция выполняется клиентом
server_url Optional String URL API в Вашем магазине для уведомлений об изменении статуса платежа (сервер->сервер). Максимальная длина 510 символов. Подробнее
Параметры расщепления платежа
split_rules Optional String Платеж с расщеплением суммы на нескольких получателей. В этом параметре указывается JSON массив с правилами расщепления платежа. При использовании параметра split_rules происходит одно списание с клиента и несколько зачислений получателям. Эквайринговая комиссия взимается с каждого магазина в массиве split_rules. Пример JSON строки:
[
  {
    "public_key": "i000000001",
    "amount": 1,
    "commission_payer": "sender",
    "server_url": "https://server1/callback"
  },
  {
    "public_key": "i000000002",
    "amount": 2,
    "commission_payer": "receiver",
    "server_url": "https://server2/callback"
  }
]
Параметры защищенного платежа
letter_of_credit Optional String Чтобы включить прием платежей по аккредитиву передайте параметр со значением1
letter_of_credit_date Optional String Дата окончания срока аккредитива в следующем формате 2015-03-31 00:00:00 по UTC.
Другие параметры
customer Optional String Уникальный идентификатор пользователя на сайте мерчанта. Максимальная длина 100 символов.
dae Optional String Длинная запись Detail Addenda.
Параметр dae представляет собой JSON строку, к которой применили функцию base64. JSON может содержать следующие параметры:
{
  "airLine": "Avia", // абревиатура авиакомпании, max 4 символов.
  "ticketNumber": "ACSFD12354SA", // номер билета, max 15 символов. 
  "passengerName": "John Doe", // имя пассажира, max 29 символов.
  "flightNumber": "742", // номер рейса, max 5 цифр.
  "originCity": "DP", // код города/аэропорта вылета, max 5 символов.
  "destinationCity": "NY", // код города/аэропорта назначения, max 5 символов.
  "departureDate": "100514" // дата вылета в формате YYMMDD, max 6 цифр.
}
Пример параметра dae: ewogICJhaXJMaW5lIjogIkROSVBST0FWSUEiLAogICJ0aWNrZXROdW1iZXIiOiAiQUNTRkQxMjM1NFNBIiwKICAicGFzc2VuZ2VyTmFtZSI6ICJKb2huIERvZSIsCiAgImZsaWdodE51bWJlciI6ICI3NDIiLAogICJvcmlnaW5DaXR5IjogIkRQIiwKICAiZGVzdGluYXRpb25DaXR5IjogIk5ZIiwKICAiZGVwYXJ0dXJlRGF0ZSI6ICIxMDA1MTQiCn0=
info Optional String Информация для добавления данных к платежу. Например: "External information for payments"
product_category Optional String Категория товара. Максимальная длина 25 символов.
product_description Optional String Описание товара. Максимальная длина 500 символов.
product_name Optional String Название товара. Максимальная длина 100 символов.
product_url Optional String Адрес страницы с товаром. Максимальная длина 2000 символов.
Пример ответа:
{
  "action": "payqr",
  "payment_id": 165164,
  "status": "wait_qr",
  "version": 3,
  "type": "buy",
  "public_key": "i000000000",
  "acq_id": 414963,
  "order_id": "98R1U1OV1485849059893399",
  "liqpay_order_id": "NYMK3AE61501685438251925",
  "description": "description",
  "amount": 0.02,
  "currency": "UAH",
  "sender_commission": 0.0,
  "receiver_commission": 0.0,
  "agent_commission": 0.0,
  "amount_debit": 0.02,
  "amount_credit": 0.02,
  "commission_debit": 0.0,
  "commission_credit": 0.0,
  "currency_debit": "UAH",
  "currency_credit": "UAH",
  "sender_bonus": 0.0,
  "amount_bonus": 0.0,
  "mpi_eci": "7",
  "is_3ds": false,
  "qr_code": "lp_qr:pay:nC4O1DG2nUsMI44Zh80utdjYvw",
  "transaction_id": 165164
}
Параметры ответа
Parameter Type Description
acq_id Number ID эквайера
action String Тип операции. Возможные значения: pay - платеж, hold - блокировка средств на счету отправителя, paysplit - расщепление платежа, subscribe - создание регулярного платежа, paydonate - пожертвование, auth - предавторизация карты, regular - регулярный платеж
agent_commission Number Комиссия агента в валюте платежа
amount Number Сумма платежа
amount_bonus Number Бонус отправителя в валюте платежа debit
amount_credit Number Сумма транзакции credit в валюте currency_credit
amount_debit Number Сумма транзакции debit в валюте currency_debit
commission_credit Number Комиссия с получателя в валюте currency_credit
commission_debit Number Комиссия с отправителя в валюте currency_debit
currency String Валюта платежа
currency_credit String Валюта транзакции credit
currency_debit String Валюта транзакции debit
description String Комментарий к платежу
is_3ds Boolean Возможные значения:
true - транзакция прошла с 3DS проверкой,
false - транзакция прошла без 3DS проверки
liqpay_order_id String Order_id платежа в системе LiqPay
mpi_eci Number Возможные значения: 5 - транзакция прошла с 3DS (эмитент и эквайер поддерживают технологию 3D-Secure), 6 - эмитент карты плательщика не поддерживает технологию 3D-Secure, 7 - операция прошла без 3D-Secure
order_id String Order_id платежа
payment_id Number Id платежа в системе LiqPay
public_key String Публичный ключ магазина
qr_code String QR-код по которому клиент может произвести оплату
receiver_commission Number Комиссия с получателя в валюте платежа
sender_bonus Number Бонус отправителя в валюте платежа
sender_commission Number Комиссия с отправителя в валюте платежа
status String Статус платежа.
Возможные значения:
Конечные статусы платежа
error Неуспешный платеж. Некорректно заполнены данные
failure Неуспешный платеж
success Успешный платеж
Cтатусы требующие подтверждения платежа
wait_qr Ожидается сканирование QR-кода клиентом
transaction_id Number Id транзакции в системе LiqPay
type String Тип платежа
version Number Версия API. Текущее значение - 3