Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Автодонат для игр с помощью TradeMC

Июн
268
209
Редактор

Всем привет! Статья о том, как сделать нормальный рабочий автодонат на абсолютно любую игру​


Нам нужно:
• Аккаунт trademc.org c подтвержденным магазином
• База данных MySQL
• Рабочий сайт сервера

I. Настройки магазина TradeMC​

1765026191857.png

Выбираем "Добавить товар", затем ставим настройки, которые указаны ниже
1765026269682.png
Нажимаем "Сохранить"

II. Настройка сайта​

1. Переходим на TradeMC > Мои магазины, и копируем ключ магазина
1765026443527.png
2. Переходим на наш сайт (у меня это PHP + IspManager)
3. Создаем папку "pay", в ней пять файлов: forma.php, result.php, data.php, suc.php, fail.php
4. Теперь копируем код для каждого файла ниже, и заполняем недостающие данные

Информация о файлах:
• data.php - данные от базы данных
• result.php - сюда будет приходить информация о покупке
• forma.php - это для отправки информации об оплате
• suc.php - при успешной оплате
• fail.php - при неудачной оплате

data.php:
<?php
    $HOST = 'ХОСТ';
    $USERBD = 'ПОЛЬЗОВАТЕЛЬ';
    $PASSBD = 'ПАРОЛЬ';
    $NAMEBD = 'НАЗВАНИЕ ТАБЛИЦЫ';
?>

Нужно заменить:
• ID магазина - ID магазина на TradeMC
• ВАША_ССЫЛКА - Ссылка на ваш сайт

forma.php:
<?php
    $label = $_POST['label'];
    $amount = $_POST['summa'];
    $curl = curl_init("https://api.trademc.org/shop.getItems?shop=ID МАГАЗИНА");
    curl_setopt_array($curl, [
        CURLOPT_HTTPHEADER => ['Authorization: Basic lock', 'Accept: application/json'],
        CURLOPT_RETURNTRANSFER => true
    ]);

    $response1 = curl_exec($curl);
    if (curl_errno($curl) == 0) {
        $data1 = json_decode($response1, true);
    } else {
        $data1 = false;
    }
    curl_close($curl);

    $bId = strval($data1['response']['categories'][0]['items'][0]['id']);

    $curl = curl_init("https://api.trademc.org/shop.buyItems?items={$bId}:1&buyer={$label}&user_fields[{$bId}][amount]={$amount}&v=3");
    curl_setopt_array($curl, [
        CURLOPT_HTTPHEADER => ['Authorization: Basic lock', 'Accept: application/json'],
        CURLOPT_RETURNTRANSFER => true
    ]);

    $response = curl_exec($curl);
    if (curl_errno($curl) == 0) {
        $data = json_decode($response, true);
    } else {
        $data = false;
    }
    curl_close($curl);
    $urls = [
        "https://ВАША_ССЫЛКА/pay/suc.php",
        "https://ВАША_ССЫЛКА/pay/fail.php",
        "https://ВАША_ССЫЛКА/index.html"
    ];

    $payId = strval($data['response']['cart_id']);
    $link = "https://pay.trademc.org?cart_id={$payId}&success_url={$urls[0]}&pending_url={$urls[2]}&fail_url={$urls[1]}";
    header("Location: {$link}");
?>

Нужно заменить:
• $shop_key - токен магазина, копировали ранее
• SQL-запрос поменять на свой
• В $data['buyer'] - хранится никнейм игрока
• В $data['items'][0]['game_currency'] - хранится сумма, которую задонатил игрок

result.php:
<?php
    include 'data.php';
    $shop_key = 'ТОКЕН МАГАЗИНА, КОПИРОВАЛИ РАНЕЕ';

    $data = json_decode(file_get_contents('php://input'));
    $hash = $data->hash;
    unset($data->hash);
 
    if($hash == hash('sha256', json_encode($data) . $shop_key))
    {
        $data = json_decode(file_get_contents('php://input'), true);
        $connection = mysqli_connect($HOST, $USERBD, $PASSBD, $NAMEBD, 3306) or die(mysqli_error($connection));
     
        // ЗДЕСЬ ОБНОВЛЕНИЕ ИНФОРМАЦИИ О РУБЛЯХ, МЕНЯЙТЕ НА СВОЙ ЗАПРОС
        $updAccStmt = $connection->prepare("UPDATE `accounts` SET `pKassaRub` = `pKassaRub` + ? WHERE `Name` = ? ");
        $updAccStmt->bind_param("ds", $data['items'][0]['game_currency'], $data['buyer']);
        $updAccStmt->execute();
        $updAccStmt->close();
    }
 
    die('200');
?>

Заменить в конце "ВАША_ССЫЛКА" - на ваш сайт

