С помощью ClickNBuy вы сможете принимать платежи с карт Visa/MasterCard и со счетов LiqPAY
Для того чтобы принимать платежи в ручном режиме вам достаточно создать у себя на сайте форму с кнопкой, вот пример HTML кода такой формы
<form action="https://liqpay.com/?do=clickNbuy" method="POST" accept-charset="utf-8"> <input type="hidden" name="version" value="1.1" /> <input type="hidden" name="merchant_id" value="" /> <input type="hidden" name="amount" value="0.01" /> <input type="hidden" name="currency" value="UAH" /> <input type="hidden" name="description" value="Описание товара" /> <input type="hidden" name="order_id" value="test" /> <input type="submit" value="Купить" /> </form>
Замените значения параметров на нужные вам сумму и валюту (UAH,USD,EUR,RUR) и описание товара (он отображается у клиента как комментарий), максимальная длина описания - 127 символов.
Если вы хотите чтобы после покупки (или отказа от покупки) пользователь перешел на вашу страницу добавьте в форму необязательный параметр:
<input type="hidden" name="result_url" value="http://your_site.com/liqpay_return.html" />
Если вы пишите скрипт, то на этот URL приходят все параметры покупки и подпись (signature) по которой вы сможете понять что человек действительно заплатил, а не хакер пытается обмануть вашу систему.
О том что покупка совершена говорит status="success", покупка отклонена status="failure", а если status="wait_secure то платеж находится на проверке. Проверка происходит когда человек первый раз оплачивает своей картой в системе, система пока молодая так что status="wait_secure" будет происходить часто, чтобы обрабатывать такие платежи вам поможет параметр server_url, об этом читайте ниже. Если вы не пользуетесь автоматикой, то вы должны дождаться когда транзакция пройдет проверку и вам поступят деньги от нее, это видно в аккаунте системы.
Для того чтобы автоматизировать покупку вы должны использовать необязательный параметр:
<input type="hidden" name="server_url" value="http://your_site.com/server_liqpay_return.cgi" />
На этот URL будут приходить все параметры покупки и подпись (signature) от нашего сервера (т.е. в обход пользователя). Отличие от result_url только в том что result_url происходит при редиректе в браузере клиента, а server_url происходит от нашего сервера (пользователь его вообще не видит).
server_url необходим вам потому что:
1. если пользователь по какой-то причине не дошел до result_url хотя удачно оплатил или отменил оплату, то на server_url придет запрос от нашего сервера об удаче или отмене, и вы сможете закрыть операцию покупки все равно.
2. если вам пришел status="wait_secure", это значит что платеж на проверке, и только server_url вам сообщит после проверки о том что платеж одобрен (status="success") или отклонен (status="failure"), result_url после проверки не приходит!
Будьте внимательны, если вы используете одновременно и result_url и server_url то вам приходит одновременно два успеха, смотрите два раза не отдайте товар покупателю! И может такое случится что server_url придет раньше result_url, смотрите чтобы в таком случае клиент не получил ошибку от вас!
Параметр order_id - это идентификатор покупки, максимальная длина - 127 символов. Параметр необязательный, но для автоматизированной системы продажи рекомендуется его использовать с настройкой "Требовать уникальность order_id" для того чтобы конкретную единицу товара могли купить только один раз и для того чтобы вас не обманули простыми повторными запросами на result_url! В order_id нельзя использовать символ "|"! Можно не использовать уникальность order_id т.к. приходящий параметр transaction_id (читайте ниже) уникален для каждой оплаты вне зависимости от order_id.
Подпись считается следующим образом:
[code]signature_source = "|" + version + "|" + merchant_password + "|" + action_name + "|" + sender_phone + "|" + merchant_id + "|" + amount +"|" + currency + "|" + order_id + "|" + transaction_id + "|" + status + "|" + code + "|" signature = base64(sha1(signature_source))
PHP: $sign=base64_encode(sha1($signature_source,1));
Perl: $sign=encode_base64(sha1($signature_source));
[/code]
Все параметры, кроме merchant_password, приходят на result_url и server_url по методу POST с соответствующими именами.
merchant_password - это пароль вашего мерчанта, храните в секрете и нигде не передавайте его, он является залогом вашей безопасности при автоматической продаже!
Приходящие параметры:
action_name - способ ответа, может быть "result_url" или "server_url" в зависимости от того каким способом был прислан ответ.
sender_phone- номер телефона плательщика.
transaction_id - номер транзакции в системе.
status - код ответа, может быть "success", "failure", "wait_secure".
code - уточняющий код ответа, пока не используется.
Все остальные приходящие параметры равны входящим параметрам.
response_code, reason_code, id - устаревшие параметры, не используйте их.
Будьте внимательны, ответ от нас приходит в кодировке utf8 (особенно смотрите за параметрами order_id, description)!