Billing + LiqPay

Разработка платежной системы LiqPay для Биллинга

 
Посетитель
small user social cms
Сообщений: 61
Пишу платежную систему для биллинга, возникают вопросы, каким образом интерпритировать ответы сервера?
Код файла info.php^
Код PHP:
  1.  
  2. <?php
  3.  
  4. if (!(defined('VALID_CMS') || defined('VALID_CMS_ADMIN'))){ die(); }
  5.  
  6. $psinfo['title'] = 'LiqPay';
  7. $psinfo['url'] = 'https://liqpay.com/';
  8. $psinfo['logo'] = 'liqpay.gif';
  9.  
  10. //Курсы валют платежной системы
  11.  
  12. $pscfg['currency']['RUR'] = '1';
  13.  
  14. //настройки по-умолчанию
  15.  
  16. $pscfg['S_NAME']['title'] = 'Название Сайта (Информация добавляется в название платежа)';
  17. $pscfg['S_NAME']['value'] = 'Моя социальная сеть';
  18.  
  19. $pscfg['FROM']['title'] = 'Мерчант ID';
  20. $pscfg['FROM']['value'] = '';
  21.  
  22. $pscfg['S_KEY']['title'] = 'Секретный ключ';
  23. $pscfg['S_KEY']['value'] = '';
  24.  
  25. $pscfg['PHONE']['title'] = 'Телефон';
  26. $pscfg['PHONE']['value'] = '';
  27.  
  28.  
  29.  
  30. ?>
  31.  
Код файла form.php
Код PHP:
  1.  
  2. <?
  3. $merchant_id=$this->config['FROM']['value'];
  4. $signature=$this->config['S_KEY']['value'];
  5. $url="https://www.liqpay.com/?do=clickNbuy";
  6. $method='card';
  7. $phone=$this->config['PHONE']['value'];
  8. $amount=$this->summ;
  9. $description='Пополнение баланса пользователем';
  10. $order_id=$this->order['id'];
  11.  
  12. $xml="<request>
  13. <version>1.2</version>
  14. <result_url>http://СВОЙ-САЙТ.com/billing/get-payment/liqpay</result_url>
  15. <server_url>http://СВОЙ-САЙТ.com/billing/get-payment/liqpay</server_url>
  16. <merchant_id>$merchant_id</merchant_id>
  17. <order_id>$order_id</order_id>
  18. <amount>$amount</amount>
  19. <currency>RUR</currency>
  20. <description>$description</description>
  21. <default_phone>$phone</default_phone>
  22. <pay_way>$method</pay_way>
  23. </request>
  24. ";
  25.  
  26.  
  27. $xml_encoded = base64_encode($xml);
  28. $lqsignature = base64_encode(sha1($signature.$xml.$signature,1));
  29.  
  30. ?>
  31.  
  32. <form action='https://www.liqpay.com/?do=clickNbuy' method='POST' id="liqpay_<?php echo $currency; ?>"
  33. style="display:none"
  34. class="psys">
  35. <input type='hidden' name='operation_xml' value="<?php echo $xml_encoded; ?>" />
  36. <input type='hidden' name='signature' value="<?php echo $lqsignature; ?>" />
  37. <input type='button' value="<?php echo $_LANG['SHOP_CONTINUE']; ?>" onclick="$('form#liqpay_<?php echo $currency; ?>').submit()"/>
  38. </form>
  39.  
  40.  
Здесь все ясно и все работает, но как обработать в файле liqpay.php ответ сервера?

Наш ответ прийдет к вам в закодированном виде, методом POST в переменных operation_xml и signature (по аналогии с запросом). Чтоб раскодировать operation_xml вам необходимо проделать следующую процедуру, пример:
Код PHP:
  1. $xml_decoded=base64_decode($xml);
