Инструкция по установке Liq&Buy; 1.2
Внеси изменения в протокол Liq&Buy; 1.2, узнай рейтинг товара. NEW!Интерфейс для разработчиков, API LiqPay
Перед стартом:
Пароль мерчанта(merchant_sig) это уникальная запись мерчанта, которая выдается во время регистрации вашего магазина в нашей системе.
Свой merchant_id(номер мерчанта) и merchant_sig(подпись{пароль} мерчанта) можно посмотреть в разделе Настройки магазина после авторизации.
Шаг 1: Создание формы
У вас на сайте должна находиться форма с полями operation_xml и signature(данные поля должны быть написаны с маленькой буквы) пример формы:
Шаг 2: Создание XML для поля operation_xml
Для поля operation_xml вам необходимо составить XML следующего вида (который будет отправляться к нам на сервер в закодированном виде) пример кода на PHP:
- Примечание, по тегам
- merchant_id - id мерчанта
- result_url - страница на которую вернется клиент
- server_url - страница на которую прийдет ответ от сервера
- order_id - id заказа
- amount - стоимость
- currency - Валюта
- description - Описание
- default_phone - телефон введённый на форме оплаты по умолчанию
- pay_way - способ которым оплатит покупатель(с карты, с телефона, наличными (card, liqpay, delayed)), допускается перечисление параметров в любом порядке, через запятую
- goods_id - id товара, используется только для счетчика покупок данного товара (необязательный, только цифры)
- exp_time - время в течении которого данный товар можно оплатить в терминале самообслуживания в часах (по умолчанию - 36 часов)NEW!
*Примечание: Во всех полях XML не должена присутствовать кирилица, или ваш запрос не будет обработан.
Шаг 3: Создание подписи signature
Генерируем подпись покупателя в поле signature, данная подпись имеет вид: подпись(пароль) мерчанта + неупакованный XML - операции + подпись(пароль) мерчанта
Примеры кода:
Perl: $sign=encode_base64(sha1($merc_sign.$xml.$merc_sign));
Шаг 4: Запаковка XML
После чего запаковываем XML операции, пример кода:
PHP: $xml_encoded=base64_encode($xml);
Шаг 5: Отправка запроса
После этих процедур необходимо отправить данные через форму, пример кода:
Шаг 6: Получение ответа от нашего сервера
После отправки данных, наш ответ прийдет вам на на url указанный в <server_url/>server_url</server_url/> который вы указали в XML. Вызова этого url не происходит, идет просто отправка на него данных.
Шаг 7: Работа с ответом
Наш ответ прийдет к вам в закодированном виде, методом POST в переменных operation_xml и signature (по аналогии с запросом). Чтоб раскодировать operation_xml вам необходимо проделать следующую процедуру, пример:
PHP: $xml_decoded=base64_decode($xml);
После распаковки вы получите XML следующего вида:
- Примечание, по тегам
- merchant_id - id мерчанта
- order_id - id заказа
- amount - стоимость
- currency - Валюта
- description - Описание
- status - статус транзакции
- code - код ошибки (если есть ошибка)
- transaction_id - id транзакции в системе LiqPay
- pay_way - способ которым оплатит покупатель(если не указывать то он сам выбирает, с карты или с телефона(liqpay, card))
- sender_phone - телефон оплативший заказ
- goods_id - id товара в счетчике покупок (если был передан) NEW!
- pays_count - число завершенных покупок данного товара (если был передан goods_id) NEW!
- *Примеры статусов
- status="success" - покупка совершена
- status="failure" - покупка отклонена
- status="wait_secure" - платеж находится на проверке
Проверка происходит когда человек первый раз оплачивает своей картой в системе, система пока молодая так что status="wait_secure" будет происходить часто. Если вы не пользуетесь автоматикой, то вы должны дождаться когда транзакция пройдет проверку и вам поступят деньги от нее, это видно в аккаунте системы.
Шаг 8: Проверка подлинности
Вам необходимо удостовериться в действительности полученной информации. Вы должны из полученного XML составить подпись как в поле signature и сравнить с той которая пришла в ответе от нас. Пример кода:
Perl: $sign=encode_base64(sha1($merc_sig.$xml(полученный).$merc_sig));
После чего провести сравнение полученной нашей подписи и той подписи которая получилась у вас. Если они совпали, значит этому ответу можно доверять, если нет то данный ответ должен быть отброшен.