Публичный
Инвойс
Выставление счета на e-mail клиента в режиме server-server


Создание
Схема работы 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\" : \"invoice_send\",
    \"version\" : 3,
    \"public_key\" : \"${PUBLIC_KEY}\", 
    \"email\" : \"client-email@gmail.com\", 
    \"amount\" : 200,
    \"currency\" : \"USD\",
    \"order_id\" : \"order_id_1\",
    \"goods\" : \"[{
        \\\"amount\\\" : 100,
        \\\"count\\\" : 2,
        \\\"unit\\\" : \\\"шт.\\\",
        \\\"name\\\" : \\\"USB\\\"
    }]\",
}"
# 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'    => 'invoice_send',
'version'   => '3',
'email'     => 'client-email@gmail.com',
'amount'    => '200',
'currency'  => 'USD',
'order_id'  => 'order_id_1',
'goods'     => array(array(
'amount' => 100,
'count'  => 2,
'unit'   => 'шт.',
'name'   => 'телефон'
))
));
HashMap<String, String> params = new HashMap<String, String>();
params.put("action", "invoice_send");
params.put("version", "3");
params.put("email", "client-email@gmail.com");
params.put("amount", "200");
params.put("currency", "USD");
params.put("order_id", "order_id_1");
params.put("goods", "[{"
+ "\"amount\":100,"
+ "\"count\":2,"
+ "\"unit\":\"шт.\","
+ "\"name\":\"телефон\""
+ "}]");