После распаковки вы получите XML следующего вида:
Код PHP:
  1.  
  2. $xml=<response>
  3. <version>1.2</version>
  4. <merchant_id></merchant_id>
  5. <order_id> ORDER_123456</order_id>
  6. <amount>1.01</amount>
  7. <currency>UAH</currency>
  8. <description>Comment</description>
  9. <status>success</status>
  10. <code></code>
  11. <transaction_id>31</transaction_id>
  12. <pay_way>card</pay_way>
  13. <sender_phone>+3801234567890</sender_phone>
  14. <goods_id>1234</goods_id>
  15. <pays_count>5</pays_count>
  16. </response>";
  17.  
Примечание, по тегам
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" - платеж находится на проверке

Вопрос - Как обработать ответ и зачислить или незачислить деньги?
Редактировалось: 1 раз (Последний: 7 июня 2013 в 22:37)
Посетитель
small user social cms
Медаль
Сообщений: 366
Код PHP:
  1.  
  2. $rez = simplexml_load_string($result);
  3. $xml = base64_decode(strval($rez->liqpay->operation_envelope->operation_xml));
  4. $signatur = 'Ваш секретный ключ';
  5. $check = strval($rez->liqpay->operation_envelope->signature);
  6. $signature = base64_encode(sha1($signatur.$xml.$signatur, 1));
  7. if($signature == $check)
  8. {
  9. $payrez = (array)simplexml_load_string($xml);
  10. if($payrez['status'] == 'success')
  11. {
  12. $payrez = (array)$payrez['transaction'];
  13. $status = $payrez['status'];
  14. switch($status)
  15. {
  16. case 'success': //Платеж поступил
  17. //Проверить $payrez['order_id'], $payrez['amount'], $payrez['currency'] на соответствие с заказом
  18.  
  19. break;
  20. case 'failure': //Платеж отменен, отменяем заказ
  21. break;
  22. }
  23. }
  24. }
  25.  
Реклама
cms
Посетитель
small user social cms
Сообщений: 61
stealthdebuger, не совсем понял, как будет обрабатывать биллинг результат?
Посетитель
small user social cms
Медаль
Сообщений: 266
могу готовый скрипт дать для liqpay, подгоните под свои нужды
http://watson-studio.com
Посетитель
small user social cms
Сообщений: 61
Smith:
готовый скрипт дать для liqpay
для биллинга? я просто не могу разобраться как биллинг определяет платеж
Посетитель
small user social cms
Медаль
Сообщений: 266
для самописного движка, но там есть как раз скрипт который отрабатывает ответ сервера
http://watson-studio.com
Посетитель
small user social cms
Сообщений: 61
да ответ я и сам обрабатывал на самописном, мне именно биллинг нужно понять как определяет что прошла оплата и что нужно зачислять...
Посетитель
small user social cms
Медаль
Сообщений: 266
Попробуйте по аналогии с файлом interkassa.php (расположение components/billing/payments/interkassa)

И в самой кассе настроить куда возвращать ответ, на примере файла выше, ответ должен поступать на :
http://ваш-сайт/billing/get-payment/interkassa

Т.е. Создаете в папке payments папку liqpay, делаете в ней все по аналогии с интеркассой и соответственно
ответ от платежки должен прийти на: http://ваш-сайт/billing/get-payment/liqpay
Редактировалось: 2 раз (Последний: 8 июня 2013 в 16:07)
http://watson-studio.com
Посетитель
small user social cms
Медаль
Сообщений: 266
Это должно также помочь:
http://www.instantmaps.ru/help/payments.html

п.с. В файле interkassa.php все достаточно хорошо расписано и с русскими комментариями кода
Редактировалось: 1 раз (Последний: 8 июня 2013 в 16:06)
http://watson-studio.com
Посетитель
small user social cms
Сообщений: 61
спасибо, друг обещал помочь, как будет готов - отдам бесплатно по лицензии GNU :)
Посетитель
no avatar
Сообщений: 4
Просто так подключить LiqPay не получится, так как, нужно менять зашифрованный код. Этот вопрос к разработчикам. Кажется, в последних версиях биллингах эта система уже внедрена
Посетитель
no avatar
Сообщений: 4
Smith:

могу готовый скрипт дать для liqpay, подгоните под свои нужды
здравствуйте. вы поможете с установкой на сайт liqpay?
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.