xakmika
Местный
Привет ребят. У меня не работает автовыплата, а ручной нету
_class.rfs_payeer.php
_payments.php
Ошибку выдаёт эту
Не удалось выплатить!3
_class.rfs_payeer.php
PHP:
<?php
class rfs_payeer
{
private $url = 'https://payeer.com/ajax/api/api.php';
private $agent = 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0';
private $auth = array();
private $output;
private $errors;
/*======================================================================*\
Function: __construct
Descriiption: Выполняется при создании экземпляра класса
\*======================================================================*/
public function __construct($account, $apiId, $apiPass)
{
$arr = array(
'account' => $account,
'apiId' => $apiId,
'apiPass' => $apiPass,
);
$response = $this->getResponse($arr);
if ($response['auth_error'] == '0')
{
$this->auth = $arr;
}
}
/*======================================================================*\
Function: PaySystemData
Descriiption: Проверяет аудентификацию
\*======================================================================*/
public function PaySystemData($SystemId)
{
if (empty($this->auth)) return false;
$response = $this->getPaySystems();
if($response["auth_error"] == 0){
if(isset($response["list"][$SystemId])){
return $response["list"][$SystemId];
}else return false;
}else return false;
}
/*======================================================================*\
Function: isAuth
Descriiption: Проверяет аудентификацию
\*======================================================================*/
public function isAuth()
{
if (!empty($this->auth)) return true;
return false;
}
/*======================================================================*\
Function: getResponse
Descriiption: Получение ответа от сервера
\*======================================================================*/
private function getResponse($arPost)
{
if (!function_exists('curl_init'))
{
die('curl library not installed');
return false;
}
if ($this->isAuth())
{
$arPost = array_merge($arPost, $this->auth);
}
$data = array();
foreach ($arPost as $k => $v)
{
$data[] = urlencode($k) . '=' . urlencode($v);
}
$data = implode('&', $data);
$handler = curl_init();
curl_setopt($handler, CURLOPT_URL, $this->url);
curl_setopt($handler, CURLOPT_HEADER, 0);
curl_setopt($handler, CURLOPT_POST, true);
curl_setopt($handler, CURLOPT_POSTFIELDS, $data);
curl_setopt($handler, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($handler, CURLOPT_USERAGENT, $this->agent);
curl_setopt($handler, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($handler);
curl_close($handler);
$content = $this->objectToArray(json_decode($content));
return $content;
}
/*======================================================================*\
Function: objectToArray
Descriiption: Перевод обьекта в массив
\*======================================================================*/
private function objectToArray($ob)
{
$arr = array();
foreach ($ob as $k => $v)
{
if (is_object($v))
{
$arr[$k] = $this->objectToArray($v);
}
else
{
$arr[$k] = $v;
}
}
return $arr;
}
/*======================================================================*\
Function: getPaySystems
Descriiption: Получение платежной системы
\*======================================================================*/
public function getPaySystems()
{
$arPost = array(
'action' => 'getPaySystems',
);
$response = $this->getResponse($arPost);
return $response;
}
/*======================================================================*\
Function: initOutput
Descriiption: Инициализация данных на выплату
\*======================================================================*/
public function initOutput($arr)
{
$arPost = $arr;
$arPost['action'] = 'initOutput';
$response = $this->getResponse($arPost);
if (empty($response['errors']))
{
$this->output = $arr;
return true;
}
else
{
$this->errors = $response['errors'];
}
return false;
}
/*======================================================================*\
Function: output
Descriiption: Выплата
\*======================================================================*/
public function output()
{
$arPost = $this->output;
$arPost['action'] = 'output';
$response = $this->getResponse($arPost);
if (empty($response['errors']))
{
return $response['historyId'];
}
else
{
$this->errors = $response['errors'];
}
return false;
}
/*======================================================================*\
Function: getHistoryInfo
Descriiption: Получение истории
\*======================================================================*/
public function getHistoryInfo($historyId)
{
$arPost = array(
'action' => 'historyInfo',
'historyId' => $historyId
);
$response = $this->getResponse($arPost);
return $response;
}
/*======================================================================*\
Function: getBalance
Descriiption: Получение баланса
\*======================================================================*/
public function getBalance()
{
$arPost = array(
'action' => 'balance',
);
$response = $this->getResponse($arPost);
return $response;
}
/*======================================================================*\
Function: getErrors
Descriiption: Возвращает ошибку
\*======================================================================*/
public function getErrors()
{
return $this->errors;
}
/*======================================================================*\
Function: transfer
Descriiption: Никуя не вникал что это за метод...
\*======================================================================*/
public function transfer($arPost)
{
$arPost['action'] = 'transfer';
$response = $this->getResponse($arPost);
return $response;
}
}
?>
PHP:
<div class="page-header">
<h1>Список выплат</h1>
</div>
<center><a href="index.php?menu=payments">Выплачено</a> || <a href="index.php?menu=payments&balance">Баланс на Payeer</a> ||
<a href="index.php?menu=payments&list_day">По дням</a> || <a href="index.php?menu=payments&last_31">График за 30 дней</a></center><BR />
<?PHP
if(isset($_POST["back"])){
$db->Query("SELECT id,serebro,user_id FROM db_payment WHERE id='".intval($_POST[back])."'");
$data = $db->FetchArray();
$db->Query("UPDATE db_users_b SET money_p = money_p + '$data[serebro]' WHERE id = '$data[user_id]'");
$db->Query("UPDATE db_payment SET status = '2' WHERE id = '$data[id]'");
echo "<center><font color = 'green'><b>Возвращено</b></font></center><BR />";
}
if(isset($_POST["ok"])){
$db->Query("SELECT * FROM db_payment WHERE id='".intval($_POST[ok])."'");
$data = $db->FetchArray();
$sum_pay=$data[sum];
$pp=$data[pp];
$purse=$data[purse];
### Делаем выплату ###
$payeer = new rfs_payeer($config->AccountNumber, $config->apiId, $config->apiKey);
if ($payeer->isAuth())
{
$arBalance = $payeer->getBalance();
if($arBalance["auth_error"] == 0)
{
$balance = $arBalance["balance"]["RUB"]["DOSTUPNO"];
$lb=$balance-$sum_pay;
if($lb>$limit){
if($pp=='Qiwi'){
$smp=$sum_pay/100*5;
if($smp<0){ $smp=0;}
$sum_pay=($sum_pay)-($smp);
}elseif($pp!='Payeer'){
$sum_pay=($sum_pay)-($sum_pay/100*5);}
if($pp=='Qiwi'){$tip=26808; }
if($pp=='Yandex'){$tip=57378077; }
if($pp=='Mts'){$tip=24899291; }
if($pp=='megafon'){$tip=24899391; }
//киви яндекс вебмани
if($pp=='Qiwi' or $pp=='Yandex' or $pp=='Webmoney' or $pp=='Mts' or $pp=='megafon'){
// инициализация вывода
$initOutput = $payeer->initOutput(array(
// id платежной системы полученный из списка платежных систем
'ps' => $tip,
//'sumIn' => 1,
// счет, с которого будет списаны средства
'curIn' => 'RUB',
// сумма вывода
'sumOut' => $sum_pay,
// валюта вывода
'curOut' => 'RUB',
'param_F_PHONE' => $phone,
// Аккаунт получателя платежа
'param_ACCOUNT_NUMBER' => $purse
));
if ($initOutput)
{
// Вывод средств
$historyId = $payeer->output();
if ($historyId)
{
$db->Query("UPDATE db_payment SET status = '3' WHERE id = '$data[id]'");
$db->Query("UPDATE db_users_b SET payment_sum = payment_sum + '$sum_pay' WHERE id = '$data[user_id]'");
$db->Query("UPDATE db_stats SET all_payments = all_payments + '$sum_pay' WHERE id = '1'");
echo "<center><font color = 'green'><b>Выплачено!</b></font></center><BR />";
}
else
{
$erma=$payeer->getErrors();
foreach ($erma as $value) {
echo "<center><font color = 'red'><b>".iconv('UTF-8','windows-1251',$value)."</b></font></center><BR />";
}
}
}
else
{
$erma=$payeer->getErrors();
foreach ($erma as $value) {
echo "<center><font color = 'red'><b>".iconv('UTF-8','windows-1251',$value)."</b></font></center><BR />";
}
} }else{
//пеер
$arTransfer = $payeer->transfer(array(
'curIn' => 'RUB', // счет списания
'sum' => $sum_pay, // сумма получения
'curOut' => 'RUB', // валюта получения
'to' => $purse, // получатель (email)
'comment' => iconv('utf-8', 'utf-8', "Выплата пользователю ".$data[user]." с проекта Miners-Game")
));
if (!empty($arTransfer["historyId"]))
{
$db->Query("UPDATE db_payment SET status = '3' WHERE id = '$data[id]'");
$db->Query("UPDATE db_users_b SET payment_sum = payment_sum + '$sum_pay' WHERE id = '$data[user_id]'");
$db->Query("UPDATE db_stats SET all_payments = all_payments + '$sum_pay' WHERE id = '1'");
echo "<center><font color = 'green'><b>Выплачено!</b></font></center><BR />";
}
else
{
echo "<center><font color = 'red'><b>".$arTransfer["errors"][0]."</b></font></center><BR />";
}
}
}else echo "<center><font color = 'red'><b>Не удалось выплатить!1</b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Не удалось выплатить!2 </b></font></center><BR />";
}else echo "<center><font color = 'red'><b>Не удалось выплатить!3 </b></font></center><BR />";
}
$db->Query("SELECT * FROM db_payment WHERE status=0 ORDER BY id DESC LIMIT 20");
if($db->NumRows() > 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" width="75" class="m-tb">кошелек</td>
<td align="center" width="75" class="m-tb">сумма</td>
<td align="center" width="150" class="m-tb">Дата</td>
<td align="center" width="150" class="m-tb">Действие</td>
</tr>
<?PHP
while($data = $db->FetchArray()){
?>
<tr class="htt">
<td align="center"><?=$data["user"]; ?></td>
<td align="center" width="75"><?=$data["purse"]; ?></td>
<td align="center" width="75"><?=$data["sum"]; ?> руб</td>
<td align="center" width="150"><?=date("d.m.Y в H:i:s",$data["date_add"]); ?></td>
<td align="center" width="150"><br><form action="" method="post"><input type="text" name="back" value="<?=$data["id"]; ?>" hidden /><input type="submit" name="clean" value="Вернуть" /></form>
<form action="" method="post"><input type="text" name="ok" value="<?=$data["id"]; ?>" hidden /><input type="submit" name="clean" value="Выплатить" /></form></td>
</tr>
<?PHP
}
?>
</table>
<BR />
<?PHP
}else echo "<center><b>Записей нет</b></center><BR />";
?></br>
<?PHP
# График
if(isset($_GET["last_31"])){
$dlim = time() - 60*60*24*30;
$db->Query("SELECT * FROM db_payment WHERE date_add > $dlim ORDER BY id DESC");
$days_money = array();
$days_insert = array();
if($db->NumRows() > 0){
while($data = $db->FetchArray()){
$index = date("d.m.Y", $data["date_add"]);
$days_money[$index] = (isset($days_money[$index])) ? $days_money[$index] + $data["sum"] : $data["sum"];
$days_insert[$index] = (isset($days_insert[$index])) ? $days_insert[$index] + 1 : 1;
}
# Вывод
if(count($days_money) > 0){
$array_for_chart = array();
$array_for_chart2 = array();
$array_for_chart3 = array();
foreach($days_money as $date => $sum){
$array_for_chart[] = "['".$date."', ".round($sum)."]";
$array_for_chart2[] = "['".$date."', ".$days_insert[$date]."]";
$array_for_chart3[] = "['".$date."', ".round($sum / $days_insert[$date], 2)."]";
}
$retd = implode(", ", array_reverse($array_for_chart));
$retd2 = implode(", ", array_reverse($array_for_chart2));
$retd3 = implode(", ", array_reverse($array_for_chart3));
?>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['День', 'Сумма'],
<?=$retd; ?>
]);
var options = {
title: 'История Выплат (Сумма)',
hAxis: {title: 'Last 30 Days', titleTextStyle: {color: 'green'}}
};
var chart = new google.visualization.SteppedAreaChart(document.getElementById('chart_div'));
chart.draw(data, options);
}
</script>
<div id="chart_div" style="width: 100%; height: 500px;"></div>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart2);
function drawChart2() {
var data2 = google.visualization.arrayToDataTable([
['День', 'Кол-во'],
<?=$retd2; ?>
]);
var options2 = {
title: 'История Выплат (Кол-во)',
hAxis: {title: 'Last 30 Days', titleTextStyle: {color: 'green'}}
};
var chart2 = new google.visualization.SteppedAreaChart(document.getElementById('chart_div2'));
chart2.draw(data2, options2);
}
</script>
<div id="chart_div2" style="width: 100%; height: 500px;"></div>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart3);
function drawChart3() {
var data3 = google.visualization.arrayToDataTable([
['День', 'Сумма'],
<?=$retd3; ?>
]);
var options3 = {
title: 'AVG (Сумма / Кол-во)',
hAxis: {title: 'Last 30 Days', titleTextStyle: {color: 'green'}}
};
var chart3 = new google.visualization.SteppedAreaChart(document.getElementById('chart_div3'));
chart3.draw(data3, options3);
}
</script>
<div id="chart_div3" style="width: 100%; height: 500px;"></div>
<?PHP
}
}else echo "<center><b>Записей нет</b></center><BR />";
?>
<?PHP
return;
}
# Вывод статистики по дням
if(isset($_GET["list_day"])){
$db->Query("SELECT * FROM db_payment ORDER BY id DESC");
$days_money = array();
$days_insert = array();
if($db->NumRows() > 0){
while($data = $db->FetchArray()){
$index = date("d.m.Y", $data["date_add"]);
$days_money[$index] = (isset($days_money[$index])) ? $days_money[$index] + $data["sum"] : $data["sum"];
$days_insert[$index] = (isset($days_insert[$index])) ? $days_insert[$index] + 1 : 1;
}
# Вывод
if(count($days_money) > 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" class="m-tb">На сумму</td>
<td align="center" class="m-tb">AVG</td>
</tr>
<?PHP
$array_for_chart = array();
foreach($days_money as $date => $sum){
?>
<tr class="htt">
<td align="center"><b><?=$date; ?></b></td>
<td align="center"><?=$days_insert[$date]; ?> шт.</td>
<td align="center"><?=$sum; ?> RUB</td>
<td align="center"><?=round($sum/$days_insert[$date],2); ?> RUB</td>
</tr>
<?PHP
}
?>
</table>
<?PHP
}
}else echo "<center><b>Записей нет</b></center><BR />";
?>
<?PHP
return;
}
# Проверка баланса Payeer
if(isset($_GET["balance"])){
$payeer = new rfs_payeer($config->AccountNumber, $config->apiId, $config->apiKey);
if ($payeer->isAuth())
{
$arBalance = $payeer->getBalance();
$balancer = $arBalance["balance"]["RUB"]["DOSTUPNO"];
$balancee = $arBalance["balance"]["EUR"]["DOSTUPNO"];
$balanceu = $arBalance["balance"]["USD"]["DOSTUPNO"];
echo "<pre>".print_r($balancer, true)." RUB</pre>";
echo "<pre>".print_r($balancee, true)." EUR</pre>";
echo "<pre>".print_r($balanceu, true)." USD</pre>";
}else echo "not_settings";
?>
<?PHP
return;
}
$num_p = (isset($_GET["page"]) AND intval($_GET["page"]) < 1000 AND intval($_GET["page"]) >= 1) ? (intval($_GET["page"]) -1) : 0;
$lim = $num_p * 100;
$db->Query("SELECT * FROM db_payment ORDER BY id DESC LIMIT {$lim}, 100");
function colorSum($sum){
if($sum >= 100) return "red";
return "#000000";
}
if($db->NumRows() > 0){
?>
<table cellpadding='3' cellspacing='0' border='0' bordercolor='#336633' align='center' width="99%">
<tr bgcolor="#efefef">
<td align="center" width="50" class="m-tb">User</td>
<td align="center" width="50" class="m-tb">Serebro</td>
<td align="center" width="50" class="m-tb">Money</td>
<td align="center" width="50" class="m-tb">Purse</td>
<td align="center" width="50" class="m-tb">Date</td>
</tr>
<?PHP
while($data = $db->FetchArray()){
?>
<tr class="htt">
<td align="center"><a href="index.php?menu=users&edit=<?=$data["user_id"]; ?>" class="stn"><?=$data["user"]; ?></a></td>
<td align="center"><?=$data["serebro"]; ?></td>
<td align="center"><font color="<?=colorSum($data["sum"]); ?>"><?=sprintf("%.2f",$data["sum"]); ?> <?=$data["valuta"]; ?></font></td>
<td align="center"><?=$data["purse"]; ?></td>
<td align="center"><?=date("d.m H:i:s",$data["date_add"]); ?></td>
</tr>
<?PHP
}
?>
</table>
<BR />
<?PHP
}else echo "<center><b>На данной странице нет записей</b></center><BR />";
$db->Query("SELECT COUNT(*) FROM db_payment");
$all_pages = $db->FetchRow();
if($all_pages > 100){
$sort_b = (isset($_GET["sort"])) ? intval($_GET["sort"]) : 0;
$nav = new navigator;
$page = (isset($_GET["page"]) AND intval($_GET["page"]) < 1000 AND intval($_GET["page"]) >= 1) ? (intval($_GET["page"])) : 1;
echo "<BR /><center>".$nav->Navigation(10, $page, ceil($all_pages / 100), "index.php?menu=payments&page="), "</center>";
}
?>
Не удалось выплатить!3