Ну что ж. Раз тут никто не откликнулся пришлось на другом ресурсе просить. Создали мне парсинг с ЛК Энергосбыт. Сейчас получаю все необходимую инфу: задолженность, переданные последние показания, последняя оплата и возможность передачи показаний. Выкладываю код. Может кому пригодится.
Код: Выделить всё
echo '<!DOCTYPE html><html lang="ru"><head><meta charset="utf-8"/></head><body><br>';
// Авторизуемся
$header = [
'Accept: application/json',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'Authorization: null null',
'Content-Type: application/json;charset=utf-8',
'Referer: https://lkm.esplus.ru/auth/'
];
$post_data = [
'login' => $username,
'password' => $password,
'branch_code' => $locat,
'device_type' => $web,
'login_type' => $login
];
$post_data = json_encode($post_data);
$page = getData('https://lkm.esplus.ru/api/v1/auth/login', $header, $post_data);
$json = json_decode($page);
// Токен
if (empty($json->content->access_token)) {
die('ОШИБКА: Не найден токен!');
}
$es_token = $json->content->access_token;
// ЛК
$header = [
'Accept: application/json',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'Authorization: Bearer ' . $es_token,
'Referer: https://lkm.esplus.ru/'
];
$page = getData('https://lkm.esplus.ru/api/v1/object/list', $header);
$json = json_decode($page);
// Баланс
if (!isset($json->content->objects[0]->accounts[0]->balance)) {
die('ОШИБКА: Не найдены данные ЛК!');
}
$es_balance = $json->content->objects[0]->accounts[0]->balance;
$es_account_id = $json->content->objects[0]->accounts[0]->id;
$from = date('m.Y', strtotime('-6 month'));
$to = date('m.Y');
echo "<strong>Баланс:</strong> $es_balance<br><br>\r\n";
// История платежей
echo "<strong>История платежей</strong><br>\r\n";
$page = getData(
"https://lkm.esplus.ru/api/v1/statistics/payments?account_id=$es_account_id&period_from=$from&period_to=$to&limit=5&offset=0&branch_code=ekb&user_type=individual",
$header
);
$json = json_decode($page);
if (!isset($json->content->payments)) {
die('ОШИБКА: Не найдена история платежей!');
}
$table = '<table>';
foreach ($json->content->payments as $payment) {
if (empty($data_pay)) {
$last_pay = $payment->amount;
}
$table .= '<tr><td>' . $payment->created_at . '</td><td>' . ($payment->accepted === true ? 'Принят' : 'Не принят') . '</td><td>' . $payment->amount . '</td></tr>';
}
$table .= '</table><br>';
echo $table;
// История показаний
echo "<strong>История показаний</strong><br>\r\n";
$page = getData(
"https://lkm.esplus.ru/api/v1/statistics/meters?account_id=$es_account_id&period_from=$from&period_to=$to&limit=5&offset=0",
$header
);
$json = json_decode($page);
if (!isset($json->content->services)) {
die('ОШИБКА: Не найдена история показаний!');
}
$es_t1 = $es_t2 = '';
$table = '<table>';
foreach ($json->content->services as $data) {
if (empty($es_t1)) {
$es_t1 = $data->data->t1;
$es_t2 = $data->data->t2;
}
$table .= '<tr><td>' . $data->date . '</td><td>День (Т1): ' . $data->data->t1 . '<br>Ночь (T2): ' . $data->data->t2 . '</td></tr>';
}
$table .= '</table><br>';
echo $table;
echo '</body></html>';
// Функция CURL-запроса
function getData($url, $header = false, $post_data = false)
{
global $dir;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2);
curl_setopt($ch, CURLOPT_HEADER, 0);
if ($header) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
if ($post_data) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt(
$ch,
CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0'
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$ret = curl_exec($ch);
usleep(300000);
return $ret;
}
Сейчас работа ведется по личным кабинетам: Мотив, МегаФон (сотовая связь), Газэкс.