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 клиента.
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 Имя отправителя
sender_last_name no String Фамилия отправителя
sender_country_code no String Страна карты отправителя. Цифровой ISO 3166-1 код
sender_city no String Город отправителя
sender_address no String Адрес отправителя
sender_postal_code no String Почтовый индекс отправителя
Параметры по получателю
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>