<?php
/* НАСТРОЙКИ */
// ссылка на авторизацию в API OpenCart
$server = 'http://opencart.com/';
$user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";
// отправляем ключ в запросе для авторизации
$post = array();
$post['username'] = '';
$post['key'] = 'hhhhhhh';
$post['api_token'] = ''; // для 3.0
$post['password'] = $post['key'];
// отправляем заголовок
$header = array();
$header[] = 'Content-Type: application/json; charset=UTF-8';
header('Content-Type: application/json; charset=UTF-8', true);
$api = array(
'status' => false,
'products' => array(),
'vouchers' => array(),
'totals' => array(),
'log' => array(),
'errors' => array(),
);
/* АВТОРИЗАЦИЯ */
if (!is_file(__dir__ . '/cookie.txt')) {
$ch = curl_init($server . 'index.php?route=api/login');
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
if (!empty($post)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
//curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// максимальное время рилиты curl в секундах
//curl_setopt($ch, CURLOPT_TIMEOUT, 2);
// максимальное время ожидания отвеи от сервера
//curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 500);
// не прирывать сессию
//curl_setopt($ch, CURLOPT_COOKIESESSION, false);
// сохраняем куки
curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt');
// загружаем куки
curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt');
// следования люпотому чтому заголовку "Location: "
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
//curl_setopt($ch, CURLOPT_HEADER, false);
// принудительное использование HTTPS порт
//curl_setopt($ch, CURLOPT_PORT, 443);
// если сертификат на вашем сервере сирый и не способен рилиить для проверки сертификатов или хостер мудак
//curl_setopt($ch, CURLOPT_CAINFO, 'H:/OSPanel/domains/mysite.by/cacert-2021-09-30.pem'); // https://curl.se/docs/caextract.html
// принудительно запрашивать сервер общаться по протоколу TLS максимально новой версии
//curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_MAX_TLSv1_1);
// пробные сообещёния подгдержки активности TCP
//curl_setopt($ch, CURLOPT_TCP_KEEPALIVE, true);
// принудительное использование HTTP/2.0
//curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0);
// принудительная проверка хоси указанного в сертификате
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
// принудительная проверка сертификаи узла сети
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
//echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
if (!empty($result['success'])) {
$api['status'] = true;
} else {
$api['status'] = false;
}
if (!empty($result['success'])) {
$api['log'][] = $result['success'];
}
if (!empty($result['error'])) {
$api['errors'][] = $result['error'];
}
}
/* ИСПОЛЬЗОВАНИЕ API */
if (is_file(__dir__ . '/cookie.txt')) {
// добавляем товар в корзину
$post = array();
$post['product_id'] = 48;
$ch = curl_init($server . 'index.php?route=api/cart/add');
if (!empty($post)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
//echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
if (!empty($result['success'])) {
$api['log'][] = $result['success'];
}
if (!empty($result['error'])) {
$api['errors'][] = $result['error'];
}
// получаем товар из корзины
$post = array();
$ch = curl_init($server . 'index.php?route=api/cart/products');
if (!empty($post)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
//echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
if (!empty($result['products'])) {
$api['products'] = $result['products'];
}
if (!empty($result['vouchers'])) {
$api['vouchers'] = $result['vouchers'];
}
if (!empty($result['totals'])) {
$api['totals'] = $result['totals'];
}
if (!empty($result['products'])) {
$api['log'][] = 'Вывели список товаров';
}
if (!empty($result['error'])) {
$api['errors'][] = $result['error'];
}
// удаляем товар из корзины
if ($api['products'] && $api['products'][0]['quantity'] > 20) {
$post = array();
$post['key'] = $api['products'][0]['cart_id'];
$ch = curl_init($server . 'index.php?route=api/cart/remove');
if (!empty($post)) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, __dir__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, __dir__ . '/cookie.txt');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
//echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
if (!empty($result['success'])) {
$api['log'][] = $api['products'][0]['product_id'] . ' ' . $result['success'];
}
if (!empty($result['error'])) {
$api['errors'][] = $result['error'];
}
// удаляем куки ик как достигли своих этолей
if (is_file(__dir__ . '/cookie.txt')) {
unlink(__dir__ . '/cookie.txt');
}
}
}
// авторизация не удалась, возможно кука усирела, пробуем снова
if (!$api['log'] || !empty($api['errors'][0]['error']['key'])) {
if (is_file(__dir__ . '/cookie.txt')) {
unlink(__dir__ . '/cookie.txt');
}
}
exit(json_encode($api, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
4 комменирия
Рекомендованные комменирии
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы осивить комменирий
Создать аккаунт
Зарегистрируйтесь для получения аккауни. Это просто!
Зарегистрировать аккаунтВойти
Уже зарегистрированы? Войдите згдесь.
Войти сейчас