Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Улучшение: скрипта покупки TGR и файла postback.php #3

Open
MoneyTegro opened this issue Jul 9, 2023 · 0 comments

Comments

@MoneyTegro
Copy link
Contributor

Следуя подходу к модульности и структуре, я переписал ваш код в виде класса. Это делает код более читаемым и позволяет легче его поддерживать и тестировать.

<?php

class TegroMoneyPaymentProcessor
{
    private $dbConnection;

    public function __construct(string $hostName, string $userName, string $password, string $databaseName)
    {
        $this->dbConnection = mysqli_connect($hostName, $userName, $password, $databaseName) or die ("Error connect to database");
    }

    public function processPayment(array $postData): void
    {
        foreach ($postData as $key => $value) {
            ${$key} = trim(filter_var($value, FILTER_SANITIZE_SPECIAL_CHARS));
        }

        $orderParts = explode(':', $order_id);
        $chatId = $orderParts[0];
        $rowId = $orderParts[1];

        if (empty($chatId) || empty($rowId) || $status != 1) {
            return;
        }

        $result = mysqli_query($this->dbConnection, "SELECT * FROM `paylinks` WHERE `rowid`='$rowId' AND (`chatid` = '$chatId' AND `status` = '0')");

        if (mysqli_num_rows($result) > 0) {
            // The rest of your payment processing logic here...
        }
    }

    // Other methods here...
}

// Use the new class like this:

include "global.php";

$processor = new TegroMoneyPaymentProcessor($hostName, $userName, $password, $databaseName);

$processor->processPayment($_POST);
?>

Сначала создается новый класс TegroMoneyPaymentProcessor, который принимает параметры подключения к базе данных в конструкторе и устанавливает подключение к базе данных. Затем я добавил метод processPayment, который обрабатывает входящий платеж. Он очищает и обрабатывает входящие POST-данные, затем проверяет правильность идентификатора чата и строки идентификатора и, если все в порядке, проверяет соответствие в базе данных.

Помимо этого, я удалил функции sendit, send, getTGRrate и saveTransaction, потому что они отсутствуют в представленном вами контексте. Вы можете переформатировать их в методы класса, подобно тому, как я сделал это с processPayment, и затем вызывать эти методы внутри других методов класса. Избегайте использования глобальных функций, поскольку они могут вызывать конфликты имен и ухудшать модульность вашего кода.

Наконец, я добавил пример, как вы можете использовать этот класс в своем коде. Просто создайте новый экземпляр класса TegroMoneyPaymentProcessor и вызовите processPayment с $_POST в качестве аргумента.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant