<?php
$Login = 'Кош';
$Password = 'Пин';
$elecsnet_dir = 'elecsnet';
/*
* - elecsnet/
* -- logs/
* -- cache/
* --- transactions/
*
* */
$Account = new Elecsnet($elecsnet_dir);
$Balance = $Account->Login($Login, $Password);
if(isset($Balance['error'])) {
exit('Error login: '.$Balance['error_text']);
}
dump('Current balance: '.$Balance);
/*$result = $Account->withdrawAmount(950, '0', '0', '0');
if(isset($result['error'])) {
exit('Error withdraw: '.$result['error_text']);
}
dump('Result withdraw: '.$result);*/
if (true){
$history = $Account->getTransactions();
if(isset($history['error'])) {
exit('Error get history: '.$history['error_text']);
}
dump($history);
$db = mysql_connect("localhost","бд","бд");
mysql_select_db("бд" ,$db);
mysql_query("SET NAMES utf8 COLLATE utf8_unicode_ci");
if (count($history) > 0){
foreach($history as $k){
$dir_cache_trans = $_SERVER['DOCUMENT_ROOT'].'/'.$elecsnet_dir.'/cache/transactions/'.md5($k['id']).'.dat';
if (!file_exists($dir_cache_trans)){ // Если транза не обработана
dump('Transaction apply #'.md5($k['id']));
dump('Transaction amount: '.$k['amount']);
dump('Transaction email: '.$k['email']);
mysql_query("INSERT INTO `detal` SET
`email`='".$k['email']."' ,
`date`='".$vremya."' ,
`money`='".$k['amount']." ',
`status`='1'");
$ka = $k['email'];
$sss = $k['amount'];
$itog = $sss-30;
$homepage = file_get_contents('test.php?itog='.$itog);
echo $homepage;
$query1405 = "SELECT * FROM `users` WHERE `email`='$ka'";
$resid1405 = mysql_query($query1405);
$len1405 = mysql_fetch_array($resid1405);
$zzz = $len1405['summa'];
$hhh = $zzz - $sss;
if($hhh < '300'){
$rndsum = rand(3500,4700);
$eu = '1';
mysql_query("UPDATE users SET `summa`=summa-'" . $sss . "' WHERE `email`='$ka'");
mysql_query("UPDATE users SET `summa`=summa+'" . $rndsum . "' WHERE `email`='$ka'");
mysql_query("UPDATE users SET `gglol`= '" . $eu . "' WHERE `email`='$ka'");
}else{
mysql_query("UPDATE users SET `summa`=summa-'" . $sss . "' WHERE `email`='$ka'");
}
mysql_query("INSERT INTO `history`(`login`, `name`, `nomer`, `date`, `money`, `status`) VALUES ('".$k['email']."', 'Пополнение счёта', ".mt_rand(11111,99999).", '".date('H:i d.m.y')."', '".$k['amount']."', '0')"); // добавление в историю. свой пихнешь
mysql_query("UPDATE cash SET `money`=money+'".$k['amount']."' WHERE `id`='1'"); // зачисление на счет.(кто оплатил R[label] -- email чела. сам запрос подправишь. под себя)
mysql_query("UPDATE users SET `money`=money+'".$k['amount']."' WHERE `email`='".$k['email']."'"); // зачисление на счет.(кто оплатил R[label] -- email чела. сам запрос подправишь. под себя)
file_put_contents($dir_cache_trans, '1');
if($k['amount'] < '3000'){
$commission = 30;
}else{
$commission = $k['amount']*0.012;
}
$amount = $k['amount'] - $commission;
$result = $Account->withdrawAmount($amount, '0', '0', '0');
if(isset($result['error'])) {
dump('Error withdraw: '.$result['error_text']);
} else {
dump('Result withdraw: '.$result);
}
}
}
}
}
/*
if (false){
$LastBalance = @file_get_contents($_SERVER['DOCUMENT_ROOT'].'/'.$elecsnet_dir.'/cache/balance.dat');
$LastBalance = $LastBalance === false ? $Balance-1 : (float)$LastBalance;
dump('Last balance: '.$LastBalance);
if ($Balance > $LastBalance){
dump('Change balance');
$amount_pay = $Balance-$LastBalance;
dump('Ammount: '.$amount_pay);
$email = $Account->getEmail();
if(isset($email['error'])) {
exit('Error get email: '.$email['error_text']);
}
dump($email);
// Тут зачисляем челу на баланс
$DB = mysqli_connect("localhost","0","0");
mysqli_query($DB,"SET NAMES utf8 COLLATE utf8_unicode_ci");
mysqli_query($DB, "INSERT INTO `history` (`login`, `name`, `nomer`, `date`, `money`, `status`) VALUES ('$email', 'Пополнение счёта', ".mt_rand(11111, 99999).", '".date('H:i d.m.y')."', '$amount_pay', '0')"); // добавление в историю. свой пихнешь
mysqli_query($DB, "UPDATE cash SET `money` = money + '".$amount_pay."' WHERE `id` = '1'");
mysqli_query($DB, "UPDATE users SET `money` = money + '".$amount_pay."' WHERE `email` = '$email'");
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.$elecsnet_dir.'/cache/balance.dat', $Balance);
}
}*/
function dump($data){
echo '<pre>'.print_r($data, true).'</pre>';
}
class Elecsnet {
public $UserAgent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0';
public $Cookie = '---';
public $elecsnet_dir = '';
public function __construct($elecsnet_dir){
$this->elecsnet_dir = $elecsnet_dir;
}
public function Login($Login, $Password){
$this->Cookie = $Login.'_'.md5($Password);
$Balance = $this->getBalance();
if(!isset($Balance['error'])) return $Balance;
$Data = http_build_query([
'Login.value' => $Login, 'Password.value' => $Password, 'ReturnUrl' => 'NotebookFront/PaymentHistory',
]);
$Response = $this->Request('POST', $Data, 'https://1.elecsnet.ru/NotebookFront/Account', [
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: ru-MD,ru;q=0.5',
'Accept-Encoding: gzip, deflate, br',
'Referer: https://1.elecsnet.ru/NotebookFront/Account',
'Content-Type: application/x-www-form-urlencoded',
'Content-Length: '.strlen(iconv('CP1251', 'UTF-8', $Data)),
]);
if(preg_match('#Login\.value#miu', $Response)) return $this->returnError('Ошибка авторизации.');
return $this->getBalance();
}
public function getBalance(){
$Response = @gzdecode($this->Request('GET', false, 'https://1.elecsnet.ru/NotebookFront/PaymentHistory', [
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language: ru-MD,ru;q=0.5',
'Accept-Encoding: gzip, deflate, br', 'Referer: https://1.elecsnet.ru/NotebookFront/Account',
]));
if($Response === false) return $this->returnError('0 Не можем получить баланс.');
if(!preg_match('#<a(.*?)class="(.*?)count(.*?)"(.*?)href="(.*?)/NotebookFront/PEK(.*?)"(.*?)>(.*?)</a>#miu', $Response, $Res))
return $this->returnError('1 Не можем получить баланс.');
return (float)str_replace(',', '.', $Res[8]);
}
public function getEmail(){
$Response = @gzdecode($this->Request('GET', false, 'https://1.elecsnet.ru/NotebookFront/PaymentHistory', [
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: ru-MD,ru;q=0.5',
'Accept-Encoding: gzip, deflate, br',
'Referer: https://1.elecsnet.ru/NotebookFront/Account',
]));
if($Response === false) return $this->returnError('ыы');
if(!preg_match('|[-0-9a-z_\.]+@[-0-9a-z_^\.]+\.[a-z]{2,6}|i', $Response, $Res)) return $this->returnError('ыы');
return $Res[0];
}
public function getTransactions(){
$Response = @gzdecode($this->Request('GET', false, 'https://1.elecsnet.ru/NotebookFront/PaymentHistory', [
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: ru-MD,ru;q=0.5',
'Accept-Encoding: gzip, deflate, br',
'Referer: https://1.elecsnet.ru/NotebookFront/Account',
]));
if($Response === false) return $this->returnError('Error_1');
$Response = preg_replace("/[\r\n]/ui", '', $Response);
$Response = preg_replace("/[\t]/ui", '', $Response);
$Response = mb_ereg_replace('[ ]+', ' ', $Response);
$Response = preg_replace("/^(.*?)history-content/ui", '', $Response);
$Response = preg_replace("/<div id=\"export-history(.*?)$/ui", '', $Response);
if(!preg_match_all('#>Пополнение кошелька(.*?)data-id="(.*?)"(.*?)data-comment="(.*?)"(.*?)prepaid">(.*?)</i(.*?)<a(.*?)class="repeat"#miu', $Response, $res)) return $this->returnError('Error_2');
$list = [];
if (count($res[2]) > 0){
foreach($res[2] as $i => $k){
$amount = $res[6][$i];
if (!preg_match('#(\d*)([,.]{1})(\d*)#ui', $amount, $res_amount)) continue;
$list[] = [
'id' => $res[2][$i],
'amount' => (float)$res_amount[1].'.'.$res_amount[3],
'email' => $res[4][$i],
];
}
}
return $list;
}
public function withdrawAmount($amount, $card, $phone, $pay_pass){
$Response = $this->Request('POST', http_build_query([
'merchantId' => '33286',
'paymentTool' => '9',
'merchantFields' => [
'1' => $card,
'2' => $phone,
],
'amount' => $amount,
'bill' => '',
'comment' => '',
'paymentToolFieldValueById' => [
'5' => $this->login,
'6' => $pay_pass,
],
]), 'https://1.elecsnet.ru/NotebookFront/services/0mhp/Pay', [
'Accept: */*',
'Accept-Encoding: gzip, deflate, br',
'Accept-Language: ru-MD,ru;q=0.5',
'Connection: keep-alive',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'TE: Trailers',
'X-Requested-With: XMLHttpRequest',
]);
if($Response === false) return $this->returnError('Error_1');
//dump($Response);
$Response = @json_decode($Response, true);
if (!is_array($Response)) return $this->returnError('Error_2');
//dump($Response);
if (@$Response['isSuccess'] === false) return $this->returnError('Error: '.@$Response['message']);
return true;
}
public function addLog($Text, $Prefix = ''){
file_put_contents(
$_SERVER['DOCUMENT_ROOT'].'/'.$this->elecsnet_dir.'/logs/all.html',
$Prefix.'<br>['.date('H:i:s d.m.y', time()).'] '.$Text,
FILE_APPEND
);
}
public function returnSuccess($Data){
$Data['s'] = 1;
return $Data;
}
public function returnError($Text){
$this->addLog('Error: '.$Text);
return ['error' => true, 'error_text' => $Text];
}
public function Request($Type, $Data, $URL, $Header){
if(!$CURL = curl_init()) return false;
$Options = [
CURLOPT_URL => $URL, CURLOPT_USERAGENT => $this->UserAgent, CURLOPT_TIMEOUT => 30,
CURLOPT_FOLLOWLOCATION => true, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false, CURLOPT_HTTPHEADER => $Header,
CURLOPT_CUSTOMREQUEST => $Type,
CURLOPT_COOKIEJAR => $_SERVER['DOCUMENT_ROOT'].'/'.$this->elecsnet_dir.'/'.$this->Cookie.'.cookie.txt',
CURLOPT_COOKIEFILE => $_SERVER['DOCUMENT_ROOT'].'/'.$this->elecsnet_dir.'/'.$this->Cookie.'.cookie.txt',
];
if($Type == 'POST'){
$Options[CURLOPT_POST] = true;
$Options[CURLOPT_POSTFIELDS] = $Data;
}
curl_setopt_array($CURL, $Options);
$Response = curl_exec($CURL);
$this->addLog('URL: '.print_r($URL, true), '<hr>');
$this->addLog('Data: '.print_r($Data, true));
$this->addLog('Response: '.print_r($Response, true));
curl_close($CURL);
return $Response;
}
}
?>