Checkout 3.0 public

Прийом платежів на сайті Liqpay client->server

Для початку прийому платежів на Вашому сайті необхідно:

  • Зареєструватися на www.liqpay.com

  • Створити магазин у Вашому акаунті використовуючи конструктор

  • Створити магазин у Вашому акаунті використовуючи для оплати або створити просту HTML форму

HTML форму необхідно відправити методом POST на URL https://www.liqpay.com/api/3/checkout з двома параметрами data і signature, де:

data - результат функції base64_encode( $json_string )

signature - результат функції base64_encode( sha1( $private_key . $data . $private_key, 1 ) )

Request
Param Required Type Description
version yes Number Версія API. Поточне значення - 3
public_key yes String Публічний ключ - ідентифікатор магазина. Отримати ключ можна в налаштуваннях магазина
merchant_public_key yes String Публічний ключ магазину агента
action yes String Тип операції. Можливі значення: pay - платіж, hold - блокування коштів на рахунку відправника, subscribe - регулярний платіж, paydonate - пожертва, auth - предавторизація картки
action yes String checkout
order_id yes String order_id успішного платежу
email yes String email для відправки квитанції
compensation_id no* String compensation_id проводки зачисления
resp_format no* String Можливий формат звіту json, csv, xml. Якщо параметр не переданий, буде переданий json.
date no** String Якщо невідомий параметр compensation_id, то передається дата, за яку потрібно отримати список compensation_id
phone yes String Телефон платника. На цей номер буде відправлений OTP пароль підтвердження платежу. Телефон вказується в міжнародному форматі (Україна +380 , Росія +7 ). Наприклад: +380950000001 (з +) або 380950000001 (без +)
amount yes Number сума платежу.Наприклад: 5, 7.34
currency yes String Валюта платежу. Приклад значення: USD, EUR, RUB, UAH BYN KZT. Додаткові валюти можуть бути встановлені за запитом компанії.
description yes String Призначення платежу.
order_id yes String Унікальний ID покупки у Вашому магазині.Максимальна довжина 255 символів.
confirm yes String Ознака підтвердження запиту. Можливі значення: yes, no
card yes String Номер картки платника
card_exp_month yes String Місяць терміну дії картки платника.Наприклад: 08
card_exp_year yes String Рік терміну дії картки платника.Наприклад:19
card_cvv yes String CVV/CVV2
card_token yes String Токен картки платника.Наприклад: B5BВB0D00B88B00ED00A00D0D
card_track yes String Трек картки платника.Наприклад:1111222233334444=1703000000000000000
imei yes String IMEI пристрою
receiver_card yes String Номер картки одержувача
bitcoin_addr yes String Гаманець Bitcoin який необхідно поповнити
ip yes String IP клiєнта.
email yes String E-mail клієнта для відправки інвойсу
channel_type yes String Канал бота. Підтримувані значення: telegram
account yes String ID користувача в месенджері
language no String Мова клієнта ru, uk, en.
sandbox no String Включає тестовий режим. Кошти з картки платника не списуються. Для включення тестового режиму необхідно передати значення 1. Всі тестові платежі будуть мати статус sandbox - успішний тестовий платіж.
prepare no String Предподготовка платежа. Этот режим позволяет определить все ли данные заполнены, нужна ли 3DS проверка карты, не превышен ли лимит. Средства с карты плательщика не списываются. Для включения режиима необходимо передать значение 1.
recurringbytoken no String Цей параметр дозволяє генерувати card_token платника, який ви отримаєте в callback запиті на server_url. card_token дозволяє проводити платежі без введення реквізитів картки платника, використовуючи API paytoken. Для отримання card_token необхідно передати в запиті значення: 1
server_url no String URL API у Вашому магазині для повідомлень про зміну статусу платежу ( сервер -> сервер ). Максимальна довжина 510 символів. Докладніше
result_url no String URL у Вашому магазині на який покупець буде переадресовано після завершення покупки в разі переадресації клієнта на сторінку 3ds 3DS-verify. Максимальна довжина 510 символів.
receiver_card_token no String Токен картки одержувача. Наприклад: B5BВB0D00B88B00ED00A00D0D
result_url no String URL у Вашому магазині на який покупець буде переадресовано після завершення покупки. Максимальна довжина 510 символів.
paytypes no String Параметр в якому передаються способи оплати, які будут відображені на чекауті. Можливі значення card - оплата карткою, liqpay - через кабінет liqpay, privat24 - через кабінет приват24, masterpass - через кабінет masterpass, moment_part - розстрочка, cash - готівкою, invoice - рахунок на e-mail, qr - сканування qr-коду. Якщо параметр не переданий, то застосовуються налаштування магазину, вкладка Checkout.
verifycode no String Можливе значення Y. Динамічний код верифікації, генерується і повертається в Callback. Також згенерований код буде переданий в транзакції верифікації для відображення у виписці по картці клієнта. Працює для action= auth.
token no String token платежа
otp no String Одноразовий OTP пароль, який Клієнт отримав на свій телефон
date_from no String Дата початку звіту в форматі timestamp в мілісекундах
date_to no String Дата закінчення звіту в форматі timestamp в мілісекундах
resp_format no String Можливий формат звіту json, csv, xml. Якщо параметр не переданий, буде переданий json.
phone yes String Номер телефону магазину
public_phone no String Публічний телефон магазину
logo no String URL логотипу магазину
site yes String URL сайту магазину
description yes String Опис магазина
email yes String E-mail магазина
name yes String Назва магазина
card yes * String Номер картки для прийому платежів в цьому магазині
card_exp_month yes * String Місяць терміну дії картки
card_exp_year yes * String Рік терміну дії картки
card_cvv yes * String CVV/CVV2
account yes ** String Номер рахунку для прийому платежів в цьому магазині
mfo yes ** String МФО рахунку
okpo yes ** String ОКПО рахунку
company yes ** String Найменування рахунку
amount_procent_agent no Number Комісія агента в процентах
amount_static_agent no * Number Комісія агента статична
currency_static_agent no * String Валюта статичної комісії агента
expired_date no String Час до якого клієнт може оплатити рахунок за UTC. Передається в форматі 2016-04-24 00:00:00
action_payment no String Тип операції. Можливі значення: pay - платіж, hold - блокування коштів на рахунку відправника, subscribe - регулярний платіж, paydonate - пожертва
goods no String Список товарів
[
  {
    "amount": 1,
    "count": 2,
    "unit": "шт.",
    "name": "USB"
  },
  {
    "amount": 10,
    "count": 1,
    "unit": "шт.",
    "name": "Телефон"
  }
]
Параметри по відправнику
sender_first_name no String Iм'я вiдправника
sender_last_name no String Прiзвище вiдправника
sender_country_code no String Країна карти вiдправника. Цифровий ISO 3166-1 код
sender_city no String Мiсто вiдправника
sender_address no String Адреса вiдправника
sender_postal_code no String Поштовий iндекс вiдправника
Параметры по получателю
receiver_first_name no String ім'я одержувача
receiver_last_name no String Прізвище одержувача
Параметри регулярного платежу
subscribe no String Регулярний платіж.Можливі значення: 1
subscribe_date_start no String якщо.
Час необхідно вказувати в наступному форматі 2015-03-31 00:00:00 по UTC . Якщо вказана минула дата, то підписка буде активована з поточної дати отримання запиту
subscribe_periodicity no String Періодичність списання коштів.
Можливі значення:
month - раз на місяць
year - раз на рік
Параметри акредитива
letter_of_credit no String Щоб включити прийом платежів за акредитивом передайте параметр із значенням 1
letter_of_credit_date no String Дата закінчення терміну акредитива по UTC. Передається в форматі 2015-04-24 00:00:00
3DS параметри
mpi_pares no String Параметр, возвращаемый страницей ACS pares.
Этот параметр передается, только если предварительно было использовано API MPI
mpi_md no String Параметр, возвращаемый страницей ACS MD.
Этот параметр передается, только если предварительно было использовано API MPI
Другие параметры
product_url no String Адреса сторінки з товаром. Максимальна довжина 2000 символів.
product_category no String Категория товара. Максимальная длина 25 символов.
product_name no String Название товара. Максимальная длина 100 символов.
product_description no String Описание товара. Максимальная длина 500 символов.
expired_date no String Час до якого клієнт може оплатити рахунок, а також час життя сесії чекаута по UTC. Передається в форматі 2016-04-24 00:00:00
info no String Информация для добавления к данным платежа. Наприклад: "External information for payments"
customer no String Уникальный идентификатор пользователя на сайте мерчанта. Максимальная длина 100 символов.
mpi_action no String Параметр, определяющий тип платежа. Можливі значення:
pay - Эквайринг
p2p - Переказ з картки на картку
verifycode no String Динамический код авторизации
suburl no String URL субмерчанта
dae no String Длинная запись Detail Addenda.
Параметра dae представляет собой JSON строку, к которой применили функцию base64. JSON может содержать следующие параметры:
{
  "airLine": "DNIPROAVIA", // название авиакомпании
  "ticketNumber": "ACSFD12354SA", // номер билета
  "passengerName": "John Doe", // имя пассажира
  "flightNumber": "742", // номер рейса
  "originCity": "DP", // код города/аэропорта вылета
  "destinationCity": "NY", // код города/аэропорта назначения
  "departureDate": "100514" // дата вылета в формате MMDDYY
}

