Callback
Получение статуса и информации о платеже

Как это работает?
  1. Компания отправляет запрос на проведение платежа, с передачей параметра server_url.
  2. После обработки операции процессингом LiqPay и получением конечного статуса, на ваш сервер будет отправлен POST запрос с двумя параметрами data и signature, где:
  3. data - json строка с параметрами APIs закодированная функцией base64, base64_encode( json_string ),
    signature - уникальная подпись каждого запроса base64_encode( sha1( private_key + data + private_key) ),
    base64_encode - возвращает строку, закодированную методом base64,
    sha1 - возвращается хэш в виде бинарной строки из 20 символов.
  4. Для проверки подлинности запроса с сервера LiqPay необходимо:
  5. - сформировать signature на стороне вашего сервера, используя полученную в ответе от LiqPay data и ваш private_key,
    signature=base64_encode( sha1( private_key + data + private_key) )
    - итоговую signature необходимо сравнить с полученной из Callback от LiqPay,
    - если signature идентичны, значит вы получили подлинный ответ от сервера LiqPay (не измененный третьим лицом/без вмешательства третьих лиц) и можно выполнять обязательства перед клиентом по платежу, в соответствии с полученным статусом платежа.
  6. Для получение текущего статуса транзакции до получения финального в Callback, используйте API Статус платежа, который можно делать в любой момент времени.
Проверка Callback сигнатуры
#!/bin/bash
PUBLIC_KEY='your_public_key'
PRIVATE_KEY='your_private_key'
POST_DATA='base64_post_string'
POST_SIGNATURE='tp+ZLmKm1/E83dIzUpx5ljcttP4='
# SIGNATURE is base64 encode result from sha1 binary hash from concatenate string ${PRIVATE_KEY}${POST_DATA}${PRIVATE_KEY}
SIGNATURE=$(echo -n "${PRIVATE_KEY}${POST_DATA}${PRIVATE_KEY}" | openssl dgst -binary -sha1 | base64)

if [ "x${POST_SIGNATURE}" == "x${SIGNATURE}" ]
then
echo "ok"
else
echo "invalid signature: ${POST_SIGNATURE} != ${SIGNATURE}"
fi


# POST_DATA in this example
# base64_post_string

# SIGNATURE in this example
# tp+ZLmKm1/E83dIzUpx5ljcttP4=
$sign = base64_encode( sha1( 
$private_key .  
$data . 
$private_key 
, 1 ));
LiqPay liqpay = new LiqPay(PUBLIC_KEY, PRIVATE_KEY);
String sign = liqpay.str_to_sign(
PRIVATE_KEY + 
$data +
PRIVATE_KEY
);    
System.out.println(sign);
liqpay = LiqPay(PUBLIC_KEY, PRIVATE_KEY)
sign = liqpay.str_to_sign(
PRIVATE_KEY +
$data +
PRIVATE_KEY
)
liqpay = Liqpay::Liqpay.new(
:public_key  => 'public_key',
:private_key => 'private_key'
)
sign = liqpay.str_to_sign(
PRIVATE_KEY + 
$data +
PRIVATE_KEY
)
Sign = liqpay:str_to_sign(
<<PRIVATE_KEY/binary,  
Data/binary,
PRIVATE_KEY/binary>>
).
var LiqPay = require('liqpay');
var liqpay = new LiqPay(public_key, private_key);
var sign = liqpay->str_to_sign(
PRIVATE_KEY +
data +
PRIVATE_KEY
);
my $liqpay = Liqpay->new($public_key,$private_key);
my $sign = $liqpay->str_to_sign(
PRIVATE_KEY + 
$data +
PRIVATE_KEY
);
Init("my_public_key", "my_private_key")
Sign = MakeSignature(Data)
Параметры ответа
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_credit String Код авторизации по транзакции credit
authcode_debit String Код авторизации по транзакции debit
card_token String Token карты оправителя
commission_credit Number Комиссия с получателя в валюте currency_credit
commission_debit Number Комиссия с отправителя в валюте currency_debit
completion_date String Дата списания средств
create_date String Дата создания платежа
currency String Валюта платежа
currency_credit String Валюта транзакции credit
currency_debit String Валюта транзакции debit
customer String Уникальный идентификатор пользователя на сайте мерчанта. Максимальная длина 100 символов
description String Комментарий к платежу
end_date String Дата завершения/изменения платежа
err_code String Код ошибки
err_description String Описание ошибки
info String Дополнительная информация о платеже
ip String IP адрес отправителя
is_3ds Boolean Возможные значения:
true - транзакция прошла с 3DS проверкой,
false - транзакция прошла без 3DS проверки
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 Комиссия с получателя в валюте платежа
redirect_to String Ссылка на которую необходимо перенаправить клиента для прохождения 3DS верификации
refund_date_last String Дата последнего возврата по платежу
rrn_credit String Уникальный номер транзакции в системе авторизации и расчетов обслуживающего банка Retrieval Reference 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 Платеж возвращен
sandbox Тестовый платеж
subscribed Подписка успешно оформлена
success Успешный платеж
unsubscribed Подписка успешно деактивирована
Cтатусы требующие подтверждения платежа
3ds_verify Требуется 3DS верификация.
Для завершения платежа, требуется выполнить 3ds_verify
captcha_verify Ожидается подтверждение captcha
cvv_verify Требуется ввод CVV карты отправителя.
Для завершения платежа, требуется выполнить cvv_verify
ivr_verify Ожидается подтверждение звонком ivr
otp_verify Требуется OTP подтверждение клиента. OTP пароль отправлен на номер телефона Клиента.
Для завершения платежа, требуется выполнить otp_verify
password_verify Ожидается подтверждение пароля приложения Приват24
phone_verify Ожидается ввод телефона клиентом.
Для завершения платежа, требуется выполнить phone_verify
pin_verify Ожидается подтверждение pin-code
receiver_verify Требуется ввод данных получателя.
Для завершения платежа, требуется выполнить receiver_verify
sender_verify Требуется ввод данных отправителя.
Для завершения платежа, требуется выполнить sender_verify
senderapp_verify Ожидается подтверждение в приложении SENDER
wait_qr Ожидается сканирование QR-кода клиентом
wait_sender Ожидается подтверждение оплаты клиентом в приложении Privat24/SENDER
Другие статусы платежа
cash_wait Ожидается оплата наличными в ТСО
hold_wait Сумма успешно заблокирована на счету отправителя
invoice_wait Инвойс создан успешно, ожидается оплата
prepared Платеж создан, ожидается его завершение отправителем
processing Платеж обрабатывается
wait_accept Деньги с клиента списаны, но магазин еще не прошел проверку. Если магазин не пройдет активацию в течение 90 дней, платежи будут автоматически отменены
wait_card Не установлен способ возмещения у получателя
wait_compensation Платеж успешный, будет зачислен в ежесуточной проводке
wait_lc Аккредитив. Деньги с клиента списаны, ожидается подтверждение доставки товара
wait_reserve Средства по платежу зарезервированы для проведения возврата по ранее поданной заявке
wait_secure Платеж на проверке
token String Token платежа
type String Тип платежа
version Number Версия API. Текущее значение - 3
err_erc String Код ошибки
product_category String Категория товара
product_description String Описание товара
product_name String Название товара
product_url String Адрес страницы с товаром
refund_amount Number Сумма возврата
verifycode String Код верификации