Callback 3.0 public

Notification of the payment status change server->server

After changing the status of the payment if parameter was specified server_url, on your API will be sent POST request with two parameters data and signature , where:

data - function result base64_encode( $json_string )

signature - function result base64_encode( sha1( $private_key . $data . $private_key, 1 ) )

Response
Param Type Description
err_code String Error code.
err_description String Error description.
version Number Version API. Current value - 3
result String The result of a request ok or error.
bot_name String LiqPay wallet bot name
bot_in_contacts Bollean This parameter indicates whether customer added LiqPay wallet bot to contact list or you need to ask customer to do that.
status String Payment status.
Possible values:
Final payment statuses
success Success payment
failure Failed payment
error Failed payment. Data is incorrect
subscribed Subscribed successfully framed
unsubscribed Subscribed successfully deactivated
reversed Payment is refunded
sandbox Sandbox payment
Statuses that required payment confirmation
otp_verify OTP confirmation is required. OTP is sent to a customer phone number.
To finish the payment otp_verify is required.
3ds_verify 3DS verification is required.
To finish the payment 3ds_verify is required.
cvv_verify CVV is required.
Send CVV code in card_cvv parameter in request..
sender_verify Payer additional data is required.
Send the following parameters in request: sender_first_name, sender_last_name, sender_country_code, sender_city, sender_address, sender_postal_code.
receiver_verify Receiver additional data is required.
Send the following parameters in request: receiver_first_name, receiver_last_name.
phone_verify Waiting for customer to enter a phone number
ivr_verify Waiting for customer to confirm with IVR
pin_verify Waiting for customer to confirm with PIN-code
captcha_verify Waiting for customer to confirm with captcha
password_verify Waiting for customer to confirm with Privat24
senderapp_verify Waiting for customer to confirm with Sender
Statuses while payment is being processed
processing Payment is processing
prepared Payment is created, waiting for customer to finish it
wait_bitcoin Waiting for a bitcoin transfer from a customer
wait_secure Payment is being checked by bank-acquirer
wait_accept Funds are charged from payer card but not credited to receiver as receiver is not active. If the store is not activated for 90 days, payment will be automatically cancelled
wait_lc Protected payment. Charging is successful, waiting for receipt of goods confirmation
hold_wait Amount is held successfully on a sender's card
cash_wait Waiting for payment in kiosk.
wait_qr Waiting for customer to scan QR-code.
wait_sender Waiting for customer to confirm in mob app Privat24 / Sender.
wait_card Receiver didn't set settlement method
wait_compensation Payment is successful, it will be transferred in daily settlement
invoice_wait Invoice is created successfully, waiting for a payment
wait_reserve Funds are reserved to make a refund according to a refund request
type String Payment type.
qr_code String QR-code for customer to make a payment
bitcoin_amount Number Amount in BTC
bitcoin_addr String Bitcoin wallet ti which customer should trannsfer bitcoin_amount
bitcoin_addr String Bitcoin wallet that needs to be topped up
bitcoin_rate String Bitcoin currency rate
err_erc String Error code.
redirect_to String The link to which a customer has to be redirected to confirm the payment with 3D-Secure.
token String Token of payment.
card_token String Token of sender card
payment_id Number Payment id in Liqpay system
id Number Payment id in Liqpay system
public_key String Shop public key
acq_id Number Acquirer ID
order_id String Order_id of payment
liqpay_order_id String Order_id of payment in Liqpay
description String Payment description
sender_phone String Payer phone
sender_card_mask2 String Payer card
sender_card String Payer card
sender_card_bank String Payer card bank
sender_card_country String Payer card country. Digital ISO 3166-1 code
sender_user_ip String IP адрес отправителя
sender_card_type String Sender's card type
paytype String Способ оплаты
ip String IP receiver's address
info String Additional payment information
customer String Unique customer ID in your shop. Max length 100 characters.
amount Number Payment amount
currency String Payment currency
sender_commission Number Payer comission in payment currency
receiver_commission Number Receiver comission in payment currency
agent_commission Number Agent comission in payment currency
amount_debit Number Payment amount for debit in currency of currency_debit
amount_credit Number Payment amount for credit in currency of currency_credit
commission_debit Number Payer comission in currency_debit
commission_credit Number Receiver comission in currency_credit
currency_debit String Transaction currency of debit
currency_credit String Transaction currency of credit
sender_bonus Number Payer bonus amount in payment currency
amount_bonus Number Payer bonus amount in currency of debit
refund_amount Number Refund amount
completion_date String Charge date
authcode_debit String Authorization code for transaction of debit
authcode_credit String Authorization code for transaction of credit
rrn_debit String Unique transaction ID in authorization and settlement system of issuer bank Retrieval Reference number
rrn_credit String Unique transaction ID in authorization and settlement system of issuer bank Retrieval Reference number
arrn_debit String Unique transaction ID in authorization and settlement system of issuer bank Acquirer's Reference Number
arrn_credit String Unique transaction ID in authorization and settlement system of issuer bank Acquirer's Reference Number
verifycode String Verification code
action String Transaction type. Possible values: pay - payment, hold - amount of hold on sender's account, paysplit - splitting payments, subscribe - regular payment, paydonate - donation
is_3ds Boolean Possible values:
true - transaction passed with 3DS,
false - transaction passed without 3DS
ecommerce_auth_code_debit String Authorization code
trans_type String Transaction type. Possible values r - reverse, hc - hold_compl, pr - purchase, rf - refund
create_date String Date of payment creation
end_date String Date of payment edition/end
mpi_req_pareq String Parameter required for sender authentification on ACS page
mpi_req_md String Parameter required for sender authentification on ACS page
mpi_req_url String issuer bank page url (ACS page) to which customer should be redirected to confirm payment with 3D-Secure
mpi_status String N - карта не участвует, перенаправление клиента для прохождения 3D-Secure не требуется,
U - не удалось проверить карту на участие, перенаправление клиента для прохождения 3D-Secure не требуется,
Y - карта поддерживает сервис 3D-Secure и в параметре mpi_req_url будет присутствовать адрес страницы банка-эмитента, куда нужно будет передать методом POST параметры mpi_req_pareq и mpi_req_md в следующей форме:

	<form name="MPIform" action='${mpi_req_url}' method="POST">
		 <input type="hidden" name="PaReq" value='${mpi_req_pareq}'>
		 <input type="hidden" name="MD" value='${mpi_req_md}'>
		 <input type="hidden" name="TermUrl" value='${TermUrl}'>
	</form>
	

where TermUrl – page address to which issuer will return the answer with PaRes and MD parameters.
To make a payment with already passed 3DS you need to transfer mpi_pares and mpi_md parameters with PaRes and MD values which were received from issuer bank ACS while payment is created.
public_key String Merchant public_key
private_key String Merchant private_key
data String Info
product_url String Product page address.
product_category String Product category in your shop.
product_name String Product name in your shop.
product_description String Payment description
Check of the callback of the signature
#!/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
);