Перейти к содержанию
Авторизация  
eruchus12

Настрока free-kassa (не реклама)

Рекомендуемые сообщения

Ребят, прошу Вас помощи, у кого стоит платежеприемник free-kassa помогите в настройке (у меня lucera). Платежи принимает, коннект с базой есть (проверен), деньги приходят. В игре монету не выдает, помогите куда лезть в скрипте, что надо править и т.п. Или если есть предположения какие-либо, пишите, полазию, попробую

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможнр дело даже не в скрипте. А в сборке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможнр дело даже не в скрипте. А в сборке.

Под сборку думаю есть варианты переделать, я думаю где-то надо править запрос sql, но нигде в скрипте его найти не могу. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Под сборку думаю есть варианты переделать, я думаю где-то надо править запрос sql, но нигде в скрипте его найти не могу. 

Его нужно искать не в скрипте. А в базе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Его нужно искать не в скрипте. А в базе.

Кого искать в базе? база сама себе должна выдавать призы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кого искать в базе? база сама себе должна выдавать призы?

:fool:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:fool:

Запрос добавить итем в базу же скрипт выдает иль нет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тема актуальна. Проблема та же, не выдает бонусов в игре. Скрипт настроен под таблицу character_items, в моем случае при входе в нее выдает надпись отсутствия "primary key" (понимаю это так: таблица никуда не привязана и не имеет связей). Попробовал настроить выдачу в таблицу Items, но тоже не выдает. Логи никуда не пишутся, поэтому и ошибку посмотреть не удается. Помогите кто как исправляет эти дела, бонусы в игре не выдаются, старт скоро, мучаюсь, куда лезть и что делать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скрипт нужно под структуру базы люцеры переписывать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скрипт нужно под структуру базы люцеры переписывать

помогите мне, какую часть скрипта нужно переписывать под мою таблицу. Хочу сделать выдачу в таблицу items, там все данные о том что в инвентаре у персонажей.

<?php
 
include_once 'ConfigWritter.php';
 
class Model
{
    private $mysqli;
 
    static function getInstance()
    {
        return new self();
    }
 
    private function __construct()
    {
        $config = ConfigWritter::getInstance();
 
        $dbhost = $config->getParameter('DB_HOST');
        $dbname = $config->getParameter('DB_NAME');
        $dbpass = $config->getParameter('DB_PASS');
        $dbuser = $config->getParameter('DB_USER');
 
        if (empty($dbhost) || empty($dbname) || empty($dbuser)) {
            throw new Exception('Не установлены конфигурационные параметры для соединения с БД');
        }
 
        $this->mysqli = @@New mysqli (
            $dbhost, $dbuser, $dbpass, $dbname
        );
        $this->mysqli->query("SET NAMES 'utf8'");
 
        /* проверка подключения */
        if (mysqli_connect_errno()) {
            throw new Exception('Не получается соединиться с БД, проверьте правильность параметров. Ошибка: ' . mysqli_connect_error());
        }
    }
 
    function searchItemTableName()
    {
        $type = null;
        if(mysqli_query($this->mysqli, 'select 1 from items_delayed') !== FALSE) {
            $type = 'items_delayed';
        } else if(mysqli_query($this->mysqli, 'select 1 from `character_items`') !== FALSE) {
            $type = 'character_items';
        } else if(mysqli_query($this->mysqli, 'select 1 from `items`') !== FALSE) {
            $type = 'items';
        }
 
        return $type;
    }
    function searchCharsTableName()
    {
        if(mysqli_query($this->mysqli, 'select 1 from `characters`') !== FALSE) {
            return 'characters';
        }
 
        return false;
    }
 
    function getChar($charName)
    {
        $query = '
                SELECT * FROM
                    characters
                WHERE
                    char_name = "'.$this->mysqli->real_escape_string($charName).'"
                LIMIT 1
            ';
 
        $result = $this->mysqli->query($query);
 
        if (!$result->num_rows) {
            //result
        }
 
        return $result->fetch_object();
 
    }
 
