Public
OTP confirmation
Operation confirmation with one time password to the client's phone number

Scheme of API OTP confirmation
Forming a request to API for self-integration:
Example of using SDK:
#!/bin/bash
PUBLIC_KEY='your_public_key'
PRIVATE_KEY='your_private_key'
API_URL='https://www.liqpay.ua/api/request'
JSON="{ 
	\"action\" : \"confirm\",
    \"version\" : 3,
    \"public_key\" : \"${PUBLIC_KEY}\", 
    \"confirm_token\" : \"JmV2qDgC3LotB8njGDcEYjHFpmpAZR\", 
    \"otp\" : \"12345678\"
}"
# 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'  => 'confirm',
'version' => '3',
'confirm_token'   => 'JmV2qDgC3LotB8njGDcEYjHFpmpAZR',
'otp'     => '12345678'
));
HashMap<String, String> params = new HashMap<String, String>();
params.put("action", "confirm");
params.put("version", "3");
params.put("confirm_token", "JmV2qDgC3LotB8njGDcEYjHFpmpAZR");
params.put("otp", "12345678");

LiqPay liqpay = new LiqPay(PUBLIC_KEY, PRIVATE_KEY);
HashMap<String, Object> res = liqpay.api("request", params);   
System.out.println(res.get("status"));
liqpay = LiqPay(public_key, private_key)
res = liqpay.api("request", {
"action"  : "confirm",
"version" : "3",
"confirm_token"   : "JmV2qDgC3LotB8njGDcEYjHFpmpAZR",
"otp"     : "12345678"
})
liqpay = Liqpay::Liqpay.new(
:public_key  => 'public_key',
:private_key => 'private_key'
)
res = liqpay.api("request", {
:action  => "confirm",
:version => "3",
:confirm_token   => "JmV2qDgC3LotB8njGDcEYjHFpmpAZR",
:otp     => "12345678"
})
LiqPay = liqpay:init(PublicKey, PrivateKey),
Res = liqpay:api("request", [
{<<"action">>, <<"confirm">>},
{<<"version">>, <<"3">>}, 
{<<"confirm_token">>, <<"JmV2qDgC3LotB8njGDcEYjHFpmpAZR">>}, 
{<<"otp">>, <<"12345678">>}, 
], LiqPay)
var LiqPay = require('liqpay');
var liqpay = new LiqPay(public_key, private_key);
liqpay.api("request", {
"action"  : "confirm",
"version" : "3",
"confirm_token"   : "JmV2qDgC3LotB8njGDcEYjHFpmpAZR",
"otp"     : "12345678"
}, function( json ){
console.log( json.status );
});
my $liqpay = Liqpay->new($public_key,$private_key);
my $res = $liqpay->api("request",
{
'action'  => 'confirm',
'version' => '3',
'confirm_token'   => 'JmV2qDgC3LotB8njGDcEYjHFpmpAZR',
'otp'     => '12345678'
}
);
Init("my_public_key", "my_private_key")
Api("request", map[string]interface{}{
    "action": "confirm",
    "version": 3,
    "public_key": PublicKey,
    "confirm_token": "JmV2qDgC3LotB8njGDcEYjHFpmpAZR",
    "otp": "12345678",
})
Options for generating data:
Main
Parameter Required Type Description
version Required Number Version API. Current value - 3
public_key Required String Public key - the store identifier. You can get the key in the store settings
action Required String confirm
otp Required String One time password that customer received to his phone numbert
confirm_token Required String payment token
Example response:
{
  "action": "pay",
  "payment_id": 165193,
  "status": "success",
  "version": 3,
  "type": "buy",
  "paytype": "card",
  "public_key": "i000000000",
  "acq_id": 414963,
  "order_id": "98R1U1OV1485849059893399",
  "liqpay_order_id": "NYMK3AE61501685438251925",
  "description": "description",
  "sender_phone": "380950000001",
  "sender_first_name": "first name",
  "sender_last_name": "last name",
  "sender_card_mask2": "473118*55",
  "sender_card_bank": "pb",
  "sender_card_type": "visa",
  "sender_card_country": 804,
  "ip": "8.8.8.8",
  "card_token": "2DFBFE626B734161130DE81E971E948D6F260",
  "amount": 0.02,
  "currency": "UAH",
  "sender_commission": 0.0,
  "receiver_commission": 0.0,
  "agent_commission": 0.0,
  "amount_debit": 0.02,
  "amount_credit": 0.02,
  "commission_debit": 0.0,
  "commission_credit": 0.0,
  "currency_debit": "UAH",
  "currency_credit": "UAH",
  "sender_bonus": 0.0,
  "amount_bonus": 0.0,
  "bonus_type": "bonusplus",
  "bonus_procent": 7.0,
  "authcode_debit": "988083",
  "authcode_credit": "504979",
  "rrn_debit": "000663782982",
  "rrn_credit": "000663782985",
  "mpi_eci": "5",
  "is_3ds": true,
  "create_date": 1501688827926,
  "end_date": 1501688827926,
  "transaction_id": 165193
}
Response parameters
Parameter Type Description
acq_id Number Acquirer ID
action String Transaction type. Possible values: pay - payment, hold - amount of hold on sender's account, paysplit - splitting payments, subscribe - creation of a regular payment, paydonate - donation, auth - card preauth, regular - regular payment
agent_commission Number Agent comission in payment currency
amount Number Payment amount
amount_bonus Number Payer bonus amount in payment currency debit
amount_credit Number Payment amount for credit in currency of currency_credit
amount_debit Number Payment amount for debit in currency of currency_debit
authcode_credit String Authorization code for transaction of credit
authcode_debit String Authorization code for transaction of debit
bonus_procent Number Discount rate in percent
bonus_type String Bonus type, possible values ​​of bonusplus, discount_club, personal, promo
card_token String Sender's card token
commission_credit Number Commission from the receiver in currency_credit
commission_debit Number Commission from the sender in currency_debit
create_date String Date of payment creation
currency String Payment currency
currency_credit String Transaction currency of credit
currency_debit String Transaction currency of debit
description String Payment description
end_date String Date of payment edition/end
ip String sender's IP address
is_3ds Boolean Possible values:
true - transaction passed with 3DS,
false - transaction passed without 3DS
liqpay_order_id String Payment order_id in LiqPay system
mpi_eci Number Possible values: 5 - the transaction passed with 3DS (issuer and acquirer support 3d Secure technology), 6 - the issuer of the payer card does not support 3d Secure technology, 7 - the operation passed without 3d Secure
order_id String Order_id payment
payment_id Number Payment id in LiqPay system
paytype String Methods of payment. Possible values card - card payment, liqpay - with liqpay account, privat24 - with privat24 account, masterpass - with masterpass account, moment_part - installments, cash - cash, invoice - to email, qr - qr code scanning.
public_key String Shop public key
receiver_commission Number Receiver comission in payment currency
rrn_credit String Unique transaction ID in authorization and settlement system of issuer bank Retrieval Reference number
rrn_debit String Unique transaction ID in authorization and settlement system of issuer bank Retrieval Reference number
sender_bonus Number Sender's bonus in the payment currency
sender_card_bank String Sender's card bank
sender_card_country String Sender's card country. Digital ISO 3166-1 code
sender_card_mask2 String Sender's card
sender_card_type String Sender's card type MC/Visa
sender_commission Number Commission from the sender in the payment currency
sender_first_name String The name of the sender
sender_last_name String sender's last name
sender_phone String Sender's phone number
status String Payment status.
Available values:
Final payment statuses
error Failed payment. Data is incorrect
failure Failed payment
reversed Payment refunded
success Successful payment
Statuses that required payment confirmation
3ds_verify 3DS verification is required.
To finish the payment you will require a 3ds_verify
Other payment statuses
wait_accept Money are withdrawn from client but the store is still not verified. If the store is not activated for 90 days, payment will be automatically cancelled
wait_secure Payment is verified
transaction_id Number Id transactions in the LiqPay system
type String Payment type
version Number Version API. Present value - 3