За последние 24 часа нас посетил 18891 программист и 1635 роботов. Сейчас ищут 965 программистов ...

Payeer, не начисляются "рефские"

Тема в разделе "PHP и базы данных", создана пользователем boypush, 27 окт 2015.

  1. boypush

    boypush Новичок

    С нами с:
    27 окт 2015
    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте, при успешном платеже не начисляются "рефские",т.е определенный процент от пополнения, не могу понять где ошибка, помогите пожалуйста.

    Вот код обработчика:
    Код (PHP):
    1. <?
    2.  
    3. include_once 'data/connect.php'; // Соединение с базой данных
    4. include_once 'data/config.php'; // Подключаем настройки
    5.  
    6. if (isset($_POST["m_operation_id"]) && isset($_POST["m_sign"]))
    7. {
    8.     $m_key = $payeerkey;
    9.     $arHash = array($_POST['m_operation_id'],
    10.             $_POST['m_operation_ps'],
    11.             $_POST['m_operation_date'],
    12.             $_POST['m_operation_pay_date'],
    13.             $_POST['m_shop'],
    14.             $_POST['m_orderid'],
    15.             $_POST['m_amount'],
    16.             $_POST['m_curr'],
    17.             $_POST['m_desc'],
    18.             $_POST['m_status'],
    19.             $m_key);
    20.     
    21.     $sign_hash = strtoupper(hash('sha256', implode(':', $arHash)));
    22.     if ($_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success')
    23.     {
    24. mysql_query("UPDATE inserts SET status = 1 WHERE id = '".$_POST['m_orderid']."'");
    25. $userss = mysql_query("SELECT * FROM inserts WHERE id = '".$_POST['m_orderid']."'") or die(mysql_error());
    26. $datauser = mysql_fetch_assoc($userss);
    27. mysql_query("UPDATE users SET balance = balance + '".$_POST['m_amount']."' WHERE id = '".$datauser['userid']."' LIMIT 1");
    28. mysql_query("UPDATE users SET inserts = inserts + '".$_POST['m_amount']."' WHERE id = '".$datauser['userid']."' LIMIT 1");
    29. mysql_query("UPDATE stats SET inserts = inserts + '".$_POST['m_amount']."' WHERE id = 1");
    30. #Зачисляем рефские
    31. $ref = $datauser['ref_id'];
    32. $sql = mysql_query("SELECT * FROM users WHERE id = '$ref'");
    33. $qq = mysql_fetch_array($sql);
    34. $ref_sum = $_POST['m_amount'] / 100 * $ref_perc;
    35. mysql_query("UPDATE users SET balance = balance + '$ref_sum' WHERE id = '$ref' LIMIT 1");
    36. mysql_query("UPDATE users SET sum_ref = sum_ref + '$ref_sum' WHERE id = '$ref' LIMIT 1");
    37.  
    38.  
    39.         echo $_POST['m_orderid'].'|success';
    40.         exit;
    41.     }
    42.     echo $_POST['m_orderid'].'|error';
    43. }
    44. ?>
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Этого мало, нужно отладить скрипт, перепроверить вручную каждый sql запрос и отрабатывает ли сам скрипт в нужных местах как и задумано.
    Можешь начать с проверки if
    Код (PHP):
    1. ($_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success')
    выполняется ли код в этом if.
    Потом посмотреть какие sql запросы генерируються
    Код (PHP):
    1. $sql = "UPDATE inserts SET status = 1 WHERE id = '".$_POST['m_orderid']."'";
    2. echo $sql; //узнаём какой был сгенерированный запрос
    Запросы можно проверить в PHpMyAdmin.
    Инструкции по отладке:
    http://phpfaq.ru/debug
    https://netbeans.org/kb/docs/php/debugging_ru.html

    Лучше заменить функцию mysql_ (устарела) на PDO https://secure.php.net/manual/ru/book.mysqli.php

    Защита от SQL-injection http://phpfaq.ru/tech/safety#sql чтобы не смогли накрутить денег сколько хотят.
     
  3. boypush

    boypush Новичок

    С нами с:
    27 окт 2015
    Сообщения:
    2
    Симпатии:
    0
    Спасибо за отклик, будем проверять.
     
  4. wh1skas

    wh1skas Новичок

    С нами с:
    8 июл 2014
    Сообщения:
    13
    Симпатии:
    2
    Я вижу, что в переменной $datauser хранится выборка из таблицы inserts. А в переменную $ref ты пытаешься сохранить айдишник рефа из предыдущей выборки, потому что я не уверен, что в таблице inserts у тебя хранятся id рефов.

    Не хватает двух выборок:
    1. Нужен id пользователя, который пополнил счет (данные, которые пошли в таблицу inserts)
    2. По найденному id пользователя ищем в другой таблице его рефов.