Делаем ручные выплаты на ФФ

pirat3.0

Местный
Пользователь hunters обратился с вопросом о создании ручных выплат из автоматических и что бы кнопочка в админке была... "выплачено" И я решил описать, как это сделать....
Думаю админы не против, что не в ресурсы... Такая мелочевка вроде..
Также прошу сильно не ругать... может и не везде правильно все описал... О html и php знаю только то, что это языки))))) Так что делал это просто вырывая куски кода из разных скриптов.
Стили подгоняйте сами.
И так приступим:
1. В файле pages/account/_payment.php меняем все на это:
Код:
<div class="s-bk-lf">
<div class="acc-title">Заказ выплаты</div>
</div>
<div class="silver-bk">
<BR />
<?PHP
$_OPTIMIZATION["title"] = " Заказ выплаты";
$usid = $_SESSION["user_id"];
$usname = $_SESSION["user"];

$db->Query("SELECT * FROM db_users_b WHERE id = '$usid' LIMIT 1");
$user_data = $db->FetchArray();

$db->Query("SELECT * FROM db_config WHERE id = '1' LIMIT 1");
$sonfig_site = $db->FetchArray();

$min_ser = $sonfig_site["min_pay"] * $sonfig_site["ser_per_wmr"];

$status_array = array( 0 => "В очереди", 1 => "Выплачен", 2 => "Отменен");

