Один счет в ФФ и покупки фруктов со страницы фермы

  • Автор темы jameson
  • Дата начала
jameson
Участник
Сообщения
612
Реакции
359
Доброго времени! Недавно пришлось столкнуться с необходимостью по просьбам заказчика убрать один счет (для покупок) и реализовать покупку фруктов (деревьев, баранов и т.д.) прямо со страницы фермы.

Screenshon4g.png


После нажатия кнопки купить:

23433.png


Счет для покупок в данном конкретном примере изначально использовался только для покупок, при этом кому-то начислялись бонусы и т.д., они все оставались мертвым балансом на который купить ничего нельзя, вот и решено было от всего этого избавится.

Краткое описание реализации:
  • GET запрос с суммой к странице оплаты.
  • Выбор способа оплаты и передача необходимых данных на шлюз.
  • При успешной оплате мы получаем сумму и id платежа, сравниваем сумму с прописанными в мерчантах тарифами, в моем случае тариф №2 и если сумма тарифа №2 == 2500, обращаемся сначала к базе инсерт, где узнаем имя юзера по ид платежа, а потом к базе юзверей б, где делаем начисление покупки в нужной таблице. Как вариант себе для удобства тестирования я поставил еще и уведомления от телеги.
343434.png


Конкретика:

Заранее предупреждаю, это не скрипт и не модуль, более того у Вас могут быть другие модули или скрипты, которые могут чему-то помешать, это просто полезная статья для тех, кто понимает о чем идет речь. Использовать ее или нет - все на ваш страх и риск!

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

Затем в файле insert как можно выше прописываем код:

PHP:
if(isset($_GET['buy'])) {
    $buy = $_GET['buy']; }
В этом же файле меняем переменную суммы платежа (в моем случае $sum) на $buy, поле insert кстати можно сделать disable с отображением $buy.

Далее открываем farm.php и прописываем примерно следующее, надо оговорится, что в моем случае стоит кол-во покупаемых позиций, поэтому у меня код такой:
PHP:
 if ($count >= 1) {
            if (isset($_POST['buy'])) {
               $need_money = $sonfig_site["amount_" . $citem] /100 * $count; // не обращаем внимания, я все привел к отображению в рублях и постоянно что-то умножаю или делю на 100 )))
               header('Location: /?menu=finance&sel=insertnew&buy='.$need_money.''); //запрос к Вашей странице оплаты с суммой
            }
            // ваш цикл с вашими фруктами,  деревьями, такси и т.д.
            }
Теперь самое главное, настроить понимание платежей, а вернее их назначения.

Код для обработчика входящих запросов от ПС, после расшифровки запроса на моем примере:

PHP:
       if($insert_row['payment_system'] != 'PAYEER'){
            echo $_POST['m_orderid'] . "|success";
            exit;
        }  // тут думаю все понятно
       
       
     $iuser = $insert_row["user"]; // узнаем юзера
        $sssss = $insert_row["sum"]; // узнаем сумму
       
          if($sssss == 500){ // в моем случае минимальная стоимость доли 500 рублей и если сумма пополнения равна 500, зачислем.
         
$db->Query("UPDATE db_users_b SET a_t = a_t + '1' WHERE user = '$iuser'");        
        }
       
             if($sssss == 1000){ // если купили 2 доли
         
$db->Query("UPDATE db_users_b SET a_t = a_t + '2' WHERE user = '$iuser'");        
        }
             if($sssss == 1500){ // если 3
         
$db->Query("UPDATE db_users_b SET a_t = a_t + '3' WHERE user = '$iuser'");        
        }
             if($sssss == 2000){ //  если 4
         
$db->Query("UPDATE db_users_b SET a_t = a_t + '4' WHERE user = '$iuser'");        
        }
       
        if($sssss == 2500){
         
$db->Query("UPDATE db_users_b SET b_t = b_t + '1' WHERE user = '$iuser'");  // тут все тоже самое, учитывая что мои тарифы чем дороже - тем выгодней, никто не будет покупать 2 тарифа по 2500, если можно купить за 5000, так что подсчеты количества больше не нужны.      
        }
       
        if($sssss == 5000){
         
$db->Query("UPDATE db_users_b SET c_t = c_t + '1' WHERE user = '$iuser'");    
        }
       
       if($sssss == 10000){
         
$db->Query("UPDATE db_users_b SET d_t = d_t + '1' WHERE user = '$iuser'");        
        }
       
       
        if($sssss == 15000){
         
$db->Query("UPDATE db_users_b SET e_t = e_t + '1' WHERE user = '$iuser'");        
        }
       
       

       $mess = "{$sssss} RUB POPOLNENO NA BTC MONEY ONLINE OT {$iuser}"; // уведомление в телегу о бабосиках ;)
     
   

$token='';// token телеги

$query = [
    'chat_id' => 0000000,//id чата
    'parse_mode' => 'HTML',
    'text' => $mess ];
                           
                            file_get_contents(sprintf(
                       
        'https://api.telegram.org/bot%s/sendMessage?%s',

        $token, http_build_query($query)
   
    ));
Собственно все, будут вопросы пишите тут или в личку. Справедливости ради стоит заметить, что до этого на сайте были убраны сборы и продажи урожая, а также выставлено автоначисление 100% доходов на счет для вывода.
 
Последнее редактирование:
kolyaka1051
Местный
Сообщения
77
Реакции
19
Telegram
kolyaka105
Надо будет попробовать, а что на счет подмены данных?
 
jameson
Участник
Сообщения
612
Реакции
359
kolyaka105 написал(а):
Надо будет попробовать, а что на счет подмены данных?
Что именно вы имеете ввиду под подменой данных?
 
jameson
Участник
Сообщения
612
Реакции
359
Подменивай на здоровье, например на любой странице добавляй код, который при ее посещении добавляет в базу рандомную пополняшку. Здесь же не о накрутке речь идет, а о иногда ненужных счетах, которые сбивают некоторых инвесторов с толку.
 
Сверху