Помогите с Freekassa

Deversant

Знаменитый
Участник
Сообщения
19
Розыгрыши
0
Репутация
4
Реакции
6
Баллы
1 285
Здравствуйте помогите разобраться с Freekassa не правильная подпись выдает при отправке запроса
PHP:
if($cfg["kassa"]["enable"] == "FreeKassa"){
    if ( !$cfg["freekassa"]["enable"] ) {
        $tpl->SetResult( "content", $lang["don_err_freekassa"]);
    //$controller->showMSG( $lang["don_err_freekassa"] );
} else {
        $merchant_id = $cfg["freekassa"]["merchant"];
        $secret_word = $cfg["freekassa"]["secret"];
        $order_id = rand(999, 999999);
        $order_amount = $_GET["oa"];
        $currency = 'RUB';
        //5d05376b38f35157e51c6ce8e66a71b5
        //$sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$order_id);
        $sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$currency.':'.$order_id);
    $htmlform = '
    <body onload="srokChange()">
        <form method="get" action="https://pay.freekassa.ru/">
        <input type="hidden" name="m" value="'.$merchant_id.'">
        <input type="hidden" name="o" value="'.$order_id.'">
        <input type="hidden" name="currency" value="'.$currency.'">
        <input type="hidden" name="s" value="'.$sign.'">
        <input type="hidden" name="i" value="1">
        <input type="hidden" name="lang" value="ru">
       
        <input type="hidden" name="us_time" id="us_time" value="0">
        <table class="table table-striped table-bordered table-hover">
    <tbody><tr>
    <th>
    <span class="glyphicon glyphicon-cog" aria-hidden="true"></span> <font size="3">STEAM_ID</font>
    <br>
    <small class="text-muted"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> <span style="color:#d81717">ВВОДИТЕ STEAM_ID ВНИМАТЕЛЬНО!</span> <p><b>Пример:</b> <span style="color:#006400">STEAM_0:1:12345678</span></p> </small>
    </th>
    <td><p><input type="text" name="us_login" class="input-sm" placeholder="STEAM_ID" required></p></td>
       
    <tr>
    <th><span class=" glyphicon glyphicon-envelope" aria-hidden="true"></span> <font size="3">E-Mail</font><br>
    <small class="text-muted"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> Внимательно введите адрес вашей электронной почты, на него придет вся информация об оплате</small>
    </th>
    <td><input type="email" name="us_email" class="input-sm" placeholder="example@mail.ru" required></td>
    </tr>
    <th><span class="glyphicon glyphicon-hdd" aria-hidden="true"></span> <font size="3">Сервер</font>
    </br>
    <small class="text-muted"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> Выберите сервер, на котором хотите получить VIP</small>
    </th>
    <td>
    <label><input type="checkbox" name="us_server1" id="server1" onclick="srokChange()"><img style="margin-right: 5px;margin-left: 5px;" src="./templates/default/img/css.gif"><span style="font-size:15px">[CS:S] УБИЙСТВЕННЫЙ ® DUST2</span></label>
    <br>
    <label><input type="checkbox" name="us_server2" id="server2" onclick="srokChange()"><img style="margin-right: 5px;margin-left: 5px;" src="./templates/default/img/csgo.gif"><span style="font-size:15px">[CS:GO] Лихие-90е [de_Dust2]</span></label>
    </td>
    </tr>
    <tr>
<th><span class="glyphicon glyphicon-time" aria-hidden="true"></span> <font size="3">Срок действия VIP</font></br>
<small class="text-greeen"><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span> Больше срок - больше выгода!</small></th>
<td>
    <select class="input-sm" name="oa" id="srok" OnChange="srokChange()">
        <option value="1" data-expires="1" data-cost1="50" data-cost2="60">7 дней</option>
        <option value="2" data-expires="2" data-cost1="95" data-cost2="115">14 дней (-5%)</option>
        <option value="3" data-expires="3" data-cost1="135" data-cost2="160">21 день (-10%)</option>
        <option value="4" data-expires="4" data-cost1="175" data-cost2="200">месяц (-15%)</option>
        <option value="5" data-expires="5" data-cost1="320" data-cost2="380">2 месяца (-20%)</option>
        <option value="6" data-expires="6" data-cost1="450" data-cost2="540">3 месяца (-25%)</option>
        <option value="7" data-expires="7" data-cost1="840" data-cost2="1000">6 месяцев (-30%)</option>
        <option value="8" data-expires="8" data-cost1="1550" data-cost2="1850">1 год (-35%)</option>
    </select>
</td>
</tr>
    <p><input type="hidden" name="us_vip" value="VIP"></p>
   
        <tr>
<th><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> <font size="3">К оплате</font></th>
<td><input id="cost" class="input-sm" value="" disabled></td>
</tr>
    </tr></tbody></table>
    <div align="center"><input type="submit" class="btn btn-lg btn-primary" value="Далее"></div>
    </form>
    </body>

    ';
получается в подпись $sign = md5($merchant_id.':'.$order_amount.':'.$secret_word.':'.$currency.':'.$order_id);
не правильно предает $order_amount если вместо этого поставить значение 50 то все работает вот как заставить чтобы правльно форма передавала сумму не могу понять
 

Спасибо rosylik разобрался​

 
Здравствуйте не передаются данные из html формы в Базу как можно исправить подскажите пожалуйста.
сам файл donate.php
PHP:
<?php

if($cfg["kassa"]["enable"] == "ON"){
   
    if ( !$cfg["freekassa"]["enable"] ) {
        $tpl->SetResult( "content", $lang["don_err_FreeKassa"]);
} else {
        $htmlform = '
            <body onload="srokChange()">
    <form action="/freekassa/pay.php" method="post">
    <input type="hidden" name="us_time" id="us_time" value="0">
        <table class="table table-striped table-bordered table-hover">
    <tbody><tr>
    <th>
    <span class="glyphicon glyphicon-cog" aria-hidden="true"></span> <font size="3">STEAM_ID</font>
    <br>
    <small class="text-muted"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> <span style="color:#d81717">ВВОДИТЕ STEAM_ID ВНИМАТЕЛЬНО!</span> <p><b>Пример:</b> <span style="color:#006400">STEAM_0:1:12345678</span></p> </small>
    </th>
    <td><p><input type="text" name="us_account" class="input-sm" placeholder="STEAM_ID" required></p></td>
     
    <tr>
    <th><span class=" glyphicon glyphicon-envelope" aria-hidden="true"></span> <font size="3">E-Mail</font><br>
    <small class="text-muted"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> Внимательно введите адрес вашей электронной почты, на него придет вся информация об оплате</small>
    </th>
    <td><input type="email" name="us_email" class="input-sm" placeholder="example@mail.ru" required></td>
    </tr>
    <th><span class="glyphicon glyphicon-hdd" aria-hidden="true"></span> <font size="3">Сервер</font>
    </br>
    <small class="text-muted"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span> Выберите сервер, на котором хотите получить VIP</small>
    </th>
    <td>
    <label><input type="checkbox" name="server1" id="server1" onclick="srokChange()"><img style="margin-right: 5px;margin-left: 5px;" src="./templates/default/img/css.gif"><span style="font-size:15px">[CS:S] УБИЙСТВЕННЫЙ ® DUST2</span></label>
    <br>
    <label><input type="checkbox" name="server2" id="server2" onclick="srokChange()"><img style="margin-right: 5px;margin-left: 5px;" src="./templates/default/img/csgo.gif"><span style="font-size:15px">[CS:GO] УБИЙСТВЕННЫЙ ® DUST2 - в разработке</span></label>
    </td>
    </tr>
    <tr>
<th><span class="glyphicon glyphicon-time" aria-hidden="true"></span> <font size="3">Срок действия VIP</font></br>
<small class="text-greeen"><span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"></span> Больше срок - больше выгода!</small></th>
<td>
    <select class="input-sm" name="sum" id="srok" OnChange="srokChange()">
        <option value="1" data-expires="1" data-cost1="50" data-cost2="60">7 дней</option>
        <option value="2" data-expires="2" data-cost1="95" data-cost2="115">14 дней (-5%)</option>
        <option value="3" data-expires="3" data-cost1="135" data-cost2="160">21 день (-10%)</option>
        <option value="4" data-expires="4" data-cost1="175" data-cost2="200">месяц (-15%)</option>
        <option value="5" data-expires="5" data-cost1="320" data-cost2="380">2 месяца (-20%)</option>
        <option value="6" data-expires="6" data-cost1="450" data-cost2="540">3 месяца (-25%)</option>
        <option value="7" data-expires="7" data-cost1="840" data-cost2="1000">6 месяцев (-30%)</option>
    </select>
</td>
</tr>
    <p><input type="hidden" name="desc" value="VIP"></p>
 
        <tr>
<th><span class="glyphicon glyphicon-shopping-cart" aria-hidden="true"></span> <font size="3">К оплате</font></th>
<td><input id="cost" class="input-sm" value="" disabled></td>
</tr>
    </tr></tbody></table>
    <div align="center"><input type="submit" class="btn btn-lg btn-primary" value="Далее"></div>
    </form>
    </body>
    ';
   
    $act_arr = array( "result", "success", "fail" );
    $act = ( isset($_REQUEST["act"]) and in_array($_REQUEST["act"], $act_arr) ) ? $_REQUEST["act"]:"";

    if ( $act == "result" ) {
        //не используется
    }
    elseif ( $act == "success" ) {  
   
        $sid = '2'; //ID сервера
        $db->gdb( $sid );
       
        $us_account = $controller->steam3( $_POST['us_login'] );
        $vip_time = $controller->GetTimeVip((int)$_POST['us_time']);
        $desc = $_POST['desc'];
        $time = time();
       
        $gdb[$sid]->query( "INSERT INTO `vip_users`  VALUES ('".$us_account."', '', '".$time."', '0', '".$desc."', '".$vip_time."')" );
       
        $tpl->SetResult( "content", "<br><div class='noerror'>{$lang["don_ok"]}</div><br><br> " );
    }
    elseif ( $act == "fail" ) {
        $tpl->SetResult( "content", "<div class='error'>{$lang["don_err_payment"]}</div>" );
    }
    else
        $tpl->SetResult( "content", $htmlform );
    }
}
else {
    $tpl->SetResult( "content", $lang["don_off"]);
}
?>

сама функция srokChange() которая в html форме

HTML:
<script type="text/javascript">
function srokChange()
{
 var us_time = document.getElementById("us_time");
 var selected = document.getElementById("srok").options[document.getElementById("srok").selectedIndex];
 var expires = selected.getAttribute( "data-expires" );
 var cost1 = selected.getAttribute('data-cost1');
 var cost2 = selected.getAttribute('data-cost2');
 var cost = "";
 
 if(document.getElementById("server1").checked)
 {
  cost = Number(cost) + Number(cost1);
 }
 
 if(document.getElementById("server2").checked)
 {
  cost = Number(cost) + Number(cost2);
 }
 
 us_time.setAttribute( "value", expires );
 
 selected.setAttribute( "value", cost );
 
 if(document.getElementById("server1").checked || document.getElementById("server2").checked)
 {
  cost = cost + " рублей";
 }
 
 document.getElementById("cost").value = cost;
}
    </script>

Вот сам freekassa обработчик pay.php
PHP:
<?php
    $fk_secret = 'xxxxxxxxxxxx';
    $fk_id = 'xxxxx';
    $currency = 'RUB';

    $oa = number_format($_POST['sum'], 2, '.', '') * 1;
    $o = $_POST['desc'];
    $us_account = $_POST['us_account'];
    $us_time = $_POST['us_time'];

    $sign = md5($fk_id.':'.$oa.':'.$fk_secret.':'.$currency.':'.$o);

if ($fk_id == '' OR $fk_secret == '' OR $oa == '' OR $o == '' or $us_account == '') die();

    header("Location: https://pay.freekassa.ru/?m={$fk_id}&oa={$oa}&o={$o}&s={$sign}&currency={$currency}&us_account={$us_account}&us_time={$us_time}");
    die();
сами функции GetTimeVip и steam3

PHP:
function steam3($id) {
    $s = $id;
    $myarray = explode(":",$s,3);
    if ($myarray[1] === "1") $s = intval($myarray[2]) * 2 + 1;
    else $s = intval($myarray[2]) * 2;
    return $s;
}

// 1 день = 86400 секунд
function GetTimeVip($id){
    $array = array(
        1 => time()+604800,
        2 => time()+1209600,
        3 => time()+1814400,
        4 => time()+2592000,
        5 => time()+5184000,
        6 => time()+7776000,
        7 => time()+1555200,
        8 => time()+31104000
    );
        return $array[$id];
}
 
нужно чтобы данные из формы записались сюда
$gdb[$sid]->query( "INSERT INTO `vip_users` VALUES ('".$us_account."', '', '".$time."', '0', '".$desc."', '".$vip_time."')" );
после успешной оплаты
 
нужно чтобы данные из формы записались сюда
$gdb[$sid]->query( "INSERT INTO `vip_users` VALUES ('".$us_account."', '', '".$time."', '0', '".$desc."', '".$vip_time."')" );
после успешной оплаты
Фрикасса после успешной оплаты шлет запрос с информацией.
На сайте фрикассы указывается ссылка на какой адрес слать.
к примеру
В нем проверяем подпись, если успешно записываем в бд. Эта вся инфа если у них в документации.
 
на страницу оплаты и страницу успешной оплаты переходит но в саму базу данные
$us_account = $controller->steam3( $_POST['us_login'] );
$vip_time = $controller->GetTimeVip((int)$_POST['us_time']);
$desc = $_POST['desc'];
из формы не передаются получается

Ошибка MySQL!
========================

MySQL вернул ошибку:
Incorrect integer value: '' for column 'expires' at row 1

Номер ошибки:
1366
INSERT INTO `vip_users` VALUES ('0', '', '1697130029', '0', '', '')
 
Назад
Сверху Снизу