# Список платежек
if(!isset($_GET["pay_id"])){

if(isset($_POST["sys_pay"])){ Header("Location: /account/payment/".$_POST["sys_pay"]); return; }

$db->Query("SELECT * FROM db_pay_systems ORDER BY id DESC");

if($db->NumRows() == 0){ echo "<center>Сейчас выплачиваются старые заявки. Попробуйте позже!</center><BR /><div class='clr'></div></div> "; return; }

?>

<form action="" method="POST">
<center><font color="blue"><h4><p>Выплаты производятся в течении 1-24 часов с момента подачи заявки!</h></font><p></h></font><p>Мы выплачиваем только на кошельки ЭПС из списка ниже: <BR /><BR />
<select name="sys_pay">
<?PHP

while($data = $db->FetchArray()){

?><option value="<?=$data["id"]; ?>"><?=$data["title"]; ?></option><?PHP

}

?>
</select>
<BR /><BR />
<input type="submit" class="btn btn-success" value="Получить деньги" />
</center>
</form>
<div class="clr"></div>
</div>
<?PHP

return;
}else{

$pay_id = intval($_GET["pay_id"]);

$db->Query("SELECT * FROM db_pay_systems WHERE id = '$pay_id'");

if($db->NumRows() == 0){ echo "<center>Такой платежной системы нет в нашем проекте :(</center><BR /><div class='clr'></div></div>"; return; }

$pdata = $db->FetchArray();
$min_ser = $pdata["min_pay"] * $sonfig_site["ser_per_wmr"];
$ps = $pdata["title"];

# Создание заявки на выплату
if(isset($_POST["pp"])){

$purse = strval(trim($func->TextClean($_POST["pp"])));
$sum = intval($_POST["sum"]);

if( strlen($purse) > 5){

if( substr($purse, 0, 1) == $pdata["first_char"] ){

if($min_ser <= $sum){

if($sum <= $user_data["money_p"]){

# Проверяем на существующие заявки
$db->Query("SELECT COUNT(*) FROM db_paymentss WHERE user_id = '$usid' AND status = 0");
if($db->FetchRow() == 0){

# Снимаем с пользователя
$db->Query("UPDATE db_users_b SET money_p = money_p - '$sum' WHERE id = '$usid'");

# Вставляем запись в выплаты
$da = time();
$dd = $da + 60*60*24*15;
$sum_r = round($sum / $sonfig_site["ser_per_wmr"], 2);
$db->Query("INSERT INTO db_paymentss (user, user_id, purse, sum, serebro, pay_sys, date_add, date_del)
VALUES ('$usname','$usid','$purse','$sum_r','$sum','$ps','$da','$dd')");

echo "<center><div class='alert alert-success'><b>Ваша заявка отправлена в очередь на выполнение</b></div></center><BR />";

}else echo "<center><font color = 'red'><b>У вас имеются необработанные заявки. Дождитесь их выполнения.</b></font></center><BR />";

}else echo "<center><div class='alert alert-error'><b>Вы указали больше, чем имеется на вашем счету</b></div></center><BR />";

}else echo "<center><div class='alert alert-error'><b>Минимальная сумма для вывода {$min_ser} серебра</b></div></center><BR />";

}else echo "<center><div class='alert alert-error'><b>Кошелек должен начинаться с ".$pdata["first_char"]."</b></div></center><BR />";

}else echo "<center><div class='alert alert-error'><b>Кошелек заполнен не верно заполнен неверно</b></div></center><BR />";

}

?>

<form action="" method="post">
<table width="99%" border="0" align="center">

<?PHP
# Заглушка от халявщиков
if($user_data["insert_sum"] <= 9.99){

?><BR />
<center><font color="blue"><b>Выплату могут заказывать пользователи, которые пополнили баланс минимум на 10 RUB!<p> <b></font></center><BR />

<?PHP

return;
}

?>
<tr><center><font color = "">Выплаты производятся только в ручную</font></center>
<tr><h3><center><font color = "green">Внимание!!! Кошелк должен начинаться с P</font></center></h>
<tr>
<td><font color="#000;">Кошелек для получения денег</font> [ Пример<font color = "green"> <b>P12345678</font> ]</b><font color="#000;">:</font> </td>
<td><input type="text" name="pp" size="15"/></td>
</tr>
<tr>
<td><font color="#000;">Отдаете серебро для вывода</font> [Мин. <?=$min_ser; ?>]<font color="#000;">:</font> </td>
<td><input type="text" name="sum" id="sum" value="<?=$min_ser; ?>" size="15" onkeyup="PaymentSum();" /></td>
</tr>
<tr>
<td><font color="#000;">Получаете [Рублей]<span id="res_val"></span></font><font color="#000;">:</font> </td>
<td>
<input type="text" name="res" id="res_sum" value="0" size="15" disabled="disabled"/>
<input type="hidden" name="per" id="RUB" value="<?=$sonfig_site["ser_per_wmr"]; ?>" disabled="disabled"/>
<input type="hidden" name="per" id="min_sum_RUB" value="0.5" disabled="disabled"/>
<input type="hidden" name="val_type" id="val_type" value="RUB" />
  <tr>


</td>
</tr>
<tr>
<center><td colspan="2" align="center"><input type="submit" name="swap" value="Заказать выплату" class="btn btn-success" style="height: 30px; margin-top:10px;" /></td></center>
</tr>
</form>
<script language="javascript">PaymentSum();</script>

<?PHP } ?>

<table cellpadding='3' cellspacing='0' border='0' bordercolor='#336633' align='center' width="99%">


<tr>
<center><td colspan="5" align="center"><h4>Последние 10 выплат</h4></td></center>
</tr>
<tr>
<td align="center" class="m-tb">Серебро</td>
<td align="center" class="m-tb">Получаете</td>
<td align="center" class="m-tb">Кошелек</td>
<td align="center" class="m-tb">Дата</td>
<td align="center" class="m-tb">Статус</td>
</tr>
<?PHP

$db->Query("SELECT * FROM db_paymentss WHERE user_id = '$usid' ORDER BY id DESC LIMIT 10");

if($db->NumRows() > 0){

while($ref = $db->FetchArray()){

?>
<tr class="htt">
<td align="center"><?=$ref["serebro"]; ?></td>
<td align="center"><?=sprintf("%.2f",$ref["sum"]); ?> РУБ</td>
<td align="center"><?=$ref["purse"]; ?></td>
<td align="center"><?=date("d.m.Y",$ref["date_add"]); ?></td>
<td align="center"><?=$status_array[$ref["status"]]; ?></td>
</tr>
<?PHP

}

}else echo '<tr><td align="center" colspan="5">Нет записей</td></tr>'
?>

</table><div class="clr"></div>
</div>
Тут стоит заглушка на выплату... Выплаты доступны только пополневшим на 10 руб... Можно еще поставить, что бы кошелек из базы брался и менять его было бы нельзя... или еще какие нибудь ограничения... только давайте сами... мне пока не хочется)))

2. Далее идем в /pages/admin/_payments.php и меняем там все на это:
Код:
<div class="s-bk-lf">

</div>
<div class="silver-bk"><div class="clr"></div>  

</div><div class='clr'></div>

<div class="s-bk-lf">
    <div class="acc-title">Заказы ручных выплат</div>
</div>
<div class="silver-bk"><div class="clr"></div>  
<BR />
<?PHP


# Выплачено
if(isset($_POST["payment"])){

$ret_id = intval($_POST["payment"]);
$db->Query("SELECT * FROM db_paymentss WHERE status = '0' AND id = '{$ret_id}'");

    if($db->NumRows() == 1){
   
    $ret_data = $db->FetchArray();
   
    $user_id = $ret_data["user_id"];
    $sum = $ret_data["sum"];
    $serebro = $ret_data["serebro"];
       
        $db->Query("UPDATE db_users_b SET payment_sum = payment_sum + '$sum' WHERE id = '$user_id'");
        $db->Query("UPDATE db_paymentss SET status = '1' WHERE id = '$ret_id'");
        $db->Query("UPDATE db_stats SET all_payments = all_payments + '$sum' WHERE id = '1'");
       
       
        echo "<center><b>Выплачено, статистика обновлена</b></center><BR />";
       
    }else echo "<center><b>Заявка не найдена :(</b></center><BR />";

}