suc.php:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Успешная оплата</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body {
            background-color: #28a745;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            color: white;
            font-family: Arial, sans-serif;
        }
        .container {
            text-align: center;
        }
        h1 {
            animation: fadeIn 2s ease-in-out;
            font-size: 60px;
        }
        p {
            margin-top: 20px;
            font-size: 20px;
        }
        button {
            margin-top: 30px;
            padding: 10px 20px;
            border-radius: 4px;
            background-color: #fff;
            color: #000;
            cursor: pointer;
            transition: all 0.3s;
        }
        button:hover {
            background-color: rgba(255, 255, 255, 0.7);
        }
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(-50px); }
            to { opacity: 1; transform: translateY(0); }
        }
    </style>
</head>
<body>
<div class="container">
    <h1>Оплата успешно прошла</h1>
    <p>Донат был зачислен на ваш аккаунт. Введите команду /donaterub на сервере.</p>
    <button onclick="window.location.href='http://ВАША_ССЫЛКА/index.html'" class="btn btn-primary">Вернуться на сайт</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js" integrity="sha384-oBqDVmMzZO0iTrkX4tvpjNzF5eTxghaPyEwOGlT58LwmmnaU3a/xs+fyJHGaLPff" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.min.js" integrity="sha384-mQ93GR66B00ZXjt0YO5KlohRA5SY2XofN4zfuZxLkoj1gXtW8ANNCe9d5Ym+eV2H" crossorigin="anonymous"></script>
</body>
</html>

Заменить в конце "ВАША_ССЫЛКА" - на ваш сайт

fail.php:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Успешная оплата</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body {
            background-color: #dc3545;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            color: white;
            font-family: Arial, sans-serif;
        }
        .container {
            text-align: center;
        }
        h1 {
            animation: fadeIn 2s ease-in-out;
            font-size: 60px;
        }
        p {
            margin-top: 20px;
            font-size: 20px;
        }
        button {
            margin-top: 30px;
            padding: 10px 20px;
            border-radius: 4px;
            background-color: #fff;
            color: #000;
            cursor: pointer;
            transition: all 0.3s;
        }
        button:hover {
            background-color: rgba(255, 255, 255, 0.7);
        }
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(-50px); }
            to { opacity: 1; transform: translateY(0); }
        }
    </style>
</head>
<body>
<div class="container">
    <h1>Оплата не прошла</h1>
    <p>Что-то пошло не так. Пожалуйста, попробуйте еще раз.</p>
    <button onclick="window.location.href='http://ВАША_ССЫЛКА/index.html'" class="btn btn-primary">Вернуться на сайт</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.6/dist/umd/popper.min.js" integrity="sha384-oBqDVmMzZO0iTrkX4tvpjNzF5eTxghaPyEwOGlT58LwmmnaU3a/xs+fyJHGaLPff" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.min.js" integrity="sha384-mQ93GR66B00ZXjt0YO5KlohRA5SY2XofN4zfuZxLkoj1gXtW8ANNCe9d5Ym+eV2H" crossorigin="anonymous"></script>
</body>
</html>

III. Создание формы на сайте​

Важно:
• Подключить CSS-стили
• Заменить "ВАША_ССЫЛКА" на ссылку на ваш сайт

Код формы:
<form method="POST" action="./pay/forma.php" class="donate-form">
    <input type="hidden" name="successURL" value="https://ВАША_ССЫЛКА/pay/suc.php">

    <div class="input-wrapper">
        <input type="text" class="donate-input input-nickname" placeholder="Ваш никнейм" name="label">
    </div>

    <div class="input-wrapper">
        <input type="number" class="donate-input input-wallet" placeholder="Сумма пополнения" name="summa" min="10" data-type="number">
    </div>

    <button type="submit" name="create" class="donate-button gradient-button">Пополнить</button>
</form>

Всё! Удачи в настройке!​

 
Июн
268
209
Редактор
Статью редактировала нейросеть
Говнокодеры, в атаку!
 
Окт
12
0
Пользователь
Можешь пожалуйста помочь,

$updAccStmt = $connection->prepare("UPDATE `accounts` SET `rub` = `rub` + ? WHERE `name` = ? ");
$updAccStmt->bind_param("ds", $data['items'][0]['game_currency'], $data['buyer']);


Донат хранится в строке rub, ник в name а аккаунты в accounts, оплачиваю счет, но донат в игре не поступает, какие данные не правильные?
 
Июн
268
209
Редактор
Можешь пожалуйста помочь,

$updAccStmt = $connection->prepare("UPDATE `accounts` SET `rub` = `rub` + ? WHERE `name` = ? ");
$updAccStmt->bind_param("ds", $data['items'][0]['game_currency'], $data['buyer']);


Донат хранится в строке rub, ник в name а аккаунты в accounts, оплачиваю счет, но донат в игре не поступает, какие данные не правильные?
Тут разные варианты могут быть, либо данные от БД неверные, либо указал что-то криво
 
never stress
Дек
617
439
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
OFFTOP

попробую данный гайд, через час дам оценку этому тутору

 
never stress
Дек
617
439
Заблокированный
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки. Мы не несем ответственности за действия пользователя вне форума.
как фиксить эту ошибку?

Ошибка​

Указанный cart_id не найден.​

 
Сверху