Пример параметра dae: ewogICJhaXJMaW5lIjogIkROSVBST0FWSUEiLAogICJ0aWNr
ZXROdW1iZXIiOiAiQUNTRkQxMjM1NFNBIiwKICAicGFzc2VuZ2VyTmFtZSI6ICJKb2huIERvZSIs
CiAgImZsaWdodE51bWJlciI6ICI3NDIiLAogICJvcmlnaW5DaXR5IjogIkRQIiwKICAiZGVzdGluY
XRpb25DaXR5IjogIk5ZIiwKICAiZGVwYXJ0dXJlRGF0ZSI6ICIxMDA1MTQiCn0=
split_rules no 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"
  }
]
Приклад формування data і signature
#!/bin/bash
PUBLIC_KEY='your_public_key'
PRIVATE_KEY='your_private_key'
JSON="{ 
\"version\" : 3,
\"public_key\" : \"${PUBLIC_KEY}\", 
\"action\" : \"pay\", 
\"amount\" : 1, 
\"currency\" : \"USD\",
\"description\" : \"description text\",
\"order_id\" : \"order_id_1\"
}"
# DATA is besa64 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)
echo "data: ${DATA}"
echo "signature: ${SIGNATURE}"

# DATA in this example
# eyAidmVyc2lvbiIgOiAzLCAicHVibGljX2tleSIgOiAieW91cl9wdWJsaWNfa2V5IiwgImFjdGlv
# biIgOiAicGF5IiwgImFtb3VudCIgOiAxLCAiY3VycmVuY3kiIDogIlVTRCIsICJkZXNjcmlwdGlv
# biIgOiAiZGVzY3JpcHRpb24gdGV4dCIsICJvcmRlcl9pZCIgOiAib3JkZXJfaWRfMSIgfQ==

