Callback
Отримання статусу та інформації про платіж
Як це працює?
  1. Компанія відправляє запит на проведення платежу, з передачею параметра server_url.
  2. Після обробки операції процесінгом LiqPay і отриманням кінцевого статусу, на ваш сервер буде відправлений POST запит з двома параметрами data і signature, де:
    data - json рядок з параметрами APIs закодований функцією base64, base64_encode( json_string ),
    signature - унікальний підпис кожного запиту base64_encode( sha1( private_key + data + private_key) ),
    base64_encode - повертає рядок, закодований методом base64,
    sha1 - повертається хеш у вигляді бінарного рядку з 20 символів.
  3. Для перевірки справжності запиту з сервера LiqPay необхідно:
    - сформувати signature на стороні вашого сервера, використовуючи отриману у відповіді від LiqPay data і ваш private_key,
    signature=base64_encode( sha1( private_key + data + private_key) )
    - підсумкову signature необхідно порівняти з отриманою із Callback від LiqPay,
    - якщо signature ідентичні, значить ви отримали справжню відповідь від сервера LiqPay (незмінений третьою особою/без втручання третіх осіб) і можна виконувати зобов'язання перед клієнтом по платежу, відповідно з отриманим статусом платежу.
  4. Для отримання поточного статусу транзакції до отримання фінального в 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=
Параметри відповіді:
ParameterTypeDescription
acq_idNumberID еквайера
actionStringТип операції. Можливі значення: pay - платіж, hold - блокування коштів на рахунку відправника, paysplit - розщеплення платежу, subscribe - створення регулярного платежу, regular - регулярний платіж
agent_commissionNumberКомісія агента в валюті платежу
amountNumberСума платежу
amount_bonusNumberБонус відправника у валюті платежу debit
amount_creditNumberСума транзакції credit в валюті currency_credit
amount_debitNumberСума транзакції debit у валюті currency_debit
authcode_creditStringКод авторизації по транзакції credit
authcode_debitStringКод авторизації по транзакції debit
card_tokenStringToken картки відправника
commission_creditNumberКомісія з одержувача у валюті currency_credit
commission_debitNumberКомісія з відправника у валюті currency_debit
completion_dateStringДата списання коштів
create_dateStringДата створення платежу
currencyStringВалюта платежу
currency_creditStringВалюта транзакції credit
currency_debitStringВалюта транзакції debit
customerStringУнікальний ідентифікатор користувача на сайті мерчанта. Максимальна довжина 100 символів.
descriptionStringКоментар до платежу
end_dateStringДата завершення/зміни платежу
err_codeStringКод помилки
err_descriptionStringОпис помилки
infoStringДодаткова інформація про платіж
ipStringIP адреса відправника
is_3dsBooleanМожливі значення:
true - транзакція пройшла з 3DS перевіркою, false - транзакція пройшла без 3DS перевірки
liqpay_order_idStringOrder_id платежу в системі LiqPay
mpi_eciNumberМожливі значення: 5 - транзакція пройшла з 3DS (емітент і еквайєр підтримують технологію 3D-Secure), 6 - емітент картки платника не підтримує технологію 3D-Secure, 7 - операція пройшла без 3D-Secure
order_idStringOrder_id платежу.
payment_idNumberId платежу в системі LiqPay
paytypeStringСпосіб оплати. Можливі значення card - оплата картою, privat24 - через кабінет Приват24, masterpass - через кабінет masterpass, moment_part - розстрочка, cash - готівкою, invoice - рахунок на e-mail, qr - сканування qr-коду
public_keyStringПублічний ключ магазину
receiver_commissionNumberКомісія з одержувача у валюті платежу
redirect_toStringПосилання на яке необхідно перенаправляти клієнта для проходження 3DS верифікації
refund_date_lastStringДата останнього повернення по платежу
rrn_creditStringУнікальний номер транзакції в системі авторизації і розрахунків обслуговуючого банку Retrieval Reference number
rrn_debitStringУнікальний номер транзакції в системі авторизації і розрахунків обслуговуючого банку Retrieval Reference number
sender_bonusNumberБонус відправника у валюті платежу
sender_card_bankStringБанк відправника
sender_card_countryStringКраїна картки відправника. Цифровий ISO 3166-1 код
sender_card_mask2StringКарта відправника
sender_card_typeStringТип картки відправника MC/Visa
sender_commissionNumberКомісія з відправника у валюті платежу
sender_first_nameStringІм'я відправника
sender_last_nameStringПрізвище відправника
sender_phoneStringТелефон відправника
statusStringСтатус платежу.
Можливі значення:
Кінцеві статуси платежу
error - Неуспішний платіж. Некоректно заповнені дані
failure - Неуспішний платіж
reversed - Платіж повернений
subscribed - Підписка успішно оформлена
success - Успішний платіж
unsubscribed - Підписка успішно деактивована
Статуси що потребують підтвердження платежу
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 - Очікується підтвердження в додатку Privat24
wait_qr - Очікується сканування QR-коду клієнтом
wait_sender - Очікується підтвердження оплати клієнтом в додатку Privat24/SENDER
Інші статуси платежу
cash_wait - Очікується оплата готівкою в ТСО
hold_wait - Сума успішно заблокована на рахунку відправника
invoice_wait - Інвойс створений успішно, очікується оплата
prepared - Платіж створений, очікується його завершення відправником
processing - Платіж обробляється
wait_accept - Кошти з клієнта списані, але магазин ще не пройшов перевірку. Якщо магазин не пройде активацію протягом 60 днів, платежі будуть автоматично скасовані
wait_card - Не встановлений спосіб відшкодування у одержувача
wait_compensation - Платіж успішний, буде зарахований в щодобовій проводці
wait_lc - Акредитив. Кошти з клієнта списані, очікується підтвердження доставки товару
wait_reserve - Грошові кошти за платежем зарезервовані для проведення повернення за раніше поданою заявкою
wait_secure - Платіж на перевірці
wait_reserve_statusStringДодатковий статус платежу, який говорить про те, що поточний платіж зарезервовано для виконання повернення по вашому магазину. Можливі значення: true - платіж зарезервовано для виконання повернення
tokenStringToken платежу
typeStringТип платежу
versionNumberВерсія API. Поточне значення - 3
err_ercStringКод помилки
product_categoryStringКатегорія товару
product_descriptionStringОпис товару
product_nameStringНазва товару
product_urlStringАдреса сторінки з товаром
refund_amountNumberСума повернення
verifycodeStringКод верифікації