# Возврат
if(isset($_POST["return"])){

$ret_id = intval($_POST["return"]);
$db->Query("SELECT * FROM db_paymentss WHERE status = '0' AND id = '{$ret_id}'");

    if($db->NumRows() == 1){
   
    $ret_data = $db->FetchArray();
   
    $user_id = $ret_data["user_id"];
    $sum = $ret_data["sum"];
    $serebro = $ret_data["serebro"];
       
        $db->Query("UPDATE db_users_b SET money_p = money_p + '$serebro' WHERE id = '$user_id'");
        $db->Query("UPDATE db_paymentss SET status = '2' WHERE id = '$ret_id'");
       
        echo "<center><b>Заявка отменена, средства возвращены</b></center><BR />";
       
    }else echo "<center><b>Заявка не найдена :(</b></center><BR />";

}




$db->Query("SELECT * FROM db_paymentss WHERE status = '0'");
$ast = $db->NumRows();
if($ast > 0){

?>
<table cellpadding='3' cellspacing='0' border='0' bordercolor='#336633' align='center' width="99%">
  <tr bgcolor="#efefef">
    <td align="center" class="m-tb">Платежка</td>
    <td align="center" class="m-tb">Пользователь</td>
    <td align="center" width="0" class="m-tb"></td>
    <td align="center" width="200" class="m-tb">Сумма</td>
<td align="center" width="100" class="m-tb">Кошелек</td>
    <td align="center" width="50" class="m-tb">Вернуть</td>
    <td align="center" width="50" class="m-tb">Выплачено</td>
  </tr>

<?PHP

    while($data = $db->FetchArray()){
   
    ?>
    <tr class="htt">
    <td align="center"><?=$data["pay_sys"]; ?></td>
    <td align="center"><?=$data["user"]; ?></td>
        <td align="center"><?=$prof_data["email"]; ?></td>
    <td align="center"><?=sprintf("%.2f", $data["sum"]); ?> <?=$config->VAL; ?></td>
    <td align="center"><input type="text" value="<?=$data["purse"]; ?>" /></td>
      <td align="center">
   
        <form action="" method="post">
            <input type="hidden" name="return" value="<?=$data["id"]; ?>" />
            <input type="submit" value="Вернуть" />
        </form>
   
    </td>
    <td align="center">
   
        <form action="" method="post">
            <input type="hidden" name="payment" value="<?=$data["id"]; ?>" />
            <input type="submit" value="Выплачено" />
        </form>
   
    </td>
    </tr>
    <?PHP
   
    }

?>

</table>
<?PHP

}else echo "<center><b>Нет заявок для выплаты</b></center><BR />";

?>
</div>
<div class="clr"></div>
3. В корневом .htaccess после строки:
Код:
RewriteRule ^account/payment(/?)+$ index.php?menu=account&sel=payment [L]
добавить:
Код:
RewriteRule ^account/payment/([0-9]+)(/?)+$ index.php?menu=account&sel=payment&pay_id=$1 [L]
4. И остается только запросы в базу:
Код:
--
-- Table structure for table `db_pay_systems`
--

DROP TABLE IF EXISTS `db_pay_systems`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `db_pay_systems` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `first_char` varchar(3) NOT NULL,
  `comment` text NOT NULL,
  `min_pay` double NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=28 DEFAULT CHARSET=cp1251;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `db_pay_systems`
--

LOCK TABLES `db_pay_systems` WRITE;
/*!40000 ALTER TABLE `db_pay_systems` DISABLE KEYS */;
INSERT INTO `db_pay_systems` VALUES (26,'Payeer','P','Платежная система',1);
/*!40000 ALTER TABLE `db_pay_systems` ENABLE KEYS */;
UNLOCK TABLES;

--
-- Table structure for table `db_paymentss`
--

