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

jameson

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

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% доходов на счет для вывода.
 
Последнее редактирование:

jameson

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