Публичный
Платежный виджет
Виджет для приема платежей на web странице сайта

Схема работы платежного виджета:
Подключение
  1. Создайте компанию в LiqPay по ссылке:
    После регистрации для Вашей компании автоматически будут созданы уникальные ключи доступа к API:
    public_key - уникальный идентификатор Вашей компании в системе LiqPay
    private_key - секретный ключ доступа к API
  2. Согласно технической документации интегрируйте виджет.
Формирование запроса к API при самостоятельной интеграции:
Пример JS виджета:

<div id="liqpay_checkout"></div>
<script>
    window.LiqPayCheckoutCallback = function() {
	    LiqPayCheckout.init({
			data: "eyAidmVyc2lvbiIgOiAzLCAicHVibGljX2tleSIgOiAieW91cl9wdWJsaWNfa2V5IiwgImFjdGlv" +
			"biIgOiAicGF5IiwgImFtb3VudCIgOiAxLCAiY3VycmVuY3kiIDogIlVTRCIsICJkZXNjcmlwdGlv" +
			"biIgOiAiZGVzY3JpcHRpb24gdGV4dCIsICJvcmRlcl9pZCIgOiAib3JkZXJfaWRfMSIgfQ==",
			signature: "QvJD5u9Fg55PCx/Hdz6lzWtYwcI=",
			embedTo: "#liqpay_checkout",
			language: "ru",
			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.ua/libjs/checkout.js" async></script>
Параметры платежного виджета
data Required String json строка с параметрами APIs закодированная функцией base64_encode( json_string ), где base64_encode - возвращает строку, закодированную методом base64
signature Required String Уникальная подпись каждого запроса base64_encode( sha1( private_key + data + private_key) ), где sha1 - возвращается хэш в виде бинарной строки из 20 символов.
embedTo Optional String Элемент на HTML-странице в котором будет отображен виджет
mode Optional String Режим отображения виджета на сайте. Возможные значения: embed - встроенное окно, popup - всплывающее окно на Вашем сайте.
language Optional String Язык отображения виджета ru, uk, en.
Пример использования SDK:
#!/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<String, String> params = new HashMap<String, String>();
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'
}
);
Параметры для формирования data:
Основные
Parameter Required Type Description
version Required Number Версия API. Текущее значение - 3
public_key Required String Публичный ключ - идентификатор магазина. Получить ключ можно в настройках магазина
action Required String Тип операции. Возможные значения: pay - платеж, hold - блокировка средств на счету отправителя, subscribe - регулярный платеж, paydonate - пожертвование, auth - предавторизация карты
amount Required Number Сумма платежа.Например: 5, 7.34
currency Required String Валюта платежа. Возможные значения: USD, EUR, RUB, UAH
description Required String Назначение платежа.
order_id Required String Уникальный ID покупки в Вашем магазине. Максимальная длина 255 символов.
expired_date Optional String Время до которого клиент может оплатить счет по UTC. Передается в формате 2016-04-24 00:00:00
language Optional String Язык клиента ru, uk, en
paytypes Optional String Параметр в котором передаются способы оплаты, которые будут отображены на чекауте. Возможные значения card - оплата картой, liqpay - через кабинет liqpay, privat24 - через кабинет приват24, masterpass - через кабинет masterpass, moment_part - рассрочка, cash - наличными, invoice - счет на e-mail, qr - сканирование qr-кода. Если параметр не передан, то применяются настройки магазина, вкладка Checkout.
result_url Optional String URL в Вашем магазине на который покупатель будет переадресован после завершения покупки. Максимальная длина 510 символов.
sandbox Optional String Включает тестовый режим. Средства с карты плательщика не списываются. Для включения тестового режима необходимо передать значение 1. Все тестовые платежи будут иметь статус sandbox - успешный тестовый платеж.
server_url Optional String URL API в Вашем магазине для уведомлений об изменении статуса платежа (сервер->сервер). Максимальная длина 510 символов. Подробнее
verifycode Optional String Возможное значение Y. Динамический код верификации, генерируется и возвращается в Callback. Так же сгенерированный код будет передан в транзакции верификации для отображения в выписке по карте клиента. Работает для action= auth.
Параметры расщепления платежа
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 Почтовый индекс отправителя
Параметры защищенного платежа
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 - раз в год
Параметры для оплаты в 1 клик
customer Optional String Уникальный идентификатор клиента на сайте мерчанта. При передаче параметра LiqPay запоминает платежные реквизиты клиента и его идентификатор - последующая оплата может быть проведена в 1 клик. Максимальная длина 100 символов.
(При использовании параметра для Masterpass 1 клик, в данном поле передается валидный номер телефона плательщика)
recurringbytoken Optional String Позволяет генерировать card_token плательщика, который вы получите в callback запросе на server_url. card_token позволяет проводить платежи без ввода реквизитов карты плательщика, используя API оплаты по токену - то есть в 1 клик. Для получения card_token необходимо передать в запросе значение: 1
customer_user_id Optional String Идентификатор пользователя в системе мерчанта, передается при каждой оплате пользователя (не должен совпадать с customer, используется для оплаты с помощью кошелька Masterpass 1 клик)
Другие параметры
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 символов.