    function addItemToChar($charId, $itemId, $itemsCount = 1)
    {
        $itemTable = ConfigWritter::getInstance()->getParameter('ITEM_TABLE');
        switch ($itemTable) {
            case 'items_delayed':
                $result = $this->mysqli->query("SELECT max(payment_id) as maxId FROM items_delayed");
                $maxId = $result->fetch_object();
                $maxId = $maxId->maxId;
 
                return
                    $this->mysqli->query("INSERT INTO `items_delayed` (`payment_id`, `owner_id`, `item_id`, `count`, `payment_status`, `description`)
                        VALUES ('".($maxId+1)."', '".$charId."', '".$itemId."', '".$itemsCount."', '0', 'Freekassa')");
                break;
 
            case 'character_items':
                $query = '
                INSERT INTO
                    character_items (owner_id, item_id, count, enchant_level)
                VALUES
                    (
                        "'.$this->mysqli->real_escape_string($charId).'",
                        "'.$this->mysqli->real_escape_string($itemId).'",
                        "'.$this->mysqli->real_escape_string($itemsCount).'",
                        0
                    )
                ';
 
                return $this->mysqli->query($query);
                break;
 
            case 'items_external':
                $query = '
                INSERT INTO
                    items_external (owner_id, item_id, count, enchant, message, description, issued)
                VALUES
                    (
                        "'.$this->mysqli->real_escape_string($charId).'",
                        "'.$this->mysqli->real_escape_string($itemId).'",
                        "'.$this->mysqli->real_escape_string($itemsCount).'",
                        0,
"Благодарим за поддержку проекта! Бонус выдан",
"Freekassa",
0
                    )
                ';
 
                return $this->mysqli->query($query);
                break;
 
            case 'items':
            default:
 
                $query = '
                        SELECT * FROM
                            items
                        WHERE
                            item_id = "'.$this->mysqli->real_escape_string($itemId).'" and
                            owner_id = "'.$this->mysqli->real_escape_string($charId).'"
                        LIMIT 1
                    ';
                $item = $this->mysqli->query($query)->fetch_object();
 
                // Если предмет у персонажа есть, то наращиваем его
                if ($item && $item->count) {
                    $query = '
                    UPDATE
                        items
                    SET
                        count = "'.($item->count + $itemsCount).'"
                    WHERE
                        object_id = "'.$item->object_id.'"';
                // В противном случае создаем новый в его инвентаре
                } else {
                    $result = $this->mysqli->query("SELECT max(object_id) as maxId FROM items");
                    $maxId = $result->fetch_object();
                    $maxId = $maxId->maxId;
 
                    $query = '
                    INSERT INTO
                        items (object_id, owner_id, item_id, count, enchant_level, loc)
                    VALUES
                        (
                            "'.($maxId+1).'",
                            "'.$this->mysqli->real_escape_string($charId).'",
                            "'.$this->mysqli->real_escape_string($itemId).'",
                            "'.$this->mysqli->real_escape_string($itemsCount).'",
                            0,
                            "INVENTORY"
                        )
                    ';
                }
 
                return $this->mysqli->query($query);
 
        }
    }
 
    function removeItemFromChar($charId, $itemId, $itemsCount = 1)
    {
        $itemTable = ConfigWritter::getInstance()->getParameter('ITEM_TABLE');
        switch ($itemTable) {
            case 'items_delayed':
                    $sql = "
                        DELETE FROM
                          items_delayed
                        WHERE
                          owner_id = ".$this->mysqli->real_escape_string($charId)." AND
                          item_id = ".$this->mysqli->real_escape_string($itemId)." AND
                          count = ".$this->mysqli->real_escape_string($itemsCount)."
                        LIMIT 1
                    ";
 
                return $this->mysqli->query($sql);
                break;
 
            case 'character_items':
                    $sql = "
                        DELETE FROM
                          character_items
                        WHERE
                          owner_id = ".$this->mysqli->real_escape_string($charId)." AND
                          item_id = ".$this->mysqli->real_escape_string($itemId)." AND
                          count = ".$this->mysqli->real_escape_string($itemsCount)."
                        LIMIT 1
                    ";
 
                    return $this->mysqli->query($sql);
                break;
 
            case 'items_external':
                $sql = "
                        DELETE FROM
                          items_external
                        WHERE
                          owner_id = ".$this->mysqli->real_escape_string($charId)." AND
                          item_id = ".$this->mysqli->real_escape_string($itemId)." AND
                          count = ".$this->mysqli->real_escape_string($itemsCount)."
                        LIMIT 1
                    ";
 
                return $this->mysqli->query($sql);
                break;
 
            case 'items':
            default:
                $sql = '
                    SELECT * FROM
                        items
                    WHERE
                        item_id = "'.$this->mysqli->real_escape_string($itemId).'" and
                        owner_id = "'.$this->mysqli->real_escape_string($charId).'"
                    LIMIT 1
                ';
 
                $item = $this->mysqli->query($sql)
                    ->fetch_object();
 
                if ($item && $item->count)
                {
                    $query = '
                        UPDATE
                            items
                        SET
                            count = "'.($item->count - $itemsCount).'"
                        WHERE
                            object_id = "'.$item->object_id.'"';
 
                        return $this->mysqli->query($query);
                }
 
                return;
                break;
        }
    }
 
    function createPayment($intid, $charId, $sum, $itemsCount)
    {
        $query = '
                INSERT INTO
                    freekassa_payments (intid, account, sum, itemsCount, dateCreate, status)
                VALUES
                    (
                        "'.$this->mysqli->real_escape_string($intid).'",
                        "'.$this->mysqli->real_escape_string($charId).'",
                        "'.$this->mysqli->real_escape_string($sum).'",
                        "'.$this->mysqli->real_escape_string($itemsCount).'",
                        NOW(),
                        0
                    )
            ';
 
        return $this->mysqli->query($query);
    }
 
    function  cancelPaymentByIntid($intid)
    {
        $query = '
                UPDATE
                    freekassa_payments
                SET
                    status = 2,
                    dateComplete = NOW()
                WHERE
                    intid = "'.$this->mysqli->real_escape_string($intid).'"
                LIMIT 1
            ';
        return $this->mysqli->query($query);
    }
 
    function getPaymentByIntid($intid)
    {
        $query = '
                SELECT * FROM
                    freekassa_payments
                WHERE
                    intid = "'.$this->mysqli->real_escape_string($intid).'"
                LIMIT 1
            ';
        $result = $this->mysqli->query($query);
 
        return $result->fetch_object();
    }
 
    function confirmPaymentByIntid($intid)
    {
        $query = '
                UPDATE
                    freekassa_payments
                SET
                    status = 1,
                    dateComplete = NOW()
                WHERE
                    intid = "'.$this->mysqli->real_escape_string($intid).'"
                LIMIT 1
            ';
        return $this->mysqli->query($query);
    }
}
 

 

 

Изменено пользователем eruchus12

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят, прошу Вас помощи, у кого стоит платежеприемник free-kassa помогите в настройке (у меня lucera). Платежи принимает, коннект с базой есть (проверен), деньги приходят. В игре монету не выдает, помогите куда лезть в скрипте, что надо править и т.п. Или если есть предположения какие-либо, пишите, полазию, попробую

Была проблема с выдачей на pwsoft, проблема была из за нехватики столбцов в таблице выдачи итема.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Была проблема с выдачей на pwsoft, проблема была из за нехватики столбцов в таблице выдачи итема.

Я даже не знаю, как узнать в чем проблема, этот модуль логи не пишет к сожалению

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто поможет сделать так, чтобы итемы в игре всетаки выдавались, кину на пиво 400 рубликов, больше банально нету из свободных. Если есть желание, скайп в пм. Оплата работы по выполнению.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...