Приватний
Захищений платіж
Відкладений платіж з гарантією оплати після підтвердження клієнтом надання послуги або отримання товару


Створення
Схема роботи API захищеного платежу
Формування запиту до API при самостійній інтеграції:
Приклад використання SDK:
#!/bin/bash
PUBLIC_KEY='your_public_key'
PRIVATE_KEY='your_private_key'
API_URL='https://www.liqpay.ua/api/request'
JSON="{ 
\"action\" : \"paylc\",
\"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\", 
\"letter_of_credit\" : \"1\", 
\"letter_of_credit_date\" : \"2016-04-24 00:00:00\"
}"
# 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'                => 'paylc',
'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',
'letter_of_credit'      => '1',
'letter_of_credit_date' => '1443992459999'
));
HashMap<String, String> params = new HashMap<String, String>();
params.put("action", "paylc");
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");
params.put("letter_of_credit", "1");
params.put("letter_of_credit_date", "1443992459999");

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"                : "paylc",
"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",
"letter_of_credit"      : "1",
"letter_of_credit_date" : "1443992459999"
})
liqpay = Liqpay::Liqpay.new(
:public_key  => 'public_key',
:private_key => 'private_key'
)
res = liqpay.api("request", {
:action                => "paylc",
: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",
:letter_of_credit      => "1",
:letter_of_credit_date => "1443992459999"
})
LiqPay = liqpay:init(PublicKey, PrivateKey),
Res = liqpay:api("request", [
{<<"action">>,                <<"paylc">>},
{<<"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">>},
{<<"letter_of_credit">>,      <<"1">>},
{<<"letter_of_credit_date">>, <<"1443992459999">>}
], LiqPay)
var LiqPay = require('liqpay');
var liqpay = new LiqPay(public_key, private_key);
liqpay.api("request", {
"action"                : "paylc",
"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",
"letter_of_credit"      : "1",
"letter_of_credit_date" : "1443992459999"
}, function( json ){
console.log( json.status );
});
my $liqpay = Liqpay->new($public_key,$private_key);
my $res = $liqpay->api("request",
{
'action'                => 'paylc',
'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',
'letter_of_credit'      => '1',
'letter_of_credit_date' => '1443992459999'
}
);
Init("my_public_key", "my_private_key")
Api("request", map[string]interface{}{
    "action": "paylc",
    "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",
    "letter_of_credit": "1",
    "letter_of_credit_date": "2016-04-24 00:00:00", 
})
Параметри для формування data:
Основні
Parameter Required Type Description
version Required Number Версія API. Поточне значення - 3
public_key Required String Публічний ключ - ідентифікатор магазину. Отримати ключ можна в налаштуваннях магазину
action Required String paylc
amount Required Number Сума платежу. Наприклад: 5, 7.34
card Required String Номер картки платника
card_cvv Required String CVV/CVV2
card_exp_month Required String Місяць терміну дії картки платника. Наприклад: 08
card_exp_year Required String Рік терміну дії картки платника. Наприклад: 19
currency Required String Валюта платежу. Можливі значення: USD, EUR, RUB, UAH
description Required String Призначення платежу.
ip Required String IP клієнта
order_id Required String Унікальний ID покупки у Вашому магазині. Максимальна довжина 255 символів.
phone Required String Телефон платника. На цей номер буде відправлений OTP пароль підтвердження платежу. Телефон вказується в міжнародному форматі (Україна +380, Росія +7). Наприклад: +380950000001 (з +) або +380950000001 (без +)
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
server_url Optional String URL API в Вашому магазині для повідомлень про зміну статусу платежу (сервер->сервер). Максимальна довжина 510 символів. Детальніше
Параметри захищеного платежу
letter_of_credit Optional String Щоб включити прийом платежів за акредитивом передайте параметр із значенням1
letter_of_credit_date Optional String Дата закінчення терміну акредитива в наступному форматі 2015-03-31 00:00:00 по UTC.
Параметри відправника
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 Поштовий індекс відправника
Параметри розщеплення платежу
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"
  }
]
3DS параметри
mpi_md Optional String Параметр, що повертається сторінкою ACS MD.
Цей параметр передається, тільки якщо попередньо було використано API MPI
mpi_pares Optional String Параметр, що повертається сторінкою ACS pares.
Цей параметр передається, тільки якщо попередньо було використано API MPI
Інші параметри
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": 165174,
"status": "wait_lc",
"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*15",
"sender_card_bank": "pb",
"sender_card_type": "visa",
"sender_card_country": 804,
"ip": "8.8.8.8",
"card_token": "2DFBFE626B730001122DE81E971E948D6F260",
"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,
"bonus_type": "bonusplus",
"bonus_procent": 7.0,
"authcode_debit": "109082",
"rrn_debit": "000663748360",
"mpi_eci": "7",
"is_3ds": false,
"letter_of_credit_date": 1510228800000,
"transaction_id": 165174
}
Параметри відповіді
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_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
currency String Валюта платежу
currency_credit String Валюта транзакції credit
currency_debit String Валюта транзакції debit
description String Коментар до платежу
ip String IP адреса відправника
is_3ds Boolean Можливі значення:
true - транзакція пройшла з 3DS перевіркою,
false - транзакція пройшла без 3DS перевірки
letter_of_credit_date String Дата закінчення терміну акредитива
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 Комісія з одержувача у валюті платежу
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 Кошти з клієнта списані, але магазин ще не пройшов перевірку. Якщо магазин не пройде активацію протягом 180 днів, платежі будуть автоматично скасовані
wait_lc Акредитив. Кошти з клієнта списані, очікується підтвердження доставки товару
wait_secure Платіж на перевірці
transaction_id Number Id транзакції в системі LiqPay
type String Тип платежу
version Number Версія API. Поточне значення - 3