Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление
  2. Данный раздел создан исключительно для релизов! Вопросы по лаунчеру или обвязке задавайте ТОЛЬКО в соответсвующей теме автора. Любые другие темы будут удалены, а авторы понесут наказание.

Идея Свой платежный шлюз (почти)

Тема в разделе "Веб-обвязки и лаунчеры", создана пользователем zuma2, 27 дек 2013.

  1. Автор темы
    zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    есть скрипт Lazypay (типо как рентшоп)
    Есть ли тут знающие люди которые могли бы разобрать этот скрипт?
    и почти не пондобится всякие робокассы, интеркассы и т.д
    вот собсна ниже, я в php нуб, но как можно было бы впилить в лк?

    PHP:
    <?php
    class order extends FE_Controller {
        function 
    __Construct() {
            
    parent::__construct();
            
    $this->load->model('order_model');
            
    $this->load->model('goods_model');
        }
        public function 
    index()
        {
            
    $rules $this->order_model->rules;
            
    $this->form_validation->set_rules($rules);
       
            if (
    $this->form_validation->run() == TRUE) {
                
    $data $this->order_model->array_from_post(array('email','count','type','fund'));
                
    $item $this->goods_model->get($data['type']);
               
                
    //Проверка ID товара
                
    if(!count($item)){
                    
    $resp['error'] =  'Такого товара не существует!';
                    echo 
    json_encode($resp);
                    return 
    false;
                }
               
                
    //Проверка кол-ва товара, если товар - файл, то не проверяем!
                
    if($item->sell_method == 0)
                {
                    
    $encdata $this->encrypt->decode($item->goods);
                    if(empty(
    $encdata))
                    {
                        
    $item->count '0';
                    }
                    else
                    {
                        
    $item->count count(explode("\n",$encdata));
                        
    $item->goods "";
                    }
                    if(
    $item->count $data['count'])
                    {
                        
    $resp['error'] =  'Такого количества товара нет!';
                        echo 
    json_encode($resp);
                        return 
    false;
                    }
                    if(
    $item->min_order $data['count'])
                    {
                        
    $resp['error'] = 'Мин. кол-во для заказа: '.$item->min_order;
                        echo 
    json_encode($resp);
                        return 
    false;
                    }
                }
                elseif(
    $item->sell_method == 1)
                {
                    
    $item->count 'Файл';
                    
    $data['count'] = 'Файл';
                    
    $item->goods "";
                }
               
            
    //Проверка метода оплаты
                
    if($data['fund'] == 1)
                {
                    
    $pay 'WMR';
                    
    $fund $this->config->item('WMR');
                    if(
    $item->sell_method == or $item->sell_method == 2)
                    
    $price = ($data['count']) * $item->price_rub;
                    else
                    
    $price $item->price_rub;
                }
                elseif(
    $data['fund'] == 2)
                {
                    
    $pay 'WMZ';
                    
    $fund $this->config->item('WMZ');
                    if(
    $item->sell_method == or $item->sell_method == 2)
                    
    $price = ($data['count']) * $item->price_dlr;
                    else
                    
    $price $item->price_dlr;
                }
                elseif(
    $data['fund'] == 3)
                {
                    
    $pay 'YAD';
                    
    $fund $this->config->item('yad_wallet');
                    if(
    $item->sell_method == or $item->sell_method == 2)
                    
    $price = ($data['count']) * $item->price_rub;
                    else
                    
    $price $item->price_rub;
                }
                elseif(
    $data['fund'] == 4)
                {
                    
    $pay 'QIWI';
                    
    $fund $this->config->item('qiwi_num');
                    if(
    $item->sell_method == or $item->sell_method == 2)
                    
    $price $data['count'] * $item->price_rub;
                    else
                    
    $price $item->price_rub;
                }
                else
                {
                    echo 
    'Выбран неверный метод оплаты!';
                    return 
    false;
                }
                
    $rand random_string('alnum',15);
                if(
    $data['fund'] == or $data['fund'] == 2)
                {
                    
    $this->load->helper('wm_helper');
                    
    $wmid $this->config->item('wmid');
                    
    $wm_pass $this->encrypt->decode($this->config->item('wm_pass'));
                    
    $wmk_file unserialize($this->encrypt->decode($this->config->item('wmk_file')));
                    
    $wmk_file $wmk_file['name'];
                    
    $wmk_path './assets/uploads/'.preg_replace('/[^\p{L}\p{N}\s]/u',''md5(config_item('encryption_key').site_url())).'/'.$wmk_file;
                    
    checkwm($wmid,$wm_pass,$wmk_path,$fund);
                }
                elseif(
    $data['fund'] == 3)
                {
                    
    $this->load->helper('yad_helper');
                    
    $clid config_item('yad_client_id');
                    
    $token config_item('yad_token');
                    
    check_yad($clid,$token);
                }
                elseif(
    $data['fund'] == 4)
                {
                    
    $this->load->helper('qiwi_helper');
                    
    $qiwi_num config_item('qiwi_num');
                    
    $qiwi_pass $this->encrypt->decode(config_item('qiwi_pass'));
                    
    check_qiwi($qiwi_num,$qiwi_pass);
                }
                
    $price number_format($price2'.''');
                
    //Если все данные верные, то собираем запрос к БД
                
    $order['bill'] = 'bill['.$rand.']';
                
    $order['email'] = $data['email'];
                
    $order['date'] = microtime(true);
                
    $order['item_id'] = $item->id;
                
    $order['count'] = $data['count'];
                
    $order['price'] = $price;
                
    $order['session_key'] = $this->session->userdata('session_id');
                
    $order['ip_address'] = $this->session->userdata('ip_address');
                
    $order['fund'] = $pay;
                
    $order['redeemed'] = FALSE;
                
    $order['paid'] = FALSE;
               
                
    $this->order_model->save($order);
               
                
    //Собираем форму платежа
                
    $form['ok'] = 'TRUE';
                
    $form['bill'] = '<b> bill['.$rand.']</b>';
                
    $form['name'] = $item->name;
                
    $form['count'] = $data['count'];
                
    $form['price'] = $price.' '.$pay;
                
    $form['fund'] = '<b>'.$fund.'</b>';
                
    $form['check_url'] = site_url('/order/'.$rand);
               
                echo 
    json_encode($form);
            }
            else {
                
    $res['error'] = validation_errors('<div>''</div>');
                
    print_r($res);
            }           
        }
       
        public function 
    checkpay() {
            if(
    preg_match('/^[a-zA-Z0-9]{15}+$/',$this->uri->segment(2),$bill))
            {   
                
    $resp['status'] = 'false';
                
    $retname $bill[0].'.txt';
                
    $savebill $bill[0];
                
    $bill 'bill['.$bill[0].']';
                
    $order $this->order_model->get_by(array('bill' => $bill),TRUE);
                if(
    count($order)) {
                    
    $item $this->goods_model->get($order->item_id);
                    if(
    count($item)) {
                        
    $this->load->helper('wm_helper');
                        
    $this->load->helper('qiwi_helper');
                        
    $this->load->helper('download');
                        if(
    $order->paid == FALSE) {
                          if(
    $order->fund == "WMR" or $order->fund == "WMZ")
                            {
                            
    $wmid $this->config->item('wmid');
                            
    $wm_pass $this->encrypt->decode($this->config->item('wm_pass'));
                            
    $wmk_file unserialize($this->encrypt->decode($this->config->item('wmk_file')));
                            
    $wmk_file $wmk_file['name'];
                            
    $wmk_path './assets/uploads/'.preg_replace('/[^\p{L}\p{N}\s]/u',''md5(config_item('encryption_key').site_url())).'/'.$wmk_file;
                            
    $price $order->price;
                            if(
    $order->fund == "WMR")
                            {
                                
    $fund $this->config->item('WMR');
                            }
                            elseif(
    $order->fund == "WMZ")
                            {
                                
    $fund $this->config->item('WMZ');
                            }
                            else
                            {
                                return 
    false;
                            }                   
                            
    $chkpay check_payment($wmid,$wm_pass,$fund,$wmk_path,$bill,$price);
                            }
                            elseif(
    $order->fund == "QIWI")
                            {
                                
    $qiwi_num config_item('qiwi_num');
                                
    $qiwi_pass $this->encrypt->decode(config_item('qiwi_pass'));
                                
    $price $order->price;
                                
    $chkpay qiwi_pay($qiwi_num,$qiwi_pass,$bill,$price);
                            }
                            if(
    $chkpay == TRUE)
                            {   
                                if(
    $item->sell_method == 0)
                                {
                                    
    $count $order->count;
                                    
    $goods explode("\n",$this->encrypt->decode($item->goods));
                                    
    $paidgoods implode("\n",array_splice($goods0$count));
                                    
    $goods implode("\n",$goods);
                                    
    $savegood['goods'] = $this->encrypt->encode($goods);
                                    
    $saveord['goods'] = $this->encrypt->encode($paidgoods);
                                }
                                elseif(
    $item->sell_method == 1)
                                {
                                    
    $uppath './assets/uploads/'.preg_replace('/[^\p{L}\p{N}\s]/u',''md5(config_item('encryption_key').$item->goods.$item->name)).'/'.$item->goods;
                                    
    $retname $item->goods;
                                    
    $paidgoods file_get_contents($uppath);
                                }
                                
    $saveord['paid'] = TRUE;
                                
    $this->order_model->save($saveord,$order->id);
                                
    $this->goods_model->save($savegood,$order->item_id);
                                
    $from parse_url(site_url());
                                
    $from $from['host'];
                                
    $this->load->library('email');
                                
    $this->email->from('admin@'.$from'admin');
                                
    $this->email->to($order->email);
                                
    $this->email->subject('Покупка на сайте '.site_url());
                                
    $this->email->message("Спасибо за покупку на нашем сайте! \n Вы можете получить свой заказ по этой ссылке: ".site_url('order/'.$savebill));   
                                
    $this->email->send();
                                if (!
    $this->input->is_ajax_request()) {
                                    
    force_download($retname$paidgoods);
                                }
                                
    $resp['status'] = 'ok';
                                
    $resp['chkurl'] = site_url('order/'.$savebill);
                            }
                            else {
                                
    $resp['status'] = 'false';
                            }
                        }
                        elseif(
    $order->paid == TRUE)
                        {
                            if(
    $item->sell_method == 0)
                            {
                                
    $paidgoods $this->encrypt->decode($order->goods);
                                if (!
    $this->input->is_ajax_request()) {
                                    
    force_download($retname$paidgoods);
                                }
                            }
                            elseif(
    $item->sell_method == 1)
                            {
                                
    $uppath './assets/uploads/'.preg_replace('/[^\p{L}\p{N}\s]/u',''md5(config_item('encryption_key').$item->goods.$item->name)).'/'.$item->goods;
                                if (!
    $this->input->is_ajax_request()) {
                                    
    force_download($item->goodsfile_get_contents($uppath));
                                }
                            }
                            
    $resp['status'] = 'ok';
                            
    $resp['chkurl'] = site_url('order/'.$savebill);
                        }
                        else
                        {
                            
    $resp['status'] = 'false';
                        }
                       
                    }
                    echo 
    json_encode($resp);
               
                }
            }
        }
            
     
    Последнее редактирование: 2 янв 2014
  2. Хостинг MineCraft
    <
  3. webgenres

    webgenres Активный участник

    Баллы:
    58
    payyer юзай.
     
    The Midnight Wizard нравится это.
  4. Автор темы
    zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    эм, я не понял, это просто кошелек. а так была бы автоматизация и без всяких аттестатов.
     
  5. webgenres

    webgenres Активный участник

    Баллы:
    58
    Почти тоже самое)
     
  6. Yupi

    Yupi Активный участник

    Баллы:
    63
    Имя в Minecraft:
    Yupi
    Ты знаешь как его можно связать с оплатой вместо интеркассы ?
     
  7. webgenres

    webgenres Активный участник

    Баллы:
    58
    Алмазик умеет
     
  8. Yupi

    Yupi Активный участник

    Баллы:
    63
    Имя в Minecraft:
    Yupi
    Как с ним связаться можно ?
     
  9. webgenres

    webgenres Активный участник

    Баллы:
    58
    Skype имеется?
     
  10. Автор темы
    zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    Не ну смысл через людей кидать когда через этот скрипт падает копейка прямо в кошелек?
     
  11. webgenres

    webgenres Активный участник

    Баллы:
    58
    Я за так дам!
    Пусть скайп даст
     
  12. ARGENT

    ARGENT Старожил Пользователь

    Баллы:
    103
    Skype:
    den.argent
    Имя в Minecraft:
    ARGENT
    Переписывал лк геймлакса под него. За копейку могу сделать. Скайп слева.
     
  13. Kela-4D

    Kela-4D Старожил Пользователь

    Баллы:
    143
    Skype:
    kelatyh
    Имя в Minecraft:
    Kelatyh
    @Almazik0_o то ли @AlmazikLife его акк!
     
  14. Автор темы
    zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    я имел ввиду про скрипт ....
     
  15. Coffee

    Coffee Активный участник Пользователь

    Баллы:
    88
    Skype:
    x_engineer
    дырявей лэйзишопа наверное только друшлак
     
  16. Автор темы
    zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    есть пофикшеные версии.[DOUBLEPOST=1388691341,1388221555][/DOUBLEPOST]
    Во первых UP!
    что там дырявое?
     
  17. Coffee

    Coffee Активный участник Пользователь

    Баллы:
    88
    Skype:
    x_engineer
    по-моему уже где-то здесь на форуме про него писали, поищи.
     
  18. blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    Согласен.
    Ну, или в крайнем случае, Саша Грей.[DOUBLEPOST=1388724088,1388724001][/DOUBLEPOST]
    что за убогость?!
    зачем вся эта бредня?!
    откуда берется наследование?!
    тут ООП неуместно, имхо.
     
  19. Автор темы
    zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    Я наслышан был (из сайтов хацкиров) XSS уязвимость.

    Ну, вот допустим если оплата webmoney то заходим в кипер и собираем инфу платежей.
    (я возможно ошибся, но все же)

    PHP:
    <?
    error_reporting(0);
    if (!isset(
    $class)) { $class 'WMXI'; }
    require_once(
    "wm/$class.php");
    function 
    checkwm($wmid,$wm_pass,$wm_path,$fund) {
                
    # Форсирование использования библиотек
            //define('WMXI_MATH', 'bcmath4'); # Варианты: gmp, bcmath4, bcmath5
            
    define('WMXI_MD4''hash'); # Варианты: mhash, hash, class


            # Создаём объект класса. Передаваемые параметры:
            
    $wmxi = new WMXI(realpath('../WMXI.crt'), 'UTF-8');

            
    # Параметры инициализации ключем Webmoney Keeper Classic
            
    define('WMID'$wmid);
            
    define('PASS'$wm_pass);
            
    define('KWMFILE'$wm_path);

            
    $wmkey = array('pass' => PASS'file' => KWMFILE);
            if(
    $wmxi->Classic(WMID$wmkey))
            echo 
    '123';
            
    date_default_timezone_set('Europe/Moscow');
            
    $res $wmxi->X3(
                
    $fund,  # номер кошелька для которого запрашивается операция
                
    0,              # номер операции (в системе WebMoney)
                
    0,              # номер перевода
                
    0,              # номер счета (в системе WebMoney) по которому выполнялась операция
                
    0,              # номер счета
                
    date('Ymd',strtotime('+1 day')),      # минимальное время и дата выполнения операции
                
    date('Ymd',strtotime('+1 day'))          # максимальное время и дата выполнения операции
            
    );
            
    $resp $res->Sort(false);
            if(
    $resp['retval'] != 0)
            {
                die(
    'Данные неверны!');
            }
    }
    function 
    testwm($wmid,$wm_pass,$wm_path,$fund)
    {
            
    # Форсирование использования библиотек
            // define('WMXI_MATH', 'bcmath4'); # Варианты: gmp, bcmath4, bcmath5
            
    define('WMXI_MD4''hash'); # Варианты: mhash, hash, class


            # Создаём объект класса. Передаваемые параметры:
            
    $wmxi = new WMXI(realpath('../WMXI.crt'), 'UTF-8');

            
    # Параметры инициализации ключем Webmoney Keeper Classic
            
    define('WMID'$wmid);
            
    define('PASS'$wm_pass);
            
    define('KWMFILE'$wm_path);

            
    $wmkey = array('pass' => PASS'file' => KWMFILE);
            if(
    $wmxi->Classic(WMID$wmkey))
            echo 
    '123';
            
    date_default_timezone_set('Europe/Moscow');
            
    $res $wmxi->X3(
                
    $fund,  # номер кошелька для которого запрашивается операция
                
    0,              # номер операции (в системе WebMoney)
                
    0,              # номер перевода
                
    0,              # номер счета (в системе WebMoney) по которому выполнялась операция
                
    0,              # номер счета
                
    date('Ymd',strtotime('+1 day')),      # минимальное время и дата выполнения операции
                
    date('Ymd',strtotime('+1 day'))          # максимальное время и дата выполнения операции
            
    );
            
    $resp $res->Sort(false);
            
    print_r($resp);
    }
    function 
    check_payment($wmid,$wm_pass,$fund,$wm_path,$desc,$amount)
    {
        if(!empty(
    $wmid) && !empty($wm_pass) && !empty($fund) && !empty($wm_path) && !empty($desc) && !empty($amount))
        {
            
    # Форсирование использования библиотек
            //define('WMXI_MATH', 'bcmath4'); # Варианты: gmp, bcmath4, bcmath5
            
    define('WMXI_MD4''hash'); # Варианты: mhash, hash, class


            # Создаём объект класса. Передаваемые параметры:
            
    $wmxi = new WMXI(realpath('../WMXI.crt'), 'UTF-8');

            
    # Параметры инициализации ключем Webmoney Keeper Classic
            
    define('WMID'$wmid);
            
    define('PASS'$wm_pass);
            
    define('KWMFILE'$wm_path);

            if (
    defined('EKEY') && defined('NKEY')) { $wmkey = array('ekey' => EKEY'nkey' => NKEY); }
            elseif (
    defined('KWMDATA')) { $wmkey = array('pass' => PASS'data' => KWMDATA); }
            elseif (
    defined('KWMFILE')) { $wmkey = array('pass' => PASS'file' => KWMFILE); }
            if (isset(
    $wmkey)) { $wmxi->Classic(WMID$wmkey); }
            
    date_default_timezone_set('Europe/Moscow');
            
    $res $wmxi->X3(
                
    $fund,  # номер кошелька для которого запрашивается операция
                
    0,              # номер операции (в системе WebMoney)
                
    0,              # номер перевода
                
    0,              # номер счета (в системе WebMoney) по которому выполнялась операция
                
    0,              # номер счета
                
    date('Ymd',strtotime('Yesterday')),      # минимальное время и дата выполнения операции
                
    date('Ymd',strtotime('Tomorrow'))          # максимальное время и дата выполнения операции
            
    );

            
    $resp $res->Sort(false);
            if(
    $resp['operations']['@attributes']['cnt'] == 1) {
                if(
    $resp['operations']['operation']['desc'] == $desc && round($resp['operations']['operation']['amount'],1) == $amount && $resp['operations']['operation']['opertype'] == 0)
                {
                    return 
    TRUE;
                }
            }
            elseif (
    count($resp['operations']['operation']) > 1)
            {
                foreach(
    $resp['operations']['operation'] as $oper)
                {
                    if(
    $oper['desc'] == $desc && round($oper['amount'],1) == $amount && $oper['opertype'] == 0)
                    {
                        return 
    TRUE;
                    }
                }
            }
            else
            {
                return 
    FALSE;
            }
        }
        else
        {
            return 
    FALSE;
        }
    }
    ?>
    или для вас такой код уже слишком?
     
    Последнее редактирование: 3 янв 2014
  20. blogger2

    blogger2 Старожил Пользователь

    Баллы:
    123
    Skype:
    ilja0176
    Имя в Minecraft:
    XuPoH
    я бог PHP.
    Для меня ничего не слишком, ибо я знаком с такими функциями и такими фичами, о которых вы явно не слышали.
    Данный код, по сути, связан лишь с дэйттайм, проверками на действительность покупки несколькими способами.
     
  21. Автор темы
    zuma2

    zuma2 Старожил Пользователь Заблокирован

    Баллы:
    173
    Skype:
    sytems.admin
    Имя в Minecraft:
    zuma2
    Ну таки вот, ну сделать вместо выбора товара, ввод пополнения, потом формировался счет, после оплаты, отправлялся запрос в бд, мол все пополнено и начислялись бабули.[DOUBLEPOST=1388756131,1388749036][/DOUBLEPOST]
    ну раз лайкнул так помоги.
     
    Оригинало_о нравится это.

Поделиться этой страницей