Добавлен новый модуль Кто-где
1.
Вантуз-мен 30.06.2025 / 22:25
Новый модуль можно самостоятельно установить на движок rotor, доступно с версии 12.5
https://github.com/visavi/rotor-modules/tree/master/UserLocation
Модуль отслеживает все перемещения авторизованных пользователей и записывает текущую страницу
Дополнительно для безопасности исключает некоторые параметры в get
Действия админа внутри /admin не отслеживается
Для работы модуля было добавлено создание middleware из модулей
Все наши модули
https://github.com/visavi/rotor-modules/tree/master
2.
Absurd 01.07.2025 / 05:56
Вантуз-мен, круто! А как установить и прописать в нужных местах чтобы всё работало для нубов?
3.
Вантуз-мен 01.07.2025 / 11:03
Пока никак не поставишь, 12.5 нужно для этого модуля, выпущу на днях
4.
Absurd 01.07.2025 / 11:09
Вантуз-мен, а остальные модули типа подарков будут работать?
5.
Вантуз-мен 01.07.2025 / 11:22
Да, все остальные будут, скачивай, ставь в папку modules и активируй в админке
6.
Артур 01.07.2025 / 13:25
Братци покажите свои проекты на роторе
7.
Absurd 01.07.2025 / 16:40
Вантуз-мен, после активации нужно будет коды прописать для вывода в нужном месте?
8.
Вантуз-мен 01.07.2025 / 16:56
Absurd, да нужно, но я могу через хук прописать где удобнее, наверно в футере пропишу тогда в @footerColumnMiddle
9.
Absurd 01.07.2025 / 16:58
Вантуз-мен, было бы здорово!
10.
Артур 02.07.2025 / 11:37
Вантуз-мен, все пользователи могут смотреть или админ?
11.
Вантуз-мен 02.07.2025 / 13:05
Артур, Все пользователи, с помощью хука ссылка размещается в футере, доступна для всех
12.
Absurd 03.07.2025 / 18:35
Вантуз-мен, а сможешь в хуках прописать ссылку на модуль игры и развлечения, чтобы ссылка появлялась после активации модуля в админке?
13.
Вантуз-мен 04.07.2025 / 00:20
Absurd, добавил
14.
Артур 05.07.2025 / 06:09
Absurd, какой игры?
15.
Absurd 05.07.2025 / 06:18
Артур, игры и развлечения
https://github.com/visavi/rotor-modules/tree/master/Game
16.
Артур 05.07.2025 / 14:14
Absurd, а есть пример игры???
17.
Андрей 05.07.2025 / 18:06
Кайф. Видимо пора обновляться..
18.
Absurd 05.07.2025 / 18:15
Артур, поставь модуль и увидишь
19.
Николай 15.12.2025 / 20:01
Доброго времени суток ребят. Поставил ваш модуль взятый с Githab модуль платежей через юкасса. Пишет ошибку.
При изменении кода в /modules/Payment/Services/YooKassaService.php
на этот
<?php
declare(strict_types=1);
namespace Modules\Payment\Services;
use Illuminate\Http\Client\ConnectionException;
use Illuminate\Http\Client\RequestException;
use Illuminate\Http\Client\Response; // Убедитесь, что этот импорт есть
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Modules\Payment\Models\Order;
use RuntimeException;
class YooKassaService
{
private string $shopId;
private string $secretKey;
private string $apiUrl;
private string $currency;
public function __construct()
{
$this->apiUrl = config('payment.yookassa_api_url');
$this->shopId = config('payment.yookassa_shop_id');
$this->secretKey = config('payment.yookassa_secret_key');
$this->currency = config('payment.yookassa_currency');
// *** ВАЖНОЕ ДОБАВЛЕНИЕ ДЛЯ СТАРЫХ СЕРВЕРОВ ***
// Fix for the "Undefined constant CURL_SSLVERSION_TLSv1_2" error
if (!defined('CURL_SSLVERSION_TLSv1_2')) {
define('CURL_SSLVERSION_TLSv1_2', 6);
}
}
/**
* Создание платежа
*/
public function createPayment(Order $order): array
{
$url = $this->apiUrl . '/payments';
$idempotenceKey = uniqid('', true);
при нажатии кнопку оплатить пишет
20.
Николай 15.12.2025 / 20:02
<?php
declare(strict_types=1);
namespace Modules\Payment\Services;
use Illuminate\Http\Client\ConnectionException;
use Illuminate\Http\Client\RequestException;
use Illuminate\Http\Client\Response; // Убедитесь, что этот импорт есть
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
use Modules\Payment\Models\Order;
use RuntimeException;
class YooKassaService
{
private string $shopId;
private string $secretKey;
private string $apiUrl;
private string $currency;
public function __construct()
{
$this->apiUrl = config('payment.yookassa_api_url');
$this->shopId = config('payment.yookassa_shop_id');
$this->secretKey = config('payment.yookassa_secret_key');
$this->currency = config('payment.yookassa_currency');
// *** ВАЖНОЕ ДОБАВЛЕНИЕ ДЛЯ СТАРЫХ СЕРВЕРОВ ***
// Fix for the "Undefined constant CURL_SSLVERSION_TLSv1_2" error
if (!defined('CURL_SSLVERSION_TLSv1_2')) {
define('CURL_SSLVERSION_TLSv1_2', 6);
}
}
/**
* Создание платежа
*/
public function createPayment(Order $order): array
{
$url = $this->apiUrl . '/payments';
$idempotenceKey = uniqid('', true);
// Формирование данных (часть, которую вы не показали, но она должна быть тут)
$data = [
/* ... данные заказа, как в предыдущем ответе ... */
];
try {
$response = Http::withBasicAuth($this->shopId, $this->secretKey)
->retry(3, 100)
->withHeaders([
'Idempotence-Key' => $idempotenceKey,
'Content-Type' => 'application/json',
])
->post($url, $data)
->throw();
return $this->handleResponse($response);
} catch (ConnectionException $e) {
Log::error('YooKassa connection failed', [
'error' => $e->getMessage(),
'url' => $url,
]);
throw new RuntimeException('Не удалось подключиться к YooKassa');
} catch (RequestException $e) {
// Используем оператор объединения с null (??) для безопасного доступа к json()
$error = $e->response?->json() ?? $e->getMessage();
Log::critical('YooKassa API error', [
'error' => $error,
]);
throw new RuntimeException('Ошибка API YooKassa');
}
}
/**
* Проверка статуса платежа
*/
public function getPaymentInfo(string $paymentId): array
{
$url = $this->apiUrl . '/payments/' . $paymentId;
try {
$response = Http::withBasicAuth($this->shopId, $this->secretKey)
->retry(3, 100)
->withHeaders([
'Content-Type' => 'application/json',
])
->get($url)
->throw();
return $this->handleResponse($response);
} catch (ConnectionException $e) {
Log::error('YooKassa connection failed', [
'payment_id' => $paymentId,
'error' => $e->getMessage(),
'url' => $url,
]);
throw new RuntimeException('Не удалось подключиться к API YooKassa');
} catch (RequestException $e) {
$error = $e->response?->json() ?? $e->getMessage();
Log::critical('YooKassa API error', [
'payment_id' => $paymentId,
'error' => $error,
]);
throw new RuntimeException('Ошибка API YooKassa');
}
}
/**
* Обработка ответа
*
* @param Response $response Laravel HTTP Response object
* @return array Decoded JSON response data
*/
private function handleResponse(Response $response): array
{
// Поскольку вы используете ->throw() в вызывающих методах,
// сюда попадают ТОЛЬКО успешные ответы (status 2xx).
// Дополнительная проверка $response->successful() избыточна,
// но безопасна.
if ($response->successful()) {
return $response->json();
}
// Эта часть кода не будет достигнута при использовании ->throw(),
// но остается как хороший запасной вариант:
Log::error('YooKassa API Error (unhandled)', [
'status' => $response->status(),
'error' => $response->json('description'),
]);
throw new RuntimeException('Ошибка API YooKassa');
}
}
21.
Вантуз-мен 15.12.2025 / 20:39
Николай, guzzle прослойка curl, в зависимостях Laravel, требует протокол 1.2
Даже если как-то обойти эту проблему, то скорее всего на стороне юкассы будет ошибка
Одним словом обнови libcurl
Или повысь версию php, возможно там уже посвежее curl
22.
Вантуз-мен 15.12.2025 / 20:58
Ошибка с tls скорее всего глубже, закомментируй try catch или посмотри в логах что там за ошибка
в storage/logs/laravel.log
23.
Николай 18.12.2025 / 20:18
Вантуз-мен, Все спасибо исправил с помощью ИИ Google так же с ним еще добавил несколько вариантов платежей для сайта
24.
Manerov 20.12.2025 / 18:12
Николай, он сам код напишет?
25.
ramzes 22.12.2025 / 12:33
Manerov, если правильно попросишь то он тебе и скрипт и программу полноценную напишет
26.
Николай 29.12.2025 / 18:21
Manerov, Да именно так. Ну у него есть лимит. попробуй Qwen Chat бесплатный и удобный. Создаешь проект и работаешь
URL:
https://visavi.net/topics/44950