jameson
Администратор
Доброго времени! Недавно пришлось столкнуться с необходимостью по просьбам заказчика убрать один счет (для покупок) и реализовать покупку фруктов (деревьев, баранов и т.д.) прямо со страницы фермы.
После нажатия кнопки купить:
Счет для покупок в данном конкретном примере изначально использовался только для покупок, при этом кому-то начислялись бонусы и т.д., они все оставались мертвым балансом на который купить ничего нельзя, вот и решено было от всего этого избавится.
Краткое описание реализации:
Конкретика:
Заранее предупреждаю, это не скрипт и не модуль, более того у Вас могут быть другие модули или скрипты, которые могут чему-то помешать, это просто полезная статья для тех, кто понимает о чем идет речь. Использовать ее или нет - все на ваш страх и риск!
Итак поехали, первым делом нам нужно убрать все строки отвечающие за начисление баланса, тут я вам не помощник, у каждого свои мерчанты стоят, с другой стороны, даже если баланс будет пополняться, а купить на него ничего нельзя, то пускай начисляется, главное чтобы не на счет для вывода
Затем в файле insert как можно выше прописываем код:
В этом же файле меняем переменную суммы платежа (в моем случае $sum) на $buy, поле insert кстати можно сделать disable с отображением $buy.
Далее открываем farm.php и прописываем примерно следующее, надо оговорится, что в моем случае стоит кол-во покупаемых позиций, поэтому у меня код такой:
Теперь самое главное, настроить понимание платежей, а вернее их назначения.
Код для обработчика входящих запросов от ПС, после расшифровки запроса на моем примере:
Собственно все, будут вопросы пишите тут или в личку. Справедливости ради стоит заметить, что до этого на сайте были убраны сборы и продажи урожая, а также выставлено автоначисление 100% доходов на счет для вывода.
После нажатия кнопки купить:
Счет для покупок в данном конкретном примере изначально использовался только для покупок, при этом кому-то начислялись бонусы и т.д., они все оставались мертвым балансом на который купить ничего нельзя, вот и решено было от всего этого избавится.
Краткое описание реализации:
- GET запрос с суммой к странице оплаты.
- Выбор способа оплаты и передача необходимых данных на шлюз.
- При успешной оплате мы получаем сумму и id платежа, сравниваем сумму с прописанными в мерчантах тарифами, в моем случае тариф №2 и если сумма тарифа №2 == 2500, обращаемся сначала к базе инсерт, где узнаем имя юзера по ид платежа, а потом к базе юзверей б, где делаем начисление покупки в нужной таблице. Как вариант себе для удобства тестирования я поставил еще и уведомления от телеги.
Конкретика:
Заранее предупреждаю, это не скрипт и не модуль, более того у Вас могут быть другие модули или скрипты, которые могут чему-то помешать, это просто полезная статья для тех, кто понимает о чем идет речь. Использовать ее или нет - все на ваш страх и риск!
Итак поехали, первым делом нам нужно убрать все строки отвечающие за начисление баланса, тут я вам не помощник, у каждого свои мерчанты стоят, с другой стороны, даже если баланс будет пополняться, а купить на него ничего нельзя, то пускай начисляется, главное чтобы не на счет для вывода
Затем в файле insert как можно выше прописываем код:
PHP:
if(isset($_GET['buy'])) {
$buy = $_GET['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)
));
Последнее редактирование: