API LiqPay: Liq&Buy 1.2 (старый)

1 сообщение / 0 новое
WT George
Аватар пользователя WT George
API LiqPay: Liq&Buy 1.2 (старый)

Платежный сервис LiqPayВнимание!!! API Liq&Buy 1.2 является устаревшей!!!

Пример приведен для использования API LiqPay на любом сайте (использующим любой CMS или самописном). В частности, приведенным ниже методом, API-Ликпэй успешно работает на этом сайте (Drupal 7).

Параллельно открываем Инструкцию по установке Liq&Buy 1.2

По инструкции, перед отправкой данных на страницу платежной системы (https://www.liqpay.com/?do=clickNbuy) методом POST, вы должны сформировать форму

<?php&lt;form action="https://www.liqpay.com/?do=clickNbuy" method="POST" /&gt;***&lt;/form&gt;?>

Впрочем, как и для любой другой платежной системы.
Способ ее формирования приведен ниже в php-примере.

Замечание: Установку LiqPay (Liq&Buy) для CMS делаем не установкой модулей, а ручками.
Для CMS Drupal и других: Создаете ноду с вызовом php-файла.

Для примера, на этом сайте раздел оплаты полностью сделан ‘от руки’ (не используя к.л. модули)

  1. начинаем со страницы Оплата услуг.
    Форма и кнопки платежных систем находятся в самописном php-скрипте, который вызывается из ноды как include_once ('***.php');
  2. далее (в зависимости от требований API платежной системы) следует промежуточный шага оплаты.
    Для LipPay мы без него не смогли обойтись, поскольку ... Для PayPal можно обойтись и без него.
    На этой странице и формируется код, требуемый по инструкции, т.е. форма которая отсылается на https://www.liqpay.com/?do=clickNbuy
  3. третья страница оплаты - это уже страница самой платежной системы, которая приняла ваши данные оплаты.

Пример формы на языке PHP для отправки на сервер LiqPay - здесь

Пример оплаты LiqPay для Drupal (5,6,7,8 -)

Содержание ноды Drupal

К примеру, ваша страница оплаты LiqPay находится по адресу http://example.com/pay-liqpay
Все скрипты размещаем, к примеру в \sites\default\files\private\
Содержание ноды этого адреса (Формат текста PHP) следующее:

<?php&lt;?php /* Скрипт для ноды */
// бланк страницы оплаты (1-й шаг) по адресу http://example.com/pay-liqpay
// вызывается со страницы http://example.com/pay-liqpay при отсутствии POST
if (&lt;strong&gt;!&lt;/strong&gt;$_POST) {
    include_once (
'private://pay_liqpay_blank.php');
// формирование формы для платежного сервиса LiqPay (2-й шаг) по адресу http://example.com/pay-liqpay
// вызывается со страницы http://example.com/pay-liqpay при наличии POST
} elseif ($_POST) {
    include_once (
'private://pay_liqpay_post.php');
}
?&
gt;?>

Скрипт 'Бланка страницы оплаты' ЛикПэй | 1й шаг оплаты, pay_liqpay_blank.php

<?php&lt;?php /* Скрипт для if (!$_POST) */
echo '&lt;form action="http://example.com/pay-liqpay" method="post"&gt;

    Введите сумму &lt;input name="Summa" type="text" /&gt;
    Назначение платежа &lt;input name="Naznachenie" type="text" /&gt;
    &lt;input name="Оплатить LiqPay" type="submit" /&gt;

&lt;/form&gt;'
;
?&
gt;?>

Скрипт формирования формы для ЛикПэй | 2й шаг оплаты, pay_liqpay_post.php

<?php&lt;?php /* Скрипт для if ($_POST) */

$merchant_id='i8349114177';
$signature="XFXBKtVRGNKlyappjJUylZGjHFwDQ2zBCK2VH3J";
$url="https://www.liqpay.com/?do=clickNbuy";
$method='card';
$phone='+20123145121';
$order_id=date("d/m/Y-H:i:s"); //id заказа
$amount=$_POST['Summa']; //забираем значение из POST //вместо amount
$description=$_POST['Naznachenie']; //забираем значение из POST

    
$xml="&lt;request&gt;
        &lt;version&gt;1.2&lt;/version&gt;
        &lt;result_url&gt;http://example.com/pay-liqpay&lt;/result_url&gt;
        &lt;server_url&gt;http://example.com/pay-liqpay&lt;/server_url&gt;
        &lt;merchant_id&gt;
$merchant_id&lt;/merchant_id&gt;
        &lt;order_id&gt;
$order_id&lt;/order_id&gt;
        &lt;amount&gt;
$amount&lt;/amount&gt;
        &lt;currency&gt;USD&lt;/currency&gt;
        &lt;description&gt;
$description&lt;/description&gt;
        &lt;default_phone&gt;
$phone&lt;/default_phone&gt;
        &lt;pay_way&gt;
$method&lt;/pay_way&gt;
    &lt;/request&gt;"
;

$xml_encoded base64_encode($xml);
$lqsignature base64_encode(sha1($signature.$xml.$signature,1));

    echo(
"&lt;form action='$url' method='POST'&gt;
        &lt;input type='hidden' name='operation_xml' value='
$xml_encoded' /&gt;
        &lt;input type='hidden' name='signature' value='
$lqsignature' /&gt;
        &lt;input type='submit' value='Оплатить LiqPay'/&gt;
    &lt;/form&gt;"
);

?&
gt;?>

Примечания:

  • Скрипты можно и не разбивать на два файла, а просто в один включить услови, а из ноды вызывать один файл-php.
    <?php&lt;?php if (!$_POST) { *** } elseif ($_POST) { *** } ?&gt;?>
  • кнопки отправки в форме можно заменить на <button> для улучшения внешнего вида формы
    <?php&lt;input type='submit' value='Оплатить LiqPay'/&gt;?>

     

Примечание, по тегам:

  • merchant_id - id мерчанта
  • $signature - подпись
    • merchant_id, $signature - Берутся из раздела аккаунта ЛикПэй Мой магазин > Реквизиты мерчанта (https://liqpay.com/?do=shop_access, для авторизованного пользователя).
    • У LiqPay присутствует некоторый бардак (и не удивительно -), поэтому, какие данные подписи и id взять если будут ошибки - уточняйте у оператора.
  • result_url - страница на которую вернется клиент
  • server_url - страница на которую прийдет ответ от сервера
  • order_id - id заказа
  • amount - стоимость
  • currency - Валюта
  • description - Описание
  • default_phone - телефон введённый на форме оплаты по умолчанию (ваш телефон [аккаунта Ликпэй])
  • pay_way - способ которым оплатит покупатель(с карты, с телефона, наличными (card, liqpay, delayed)), допускается перечисление параметров в любом порядке, через запятую. Наше разъяснение этой галиматни: -)
    • с карты:  т.е. с кредитки (т.е. деньги снимутся с карты, привязанной а аккаунту LiqPay плательщика -)
    • с телефона: по русски - а аккаунта Ликпэй (но обычно, там денег никто не держит -)
  • goods_id - id товара, используется только для счетчика покупок данного товара (необязательный, только цифры)
  • exp_time - время в течении которого данный товар можно оплатить в терминале самообслуживания в часах (по умолчанию - 36 часов)NEW!
  • Внимание! Значение order_id
    <order_id>$order_id</order_id>
    Для каждой транзакции-оплаты Ликпэй должно быть уникальным (не повторяться).
    Для чего и используются секунды.