LiqPay liqpay = new LiqPay(PUBLIC_KEY, PRIVATE_KEY);
HashMap<String, Object> res = liqpay.api("request", params);		
System.out.println(res.get("result"));
liqpay = LiqPay(public_key, private_key)
res = liqpay.api("request", {
"action"    : "invoice_send",
"version"   : "3",
"email"     : "client-email@gmail.com",
"amount"    : "1",
"currency"  : "USD",
"order_id"  : "order_id_1",
"goods"     : [{
"amount" : 100,
"count"  : 2,
"unit"   : "шт.",
"name"   : "телефон"
}]
})
liqpay = Liqpay::Liqpay.new(
:public_key  => 'public_key',
:private_key => 'private_key'
)
res = liqpay.api("request", {
:action   => "invoice_send",
:version  => "3",
:email    => "client-email@gmail.com",
:amount   => "1",
:currency => "USD",
:order_id => "order_id_1",
:goods    => [{
:amount => 100,
:count  => 2,
:unit   => "шт.",
:name   => "телефон"
}]
})
LiqPay = liqpay:init(PublicKey, PrivateKey),
Res = liqpay:api("request", [
{<<"action">>, <<"invoice_send">>},
{<<"version">>, <<"3">>}, 
{<<"email">>, <<"client-email@gmail.com">>}, 
{<<"amount">>, <<"1">>}, 
{<<"currency">>, <<"USD">>}, 
{<<"order_id">>, <<"order_id_1">>}, 
{<<"goods">>, [[
{<<"amount">>, 100},
{<<"count">>, 2},
{<<"unit">>, <<"шт.">>},
{<<"name">>, <<"телефон">>},
]]}
], LiqPay)
var LiqPay = require('liqpay');
var liqpay = new LiqPay(public_key, private_key);
liqpay.api("request", {
"action"   : "invoice_send",
"version"  : "3",
"email"    : "client-email@gmail.com",
"amount"   : "1",
"currency" : "USD",
"order_id" : "order_id_1",
"goods"    : [{
"amount" : 100,
"count"  : 2,
"unit"   : "шт.",
"name"   : "телефон"
}]
}, function( json ){
console.log( json.result );
});
my $liqpay = Liqpay->new($public_key,$private_key);
my $res = $liqpay->api("request",
{
'action'   => 'invoice_send',
'version'  => '3',
'email'    => 'client-email@gmail.com',
'amount'   => '1',
'currency' => 'USD',
'order_id' => 'order_id_1',
'goods'    => [{
'amount' => 100,
'count'  => 2,
'unit'   => 'шт.',
'name'   => 'телефон'
}]
}
);
Init("my_public_key", "my_private_key")
Api("request", map[string]interface{}{
    "action": "invoice_send",
    "version": 3,
    "public_key": PublicKey,
    "order_id": "order_id_1",
    "email": "client-email@gmail.com", 
    "amount": 200,
    "currency": "USD",
    "split_rules": []interface{}{
        map[string]interface{}{
            "count": 1,
            "amount": 0.2,
            "unit": "pcs",
            "name": "unit_name",
        },
        map[string]interface{}{
            "count": 1,
            "amount": 0.2,
            "unit": "pcs",
            "name": "unit_name",
        },
    },
})
Параметры для формирования data:
Основные
Parameter Required Type Description
version Required Number Версия API. Текущее значение - 3
public_key Required String Публичный ключ - идентификатор магазина. Получить ключ можно в настройках магазина
action Required String invoice_send
amount Required Number Сумма платежа.Например: 5, 7.34
currency Required String Валюта платежа. Возможные значения: USD, EUR, RUB, UAH
description Required String Назначение платежа.
email Required String Email клиента для отправки инвойса (phone или email обязательные параметры для передачи)
order_id Required String Уникальный ID покупки в Вашем магазине. Максимальная длина 255 символов.
phone Required String Телефон, на который будет отправлен инвойс (phone или email обязательные параметры для передачи)
action_payment Optional String Тип операции. Возможные значения: pay - платеж, hold - блокировка средств на счету отправителя, subscribe - регулярный платеж, paydonate - пожертвование
expired_date Optional String Время до которого клиент может оплатить счет по UTC. Передается в формате 2016-04-24 00:00:00
goods Optional String Список товаров
[
  {
    "amount": 1,
    "count": 2,
    "unit": "шт.",
    "name": "USB"
  },
  {
    "amount": 10,
    "count": 1,
    "unit": "шт.",
    "name": "Телефон"
  }
]
language Optional String Язык клиента ru, uk, en
result_url Optional String URL в Вашем магазине на который покупатель будет переадресован после завершения покупки. Максимальная длина 510 символов.
server_url Optional String URL API в Вашем магазине для уведомлений об изменении статуса платежа (сервер->сервер). Максимальная длина 510 символов. Подробнее
Пример ответа:
{
  "id": 6173,
  "status": "invoice_wait",
  "amount": 0.03,
  "currency": "UAH",
  "description": "Invoice",
  "order_id": "98R1U1OV1485849059893399",
  "token": "150112455893001_6480_GBe3Mxwnq2O7G0MLX4gkQLtZf2",
  "href": "https://liqpay.ua/apipay/invoice/150112455893001_6480_GBe3Mxwnq2O7G0MLX4gkQLtZf2",
  "receiver_type": "email",
  "receiver_value": "test@gmail.com",
  "action": "pay"
}
Параметры ответа
Parameter Type Description
action String Тип операции. Возможные значения: pay - платеж, hold - блокировка средств на счету отправителя, paysplit - расщепление платежа, subscribe - создание регулярного платежа, paydonate - пожертвование, auth - предавторизация карты, regular - регулярный платеж
amount Number Сумма платежа
currency String Валюта платежа
description String Комментарий к платежу
href String Ссылка на инвойс
id Number Id платежа в системе LiqPay
order_id String Order_id платежа
receiver_type String Вид канала получения
receiver_value String Значение полученное в параметре receiver_type
status String Статус платежа.
Возможные значения:
Конечные статусы платежа
error Неуспешный платеж. Некорректно заполнены данные
failure Неуспешный платеж
sandbox Тестовый платеж
success Успешный платеж
Другие статусы платежа
invoice_wait Инвойс создан успешно, ожидается оплата
token String Token платежа