DROP TABLE IF EXISTS `db_paymentss`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `db_paymentss` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user` varchar(10) NOT NULL,
  `user_id` int(11) NOT NULL,
  `purse` varchar(20) NOT NULL,
  `sum` double NOT NULL DEFAULT '0',
  `comission` double NOT NULL DEFAULT '0',
  `valuta` varchar(3) NOT NULL DEFAULT 'RUB',
  `serebro` int(11) NOT NULL DEFAULT '0',
  `status` int(11) NOT NULL DEFAULT '0',
  `pay_sys` varchar(100) NOT NULL DEFAULT '0',
  `pay_sys_id` int(11) NOT NULL DEFAULT '0',
  `response` int(1) NOT NULL DEFAULT '0',
  `payment_id` int(11) NOT NULL,
  `date_add` int(11) NOT NULL DEFAULT '0',
  `date_del` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `db_paymentss`
--

LOCK TABLES `db_paymentss` WRITE;
/*!40000 ALTER TABLE `db_paymentss` DISABLE KEYS */;
/*!40000 ALTER TABLE `db_paymentss` ENABLE KEYS */;
UNLOCK TABLES;
У меня все вроде заработало... По крайней мере основные моменты... Не проверял как там с открытой статистикой... у меня ее не было на скрипте.
О и чуть не забыл:
5. В файле classes/_class.config.php удаляем это:
Код:
 public $AccountNumber = 'P11111111';
    public $apiId = '11111111';
    public $apiKey = '11111111';
Я думаю до ума до вести и под свой скрипт подогнать должен каждый сам)))))
Если что не так, я готов к жесткой критике.
 

Вложения

Последнее редактирование:

hunters

Участник
я вот не понимаю, зачем вообще нужен это выбор платеги тут, если речь идет о ручных выплатах на Payeer...
половина если не большая часть кода, занята совсем другим.
я вот про это
RewriteRule ^account/payment/([0-9]+)(/?)+$ index.php?menu=account&sel=payment&pay_id=$1 [L]



if($db->NumRows() == 0){ echo "<center>Такой платежной системы нет в нашем проекте :(</center><BR /><div class='clr'></div></div>"; return; }


это не в ваш камень огород) это во всех файлах присутствует)
зы: я так понял, что вы просто налепили снеговика, ничего своего не привнесли в код?*
 

pirat3.0

Местный
зы: я так понял, что вы просто налепили снеговика, ничего своего не привнесли в код?*
Так и было...
я вот не понимаю, зачем вообще нужен это выбор платеги тут, если речь идет о ручных выплатах на Payeer...
Просто добавляя строки в базу можно так же сделать выплаты на яндекс, киви, да и вообще на любые ЭПС
P.S Проще убрать что то лишнее, чем добавить что то новое (это для меня так))))))
 

pirat3.0

Местный
я вот не понимаю, зачем вообще нужен это выбор платеги тут, если речь идет о ручных выплатах на Payeer...
В корневом файле .htaccess вместо:
Код:
RewriteRule ^account/payment(/?)+$ index.php?menu=account&sel=payment
поставь это
Код:
RewriteRule ^account/payment(/?)+$ index.php?menu=account&sel=payment&pay_id=26 [L]
и не будет выбора платежек
 

hunters

Участник
Пользователь получил предупреждение за флуд
да спасибо, сейчас с ноутом засяду на балконе.. буду решать)
 

hunters

Участник
кстати за что отвечают запросы в бд ? знать бы еще что делаешь)
 

pirat3.0

Местный
кстати за что отвечают запросы в бд ?
Книжку надо найти... "mysql для чайников"))))
А так то в этих запросах вообще все почти по русски понятно.
  1. Создается база данных db_pay_systems в которой прописывается платежная система(нужна для выбора ЭПС, если их несколько), правило ввода кошелька payeer (что бы он с "P" начинался), комментарий (что бы был), и минимальная сумма для вывода.
  2. Создается база данных db_paymentss для сбора статистики, контроля и осуществления заявок и выплат.
 

hunters

Участник
значит можно пропустить самый первый запрос о создании новой таблицы для платежек...
так же я вырежу из кода первую страницу выплаты.. где выбираешь платегу... следовательно я не буду делать изменений в чтаксес файле
 

pirat3.0

Местный
значит можно пропустить самый первый запрос о создании новой таблицы для платежек...
так же я вырежу из кода первую страницу выплаты.. где выбираешь платегу... следовательно я не буду делать изменений в чтаксес файле
Я дал рабочий вариант, а как там ты его хочешь сломать - это дело твоё.)))
 

hunters

Участник
Пользователь получил предупреждение за оффтоп
спасибо ты помог мне... код работает) стили утром переправлю)
только знаешь, логотип перестал отображаться на этой странице
пишет :
Failed to load resource: the server responded with a status of 404 (Not Found)
 

jameson

Администратор
@pirat3.0 за самоотверженный труд и помощь нашим посетителям, тебя ждет денежное вознаграждение в нашей секретной социальной сети. Одна проблема, баланс есть, переводы есть, вывода нет. Но завтра он (вывод) точно будет :)
 
Верх