Приватний
Оплата карткою server-server
Прийом оплати від клієнта на Вашому сайті без переходу клієнта на платіжну сторінку

Схема роботи API оплата карткою server-server
Формування запиту до API при самостійній інтеграції:
Приклад використання SDK:
#!/bin/bash
PUBLIC_KEY='your_public_key'
PRIVATE_KEY='your_private_key'
API_URL='https://www.liqpay.ua/api/request'
JSON="{ 
	\"action\" : \"pay\",
	\"version\" : 3,
	\"public_key\" : \"${PUBLIC_KEY}\", 
	\"phone\" : \"380950000001\", 
	\"amount\" : \"1\", 
	\"currency\" : \"USD\", 
	\"description\" : \"description text\", 
	\"order_id\" : \"order_id_1\", 
	\"card\" : \"4731195301524634\", 
	\"card_exp_month\" : \"03\", 
	\"card_exp_year\" : \"22\", 
	\"card_cvv\" : \"111\"
}"
# 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'         => 'pay',
	'version'        => '3',
	'phone'          => '380950000001',
	'amount'         => '1',
	'currency'       => 'USD',
	'description'    => 'description text',
	'order_id'       => 'order_id_1',
	'card'           => '4731195301524634',
	'card_exp_month' => '03',
	'card_exp_year'  => '22',
	'card_cvv'       => '111'
));
HashMap<String, String> params = new HashMap<String, String>();
params.put("action", "pay");
params.put("version", "3");
params.put("phone", "380950000001");
params.put("amount", "1");
params.put("currency", "USD");
params.put("description", "description text");
params.put("order_id", "order_id_1"); 
params.put("card", "4731195301524634");
params.put("card_exp_month", "03");
params.put("card_exp_year", "22");
params.put("card_cvv", "111");
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"         : "pay",
	"version"        : "3",
	"phone"          : "380950000001",
	"amount"         : "1",
	"currency"       : "USD",
	"description"    : "description text",
	"order_id"       : "order_id_1",
	"card"           : "4731195301524634",
	"card_exp_month" : "03",
	"card_exp_year"  : "22",
	"card_cvv"       : "111"
})
liqpay = Liqpay::Liqpay.new(
:public_key  => 'public_key',
:private_key => 'private_key'
)
res = liqpay.api("request", {
	:action         => "pay",
	:version        => "3",
	:phone          => "380950000001",
	:amount         => "1",
	:currency       => "USD",
	:description    => "description text",
	:order_id       => "order_id_1",
	:card           => "4731195301524634",
	:card_exp_month => "03",
	:card_exp_year  => "22",
	:card_cvv       => "111"
})
LiqPay = liqpay:init(PublicKey, PrivateKey),
Res = liqpay:api("request", [
	{<<"action">>,         <<"pay">>}, 
	{<<"version">>,        <<"3">>}, 
	{<<"phone">>,          <<"380950000001">>}, 
	{<<"amount">>,         <<"1">>}, 
	{<<"currency">>,       <<"USD">>}, 
	{<<"description">>,    <<"description text">>}, 
	{<<"order_id">>,       <<"order_id_1">>}, 
	{<<"card">>,           <<"4731195301524634">>}, 
	{<<"card_exp_month">>, <<"03">>}, 
	{<<"card_exp_year">>,  <<"22">>}, 
	{<<"card_cvv">>,       <<"111">>}
], LiqPay)
var LiqPay = require('liqpay');
var liqpay = new LiqPay(public_key, private_key);
liqpay.api("request", {
	"action"         : "pay",
	"version"        : "3",
	"phone"          : "380950000001",
	"amount"         : "1",
	"currency"       : "USD",
	"description"    : "description text",
	"order_id"       : "order_id_1",
	"card"           : "4731195301524634",
	"card_exp_month" : "03",
	"card_exp_year"  : "22",
	"card_cvv"       : "111"
}, function( json ){
	console.log( json.status );
});
my $liqpay = Liqpay->new($public_key,$private_key);
my $res = $liqpay->api("request",
	{
	'action'         => 'pay',
	'version'        => '3',
	'phone'          => '380950000001',
	'amount'         => '1',
	'currency'       => 'USD',
	'description'    => 'description text',
	'order_id'       => 'order_id_1',
	'card'           => '4731195301524634',
	'card_exp_month' => '03',
	'card_exp_year'  => '22',
	'card_cvv'       => '111'
	}
);
Init("my_public_key", "my_private_key")
Api("request", map[string]interface{}{
    "action": "pay",
    "version": 3,
    "public_key": PublicKey,
    "phone": "380950000001",
    "amount": 1,
    "currency": "UAH",
    "description": "Test payment",
    "order_id": "order_id_1",
    "card": "4731195301524634",
    "card_exp_month": "03", 
    "card_exp_year": "22", 
    "card_cvv": "111",
    //split if needed
    "split_rules": []interface{}{
        map[string]interface{}{
            "public_key": PublicKey,
            "amount": 0.1,
        },
        map[string]interface{}{
            "public_key": PublicKey,
            "amount": 0.2,
        },
    },
})
Параметри для формування data:
Основні
Parameter Required Type Description
version Required Number Версія API. Поточне значення - 3
public_key Required String Публічний ключ - ідентифікатор магазину. Отримати ключ можна в налаштуваннях магазину
action Required String pay
amount Required Number Сума платежу. Наприклад: 5, 7.34
card Required String Номер картки платника
card_cvv Optional String CVV/CVV2. Параметр обов’язковий, якщо передається номер картки
card_exp_month Optional String Місяць терміну дії картки платника. Наприклад: 08. Параметр обов'язковий, якщо передається номер картки або незашифрований токен
card_exp_year Optional String Рік терміну дії картки платника. Наприклад: 19. Параметр обов'язковий, якщо передається номер картки або незашифрований токен
currency Required String Валюта платежу. Можливі значення: USD, EUR, RUB, UAH
description Required String Призначення платежу.
order_id Required String Унікальний ID покупки у Вашому магазині. Максимальна довжина 255 символів.
phone Required String Телефон платника. На цей номер буде відправлений OTP пароль підтвердження платежу. Телефон вказується в міжнародному форматі (Україна +380, Росія +7). Наприклад: +380950000001 (з +) або +380950000001 (без +)
paytype Optional String Тип оплати. Можливі значення: apay — оплата за допомогою зашифрованого токена Apple, gpay — оплата за допомогою зашифрованого токена Google, apay_tavv — оплата за допомогою незашифрованого токена Apple, gpay_tavv — оплата за допомогою незашифрованого токена Google, tavv — оплата за допомогою незашифрованого токена міжнародних платіжних систем (MasterCard, Visa). Параметр обов'язковий для оплат за допомогою зашифрованих і незашифрованих токенів
tavv Optional String Криптограма — динамічний одноразовий код для кожної транзакції, що супроводжує токен. Параметр обов'язковий при здійсненні оплати за допомогою незашифрованих токенів Apple, Google, міжнародних платіжних систем (MasterCard, Visa)
tid Optional String Ідентифікатор попередньої транзакції. Для рекурентних платежів за токенами міжнародної платіжної системи Visa
language Optional String Мова клієнта ru, uk, en
prepare Optional String Попередня підготовка платежу. Цей режим дозволяє визначити чи заповнені всі дані , чи потрібна 3DS перевірка картки, чи не перевищено ліміт. Гроші з картки платника не списуються. Для включення режиму необхідно передати значення 1, а для роботи з DCC (dynamic currеncy conversion) - значення tariffs
recurringbytoken Optional String Цей параметр дозволяє генерувати card_token платника, який ви отримаєте в callback запиті на server_url. card_token дозволяє проводити платежі без введення реквізитів картки платника, використовуючи API paytoken. Для отримання card_token необхідно передати в запиті значення: 1
result_url Optional String URL у Вашому магазині на який покупець буде переадресовано після завершення покупки. Максимальна довжина 510 символів.
recurring Optional Boolean Ознака рекурентної оплати за токеном. Використовується для оплат за токеном міжнародних платіжних систем (MasterCard, Visa). Можливі значення: true — операція виконується без участі клієнта, false — операція виконується клієнтом
server_url Optional String URL API в Вашому магазині для повідомлень про зміну статусу платежу (сервер->сервер). Максимальна довжина 510 символів. Детальніше
tavv Required String Референс токена, отриманого при декриптуванні даних пристрою Apple
Параметри розщеплення платежу
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"
  }
]
Параметри відправника
sender_address NEW Optional String Адреса відправника
sender_city Optional String Місто відправника
sender_country_code Optional String Код країни відправника. Цифровий ISO 3166-1 код
sender_first_name Optional String Ім'я відправника
sender_last_name Optional String Прізвище відправника
sender_postal_code Optional String Поштовий індекс відправника
3DS параметри
mpi_md Optional String Параметр, що повертається сторінкою ACS MD.
Цей параметр передається, тільки якщо попередньо було використано API MPI
mpi_pares Optional String Параметр, що повертається сторінкою ACS pares.
Цей параметр передається, тільки якщо попередньо було використано API MPI
Параметри захищеного платежу
letter_of_credit Optional String Щоб включити прийом платежів за акредитивом передайте параметр із значенням1
letter_of_credit_date Optional String Дата закінчення терміну акредитива в наступному форматі 2015-03-31 00:00:00 по UTC.
Параметри регулярного платежу
subscribe Optional String Регулярний платіж. Можливі значення: 1
subscribe_date_start Optional String Дата першого платежу. Час необхідно вказувати в такому форматі 2015-03-31 00:00:00 по UTC. Якщо вказана минула дата, то підписка буде активована з поточної дати отримання запиту
subscribe_periodicity Optional String Періодичність списання коштів. Можливі значення:
month - раз на місяць
year - раз на рік
Інші параметри
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": "pay",
  "payment_id": 165172,
  "status": "success",
  "version": 3,
  "type": "buy",
  "paytype": "card",
  "public_key": "i000000000",
  "acq_id": 414963,
  "order_id": "98R1U1OV1485849059893399",
  "liqpay_order_id": "NYMK3AE61501685438251925",
  "description": "description",
  "sender_phone": "380950000001",
  "sender_first_name": "first_name",
  "sender_last_name": "last_name",
  "sender_card_mask2": "473118*50",
  "sender_card_bank": "pb",
  "sender_card_type": "visa",
  "sender_card_country": 804,
  "dcc_allowed": [{
    "amount": 3.5984,
    "rate": 27.7905,
    "commission": 0.0,
    "currency": "USD"
  }],
  "ip": "8.8.8.8",
  "card_token": "CDRES215658546306B200061FCC53A86B",
  "amount": 100.0,
  "currency": "UAH",
  "sender_commission": 0.0,
  "receiver_commission": 0.0,
  "agent_commission": 0.0,
  "amount_debit": 100.0,
  "amount_credit": 100.0,
  "commission_debit": 0.0,
  "commission_credit": 0.0,
  "currency_debit": "UAH",
  "currency_credit": "UAH",
  "sender_bonus": 0.0,
  "amount_bonus": 0.0,
  "bonus_type": "bonusplus",
  "bonus_procent": 0.0,
  "authcode_debit": "388000",
  "authcode_credit": "329007",
  "rrn_debit": "000663747000",
  "rrn_credit": "000663747003",
  "mpi_eci": "7",
  "is_3ds": false,
  "create_date": 1501685446633,
  "end_date": 1501685446633,
  "transaction_id": 165172
}
Параметри відповіді
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
authcode_credit String Код авторизації по транзакції credit
authcode_debit String Код авторизації по транзакції debit
bonus_procent Number Розмір знижки в процентах
bonus_type String Тип бонусу, можливі значення bonusplus, discount_club, personal, promo
card_token String Token картки відправника
commission_credit Number Комісія з одержувача у валюті currency_credit
commission_debit Number Комісія з відправника у валюті currency_debit
create_date String Дата створення платежу
currency String Валюта платежу
currency_credit String Валюта транзакції credit
currency_debit String Валюта транзакції debit
description String Коментар до платежу
end_date String Дата завершення/зміни платежу
ip String IP адреса відправника
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
paytype String Спосіб оплати. Можливі значення card - оплата картою, liqpay - через кабінет liqpay, privat24 - через кабінет Приват24, masterpass - через кабінет masterpass, moment_part - розстрочка, cash - готівкою, invoice - рахунок на e-mail, qr - сканування qr-коду.
public_key String Публічний ключ магазину
receiver_commission Number Комісія з одержувача у валюті платежу
status String Можливі значення: activated - магазин активований з відшкодуванням, wait_accept - магазин активований без відшкодування
rrn_credit String Унікальний номер транзакції в системі авторизації і розрахунків обслуговуючого банку Retrieval Reference number
rrn_debit String Унікальний номер транзакції в системі авторизації і розрахунків обслуговуючого банку Retrieval Reference number
sender_bonus Number Бонус відправника у валюті платежу
sender_card_bank String Банк відправника
sender_card_country String Країна картки відправника. Цифровий ISO 3166-1 код
sender_card_mask2 String Карта відправника
sender_card_type String Тип картки відправника MC/Visa
sender_commission Number Комісія з відправника у валюті платежу
sender_first_name String Ім'я відправника
sender_last_name String Прізвище відправника
sender_phone String Телефон відправника
status String Статус платежу.
Можливі значення:
Кінцеві статуси платежу
error Неуспішний платіж. Некоректно заповнені дані
failure Неуспішний платіж
reversed Платіж повернений
success Успішний платіж
Статуси що потребують підтвердження платежу
3ds_verify Потрібна 3DS верифікація.
Для завершення платежу, потрібно виконати 3ds_verify
cvv_verify Потрібне введення CVV картки відправника.
Для завершення платежу, потрібно виконати cvv_verify
otp_verify Потрібне OTP підтвердження клієнта. OTP пароль відправлений на номер телефону Клієнта.
Для завершення платежу, потрібно виконати otp_verify
receiver_verify Потрібне введення даних одержувача.
Для завершення платежу, потрібно виконати receiver_verify
sender_verify Потрібне введення даних відправника.
Для завершення платежу, потрібно виконати sender_verify
Інші статуси платежу
wait_accept Кошти з клієнта списані, але магазин ще не пройшов перевірку. Якщо магазин не пройде активацію протягом 90 днів, платежі будуть автоматично скасовані
wait_secure Платіж на перевірці
transaction_id Number Id транзакції в системі LiqPay
type String Тип платежу
version Number Версія API. Поточне значення - 3