LiqPay Ukraine
Cards, Privat24, Apple/Google Pay, hold. Official documentation: https://www.liqpay.ua/documentation/api. Gateway fee: 1.5% (LiqPay rate).
Credentials
public_key and private_key from the LiqPay account. Sandbox — sandbox: 1 (LIQPAY_SANDBOX=1), test cards from the documentation.
- Environment variables
LIQPAY_PUBLIC_KEYLIQPAY_PRIVATE_KEYLIQPAY_SANDBOX=0|1- Webhook
POST /webhooks/liqpay, form-urlencodeddata+signature; signature = base64(SHA1(private_key + data + private_key)).
What Mistok calls
| Request | Fields / meaning |
|---|---|
GET https://www.liqpay.ua/api/3/checkout?data&signature | hosted page; data = base64(JSON{version:3, action: pay|hold, amount, currency, order_id, description, result_url, server_url, language: uk, expired_date, sandbox}) |
POST /api/request (action=status) | payment status |
POST /api/request (action=refund) | refund (amount in UAH) |
POST /api/request (action=hold_completion) | capture of the hold |
Statuses
success/sandbox → success · hold_wait → hold · reversed → reversed · failure/error → failure · processing/wait_accept/3ds_verify/otp_verify/… → processing · expired → expired.
Mistok’s model: created → processing → (hold →) success | failure | expired | reversed. The Shopify order receives a payment only on success and only after the amount and currency are checked against our record.
Sandbox
LIQPAY_SANDBOX=1 — payments are flagged sandbox, no money moves.
Limitations
- UAH/USD/EUR
Not confirmed by a live run
Implemented from the official docs and SDKs; a first run on test keys is mandatory.
- the current documentation mentions sha3-256 in prose, but all examples and SDKs use sha1 for version 3 — sha1 is implemented