Модуль оплаты LIQPAY

Тема в разделе "Интернет-магазины", создана пользователем postulat, 27 июл 2009.

  1. postulat

    postulat Создатель

    Регистр.:
    26 фев 2008
    Сообщения:
    28
    Симпатии:
    2
    Народ, помогите сделать модуль оплаты для системы платежей LIQPAY ниже примерный код с которого можно что то слепить

    PHP:
    class LIQPAY {
        var 
    $code$title$description$enabled;

        
    // class constructor
        
    function LIQPAY() {
          global 
    $order;

          
    $this->code 'liqpay';
          
    $this->title MODULE_PAYMENT_LIQPAY_TEXT_TITLE;
          
    $this->description MODULE_PAYMENT_LIQPAY_TEXT_DESCRIPTION;
          
    $this->sort_order MODULE_PAYMENT_LIQPAY_SORT_ORDER;
          
    $this->enabled = ((MODULE_PAYMENT_LIQPAY_STATUS == 'True') ? true false);


          if ((int)
    MODULE_PAYMENT_LIQPAY_ORDER_STATUS_ID 0) {
            
    $this->order_status MODULE_PAYMENT_LIQPAY_ORDER_STATUS_ID;
          }

          if (
    is_object($order)) $this->update_status();

          
    $this->form_action_url 'https://liqpay.com/?do=click_n_buy';
        }

    // class methods
        
    function update_status() {
          global 
    $order;

          if ( (
    $this->enabled == true) && ((int)MODULE_PAYMENT_LIQPAY_ZONE 0) ) {
            
    $check_flag false;
            
    $check_query os_db_query("select zone_id from " TABLE_ZONES_TO_GEO_ZONES " where geo_zone_id = '" MODULE_PAYMENT_LIQPAY_ZONE "' and zone_country_id = '" $order->billing['country']['id'] . "' order by zone_id");
            while (
    $check os_db_fetch_array($check_query)) {
              if (
    $check['zone_id'] < 1) {
                
    $check_flag true;
                break;
              } elseif (
    $check['zone_id'] == $order->billing['zone_id']) {
                
    $check_flag true;
                break;
              }
            }

            if (
    $check_flag == false) {
              
    $this->enabled false;
            }
          }
        }

        function 
    javascript_validation() {
          return 
    false;
        }

        function 
    selection() {
          return array(
    'id' => $this->code,
                       
    'module' => $this->title);
        }

        function 
    pre_confirmation_check() {
          return 
    false;
        }

        function 
    confirmation() {
          return 
    false;
        }

        function 
    process_button() {
          global 
    $order$currencies$currency$osPrice;

          
    $order_id_query os_db_query("select max(orders_id) as max from " TABLE_ORDERS);
          
    $order_id os_db_fetch_array($order_id_query );
          
    $order_id $order_id['max'];
          
    $OrderID $order_id 1;
          
          
    $TotalAmount number_format($osPrice->CalculateCurrEx($order->info['total'], MODULE_PAYMENT_LIQPAY_CURRENCY), 2'.''');

          
    $LIQPAY_sign_hash_str MODULE_PAYMENT_LIQPAY_SHOP_ID ':' $TotalAmount ':' $OrderID ':' '' ':' os_session_id() . ':' MODULE_PAYMENT_LIQPAY_SECRET_KEY;

          
    $LIQPAY_sign_hash md5($LIQPAY_sign_hash_str);

          
    $process_button_string os_draw_hidden_field('LIQPAY_shop_id'MODULE_PAYMENT_LIQPAY_SHOP_ID) .
                                   
    os_draw_hidden_field('LIQPAY_payment_amount'$TotalAmount) .
                                   
    os_draw_hidden_field('LIQPAY_payment_id'$OrderID) .
                                   
    os_draw_hidden_field('LIQPAY_payment_desc''Order-' $OrderID) .
                                   
    os_draw_hidden_field('LIQPAY_paysystem_alias''') . 
                                   
    os_draw_hidden_field('LIQPAY_baggage_fields'os_session_id()) . 
                                   
    os_draw_hidden_field('LIQPAY_sign_hash'$LIQPAY_sign_hash);

          return 
    $process_button_string;
        }

        function 
    before_process() {
          return 
    false;
        }

        function 
    after_process() {
          return 
    false;
        }

        function 
    output_error() {
          return 
    false;
        }

        function 
    check() {
          if (!isset(
    $this->_check)) {
            
    $check_query os_db_query("select configuration_value from " TABLE_CONFIGURATION " where configuration_key = 'MODULE_PAYMENT_LIQPAY_STATUS'");
            
    $this->_check os_db_num_rows($check_query);
          }
          return 
    $this->_check;
        }

        function 
    install() {
          
    os_db_query("insert into " TABLE_CONFIGURATION " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, date_added) values ('MODULE_PAYMENT_LIQPAY_STATUS', 'True', '6', '1', 'os_cfg_select_option(array(\'True\', \'False\'), ', now())");
            
    os_db_query("insert into ".TABLE_CONFIGURATION." (configuration_key, configuration_value,  configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_LIQPAY_ALLOWED', '', '6', '0', now())");
          
    os_db_query("insert into " TABLE_CONFIGURATION " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_LIQPAY_SHOP_ID', '', '6', '2', now())");
          
    os_db_query("insert into " TABLE_CONFIGURATION " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_LIQPAY_SECRET_KEY', '', '6', '3', now())");
          
    os_db_query("insert into " TABLE_CONFIGURATION " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_LIQPAY_CURRENCY', 'UAH', '6', '4', now())");
          
    os_db_query("insert into " TABLE_CONFIGURATION " (configuration_key, configuration_value, configuration_group_id, sort_order, use_function, set_function, date_added) values ('MODULE_PAYMENT_LIQPAY_ZONE', '0', '6', '5', 'os_get_zone_class_title', 'os_cfg_pull_down_zone_classes(', now())");
          
    os_db_query("insert into " TABLE_CONFIGURATION " (configuration_key, configuration_value, configuration_group_id, sort_order, date_added) values ('MODULE_PAYMENT_LIQPAY_SORT_ORDER', '1', '6', '6', now())");
          
    os_db_query("insert into " TABLE_CONFIGURATION " (configuration_key, configuration_value, configuration_group_id, sort_order, set_function, use_function, date_added) values ('MODULE_PAYMENT_LIQPAY_ORDER_STATUS_ID', '0', '6', '0', 'os_cfg_pull_down_order_statuses(', 'os_get_order_status_name', now())");
        }

        function 
    remove() {
          
    os_db_query("delete from " TABLE_CONFIGURATION " where configuration_key in ('" implode("', '"$this->keys()) . "')");
        }

        function 
    keys() {
          return array(
    'MODULE_PAYMENT_LIQPAY_STATUS''MODULE_PAYMENT_LIQPAY_ALLOWED''MODULE_PAYMENT_LIQPAY_SHOP_ID''MODULE_PAYMENT_LIQPAY_SECRET_KEY''MODULE_PAYMENT_LIQPAY_CURRENCY''MODULE_PAYMENT_LIQPAY_ZONE''MODULE_PAYMENT_LIQPAY_SORT_ORDER''MODULE_PAYMENT_LIQPAY_ORDER_STATUS_ID');
        }
      }
    ?>
     
  2. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
    Вот юзай)))
    http://www.shop-scripts.ru/showpost.php?p=7262&postcount=14
     
  3. postulat

    postulat Создатель

    Регистр.:
    26 фев 2008
    Сообщения:
    28
    Симпатии:
    2
    Zlobniy Babko

    Спасибо ты имеешь ввиду просто добавить в существующий модуль блок res

    Добавлено через 58 минут
    Как бы с res все хорошо но нужно именно надо под эту структуру
     
  4. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
    Ты по подробнее отпиши, под какую CMS нада.
    В выложенном тобою коде, что не так?
    Попробую что-нить сделать. Если получится - выложу результат тута.
    А так же выложи, если есть все файлы касаемы др. платежек... Чтоб легче соориентироваться что, куда и от куда
     
  5. postulat

    postulat Создатель

    Регистр.:
    26 фев 2008
    Сообщения:
    28
    Симпатии:
    2
    Сейчас выложу пример 2checkout на которой у тебя пример, webmoney, все они как бы по написанию похожу отличаются одним блоком, вот тут как бы и проблем
     

    Вложения:

    • wmr.rar
      Размер файла:
      72,2 КБ
      Просмотров:
      53
    • webmoney.rar
      Размер файла:
      2,3 КБ
      Просмотров:
      53
    • webmoney_merchant.rar
      Размер файла:
      5,7 КБ
      Просмотров:
      57
    • z_payment.rar
      Размер файла:
      5,4 КБ
      Просмотров:
      54
  6. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
    Попробуй етот файл. Установи модуль Z-payment и в поле purse в админке введи свой ID (пример: i9973555375) + отредактируй в файле result_url.
    По идее должно работать...

    PHP:
    $process_button_string os_draw_hidden_field('order_id'substr($cart_zpayment_idstrpos($cart_zpayment_id'-')+1)) .
    os_draw_hidden_field('merchant_id'$purse) .
    os_draw_hidden_field('description'os_cleanName('Заказ номер: ' substr($cart_zpayment_idstrpos($cart_zpayment_id'-')+1) . ', покупатель номер: ' $_SESSION['customer_id'])) .
    os_draw_hidden_field('amount'$order_sum) .
    os_draw_hidden_field('version''1.1']) .
    os_draw_hidden_field('currency''UAH']) .
    os_draw_hidden_field('result_url''http://localhost/shop/index.php?show_aux_page=2']);
    Все подробности подключекния есть на офф. сайте. Изначально было не правильно сделано(((
    https://liqpay.com/?do=static&name=liqpaydev#cnb
     

    Вложения:

    • z_payment.zip
      Размер файла:
      5,9 КБ
      Просмотров:
      57
  7. postulat

    postulat Создатель

    Регистр.:
    26 фев 2008
    Сообщения:
    28
    Симпатии:
    2
    так вроде что то работает, правда в админке ругалось на этот синтаксис ']'

    строки 305, 306, 307

    os_draw_hidden_field('version', '1.1']) .
    os_draw_hidden_field('currency', 'UAH']) .
    os_draw_hidden_field('result_url', 'http://localhost/shop/index.php?show_aux_page=2']);


    и при передачи на liqpay коммент идет типа вида

    Заказ-номе�---8256--пок�-па�-ел�--номе�---1

    ---------- Post added at 11:13 ---------- Previous post was at 10:10 ----------

    Так текстовку я подправил, сейчас все нормально

    PHP:
    $order_id =  substr($_SESSION['cart_zpayment_id'], strpos($_SESSION['cart_zpayment_id'], '-')+1);

          
    $process_button_string os_draw_hidden_field('order_id'$order_id) .
                                   
    os_draw_hidden_field('merchant_id'$purse) .
                                   
    os_draw_hidden_field('description''Номер заказа - ' $order_id ) . 
    Но интересует второй момент при проведении платежа, идет resuly_url index.php?show_aux_page=2'

    но при всем при этом нет оформления заказа в самом маге
    т.е. товар остается в корзине

    По поводу формирования заказа, фактически заказ формируется, но не очищается корзина заказов, каким блоком мона прибить, теоретически догадываюсь должно прибивать записи в соответствующих тейблах

    Очистить корзинку по моему скрипту можно $_SESSION['cart']->reset(true);

    вдруг кому пригодится
     
  8. Дмитрий Кесаев

    Дмитрий Кесаев aka Zlobniy Babko

    Заблокирован
    Регистр.:
    10 май 2007
    Сообщения:
    1.332
    Симпатии:
    1.266
    Ну если платеж проходит и не записывается в Бд, то можно отсматривать номера оплаченных заказов на самом сайте likpay.

    Касаемо ] - лишние)))
     
  9. postulat

    postulat Создатель

    Регистр.:
    26 фев 2008
    Сообщения:
    28
    Симпатии:
    2
    Zlobniy Babko

    То все понятно, но хотелось бы элементарной автоматизации, заказ формируется, сессию по карзине тоже можно удалить, но тут такой вопрос сие действо os_draw_hidden_field('result_url', 'http://localhost/shop/index.php?show_aux_page=2']); происходит при любом раскладе был ли удачный платеж или оборвался, либо покупатель забил на него, просто ПриватБанк имеет такую особенность как блочить карты при достижении определенного кол-во транзакций в день, по сему вылезла эта проблема.

    Есть на liqpay тег типа server_url который должен работать как утверждают на сайте через cgi скрипт с тремя статусами "success", "failure" "wait". Скрипт конечно никто не дает с приватавской поддержки, что ставит под сомнения или это таки платежная, процессинговая система или заготовка сделай сам.

    Если кто сталкивался с данным вопрос, подскажите плиз, спасибо !
     
  10. Кот

    Кот

    Регистр.:
    18 май 2007
    Сообщения:
    171
    Симпатии:
    57
    В меня в магазине стоит модуль оплаты LIQPAY с автоматической сменой статуса заказа, получил бесплатно т.к. являюсь пользователем oscommerce STS by eShop-Master.com код бы выложил но файл зашифрован :(