|
|
Инструкция по кассеБаза и обработка платежей через MySQL и PHP. |
16.09.2025 в 15:41 3 |
| Keks423 | 16.09.2025 в 10:58#1 | ||
|
Сообщений: 88
Реакции: 28
Клиенты
|
Шаг 1: Подготовка базы данных ((:
Для корректной работы необходимо создать таблицу для хранения информации о платежах. Подключитесь к вашей базе данных MySQL и выполните следующий SQL-запрос, чтобы создать таблицу payments:
CREATE TABLE `payments` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `idpay` VARCHAR(255) NOT NULL, `userdata` TEXT NOT NULL, `sum` DECIMAL(10, 2) NOT NULL, `ps` VARCHAR(50) NOT NULL, `status` VARCHAR(50) NOT NULL, `timestamp` DATETIME NOT NULL, `processed` BOOLEAN NOT NULL DEFAULT 0, PRIMARY KEY (`id`), UNIQUE KEY `idpay` (`idpay`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;Эта таблица будет хранить уникальный идентификатор платежа, данные пользователя, сумму, статус и отметку времени. Шаг 2: Настройка скриптов Откройте каждый файл в текстовом редакторе и внесите свои данные. Файл: generate_payment_data.php Этот скрипт генерирует данные для платежа и возвращает их в формате JSON. Замените 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ', 'ВАШ_ID_КАССЫ', а также данные для подключения к базе данных. Убедитесь, что в строке if (isset($_SESSION['steamid64'])) указан правильный ключ для идентификации пользователя в вашей системе.
// Файл: generate_payment_data.php
// Этот скрипт генерирует данные для платежа (idpay, sign) и возвращает их в JSON.
session_start();
header('Content-Type: application/json');
// --- НАСТРОЙКИ ---
// ЗАПОЛНИТЕ ЭТИ ДАННЫЕ ВАШИМИ ЗНАЧЕНИЯМИ
define('CSHOST_SECRET_KEY', 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ');
define('CSHOST_IDCASSA', 'ВАШ_ID_КАССЫ');
define('LOG_FILE_GENERATE', __DIR__ . '/cshost_generate.log');
// --- НАСТРОЙКИ БАЗЫ ДАННЫХ ---
// ЗАПОЛНИТЕ ЭТИ ДАННЫЕ ВАШИМИ ЗНАЧЕНИЯМИ
define('DB_HOST', 'ХОСТ_БД');
define('DB_USER', 'ПОЛЬЗОВАТЕЛЬ_БД');
define('DB_PASS', 'ПАРОЛЬ_БД');
define('DB_NAME', 'ИМЯ_БД');
// --- УНИФИЦИРОВАННАЯ ФУНКЦИЯ ДЛЯ ЛОГИРОВАНИЯ ---
function log_generate($message) {
file_put_contents(LOG_FILE_GENERATE, date('[Y-m-d H:i:s] ') . $message . "\n", FILE_APPEND);
}
// --- ФУНКЦИЯ ГЕНЕРАЦИИ ПОДПИСИ ---
function getFormSignature($userdata, $idcassa, $idpay, $secretkey) {
$hashStr = $userdata . '|' . $idcassa . '|' . $idpay . '|' . $secretkey;
return hash('sha256', $hashStr);
}
// Проверка, что запрос пришел методом GET и содержит необходимые параметры
if ($_SERVER['REQUEST_METHOD'] !== 'GET' || !isset($_GET['sum']) || !isset($_GET['vip_type'])) {
http_response_code(400); // Bad Request
echo json_encode(['error' => 'Invalid request.']);
exit();
}
// Получаем данные из URL-запроса
$sum = htmlspecialchars($_GET['sum']);
$vip_type = htmlspecialchars($_GET['vip_type']);
// Здесь вы должны получить уникальный идентификатор пользователя.
if (isset($_SESSION['steamid64'])) {
$userdata = $_SESSION['steamid64'];
} else {
echo json_encode(['error' => 'User not authenticated.']);
exit();
}
// Генерируем уникальный ID платежа
$idpay = CSHOST_IDCASSA . time() . rand(100, 999);
// Сохраняем информацию о платеже в базе данных со статусом 'pending'
$mysqli_gen = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($mysqli_gen->connect_error) {
echo json_encode(['error' => 'Database connection failed.']);
exit();
}
$mysqli_gen->set_charset("utf8mb4");
$stmt_insert_pending = $mysqli_gen->prepare(
"INSERT INTO payments (idpay, userdata, sum, ps, status, timestamp)
VALUES (?, ?, ?, ?, ?, NOW())
ON DUPLICATE KEY UPDATE
userdata = VALUES(userdata),
sum = VALUES(sum),
ps = VALUES(ps),
status = VALUES(status),
timestamp = NOW()"
);
if ($stmt_insert_pending) {
$status_text_pending = 'pending';
$ps_type = 'cs_pay';
$stmt_insert_pending->bind_param("ssdss", $idpay, $userdata, $sum, $ps_type, $status_text_pending);
$stmt_insert_pending->execute();
$stmt_insert_pending->close();
log_generate("Платеж сохранен со статусом 'pending'. IDPay: {$idpay}");
} else {
log_generate("ОШИБКА ПОДГОТОВКИ SQL ЗАПРОСА: " . $mysqli_gen->error);
echo json_encode(['error' => 'Ошибка подготовки запроса сохранения платежа.']);
exit();
}
$mysqli_gen->close();
// --- ГЕНЕРАЦИЯ ПОДПИСИ (SIGNATURE) ---
$sign = getFormSignature($userdata, CSHOST_IDCASSA, $idpay, CSHOST_SECRET_KEY);
// Возвращаем данные для формы в формате JSON
$response_data = [
'idcassa' => CSHOST_IDCASSA,
'idpay' => $idpay,
'sum' => $sum,
'sign' => $sign,
'userdata' => $userdata
];
echo json_encode($response_data);
?>
Файл: processing.php
После того как вы настроили генератор платежей, скачайте и настройте следующий скрипт. Этот скрипт является URL-адресом для обратного вызова (Callback URL), который будет обрабатывать уведомления от CSHOST. Обязательно замените 'ВАШ_СЕКРЕТНЫЙ_КЛЮЧ' и данные для подключения к базе данных. |
||
| Ответить Цитата |
| Keks423 | 16.09.2025 в 18:37#3 |
|
Сообщений: 88
Реакции: 28
Клиенты
|
root, Для веб-dev мануал настройка приёма платежа кс хост cassa сендает post-реквест на сервер к скрипту proccessing.пхп Эт после того как юзер успешно оплатил товар.
|
| Ответить Цитата |