# SIGNATURE in this example
# QvJD5u9Fg55PCx/Hdz6lzWtYwcI=
$liqpay = new LiqPay($public_key, $private_key);
$html = $liqpay->cnb_form(array(
'action'         => 'pay',
'amount'         => '1',
'currency'       => 'USD',
'description'    => 'description text',
'order_id'       => 'order_id_1',
'version'        => '3'
));
HashMap params = new HashMap();
params.put("action", "pay");
params.put("amount", "1");
params.put("currency", "USD");
params.put("description", "description text");
params.put("order_id", "order_id_1"); 
params.put("version", "3"); 
LiqPay liqpay = new LiqPay(PUBLIC_KEY, PRIVATE_KEY);
String html = liqpay.cnb_form(params);    
System.out.println(html);
 
liqpay = LiqPay(public_key, private_key)
html = liqpay.cnb_form({
"action"         : "pay",
"amount"         : "1",
"currency"       : "USD",
"description"    : "description text",
"order_id"       : "order_id_1",
"version"        : "3"
})
liqpay = Liqpay::Liqpay.new(
:public_key  => 'public_key',
:private_key => 'private_key'
)
html = liqpay.cnb_form({
:action         => "pay",
:amount         => "1",
:currency       => "USD",
:description    => "description text",
:order_id       => "order_id_1",
:version        => "3"
})
LiqPay = liqpay:init(PublicKey, PrivateKey),
Html = liqpay:cnb_form([ 
{<<"action">>,      <<"pay">>}, 
{<<"amount">>,      <<"1">>}, 
{<<"currency">>,    <<"USD">>}, 
{<<"description">>, <<"description text">>}, 
{<<"order_id">>,    <<"order_id_1">>},
{<<"version">>,     <<"3">>}
], LiqPay)
var LiqPay = require('liqpay');
var liqpay = new LiqPay(public_key, private_key);
var html = liqpay.cnb_form({
'action'         : 'pay',
'amount'         : '1',
'currency'       : 'USD',
'description'    : 'description text',
'order_id'       : 'order_id_1',
'version'        : '3'
});
my $liqpay = Liqpay->new($public_key,$private_key);
my $html = $liqpay->cnb_form({
'action'         => 'pay',
'amount'         => '1',
'currency'       => 'USD',
'description'    => 'description text',
'order_id'       => 'order_id_1',
'version'        => '3'
}
);
Приклад HTML-форми
	<form method="POST" action="https://www.liqpay.com/api/3/checkout" 
	accept-charset="utf-8">
	<input type="hidden" name="data" value="eyAidmVyc2lvbiIgOiAzLCAicHVibGljX2tleSIgOiAieW91cl9wdWJsaWNfa2V5IiwgImFjdGlv
	biIgOiAicGF5IiwgImFtb3VudCIgOiAxLCAiY3VycmVuY3kiIDogIlVTRCIsICJkZXNjcmlwdGlv
	biIgOiAiZGVzY3JpcHRpb24gdGV4dCIsICJvcmRlcl9pZCIgOiAib3JkZXJfaWRfMSIgfQ=="/>
	<input type="hidden" name="signature" value="QvJD5u9Fg55PCx/Hdz6lzWtYwcI="/>
	<input type="image" 
	src="//static.liqpay.com/buttons/p1ru.radius.png"/>
	</form>
	
Приклад JS віджета
	<div id="liqpay_checkout"></div>
	<script>
	window.LiqPayCheckoutCallback = function() {
	    LiqPayCheckout.init({
			data: "eyAidmVyc2lvbiIgOiAzLCAicHVibGljX2tleSIgOiAieW91cl9wdWJsaWNfa2V5IiwgImFjdGlv" +
			"biIgOiAicGF5IiwgImFtb3VudCIgOiAxLCAiY3VycmVuY3kiIDogIlVTRCIsICJkZXNjcmlwdGlv" +
			"biIgOiAiZGVzY3JpcHRpb24gdGV4dCIsICJvcmRlcl9pZCIgOiAib3JkZXJfaWRfMSIgfQ==",
			signature: "QvJD5u9Fg55PCx/Hdz6lzWtYwcI=",
			embedTo: "#liqpay_checkout",
			mode: "embed" // embed || popup
	    }).on("liqpay.callback", function(data){
	    	console.log(data.status);
	    	console.log(data);
	    }).on("liqpay.ready", function(data){
	    	// ready
	    }).on("liqpay.close", function(data){
	    	// close
	    });
	};
	</script>
	<script src="//static.liqpay.com/libjs/checkout.js" async></script>