Не обновляется баланс на сайте после оплаты через unitpay

Тема в разделе "Boxcode", создана пользователем _han, 5 янв 2020.

  1. _han

    _han Создатель

    Регистр.:
    28 дек 2014
    Сообщения:
    29
    Симпатии:
    0
    Не обновляется баланс на сайте после оплаты через unitpay

    Всем привет, давно меня здесь не было)))
    Есть проблемка:
    Не обновляется баланс на сайте после оплаты через unitpay, что может быть?
    Прописал в настройках обработчика платежей на сайте unitpay.ru http://сайт.ru/systpayment/unitpay/drpayment.php, при проверке вылетает "Магазин отклонил платеж: ошибка с данными " и ошибка {“error”:{“code”:-32000,”message”:”ошибка с данными”}} , поэтому не возможно сделать оплату…. но если в обработчике платежей убрать ссылку на/unitpay/drpayment.php, оплата проходит без проблем, но при этом на самлм сайте пользователю деньги не приходят, то есть баланс автоматически не обновляется, подскажите куда копать? Я полагаю, что проблема может быть в самом файле drpayment.php который в \www\systpayment\unitpay
    Подскажите пожалуйста, что и где нужно подправить, или может у кого рабочий есть, поделитесь. Версия доски 8.5

    Кстати скажу сразу, проверял также на 10.1 проблема таже:
    {"error": {"code": -32000, "message": "ошибка с данными"}}
    Магазин отклонил платеж: ошибка с данными

    Значит проблема была изначально в 10.1.

    Заранее спасибо за помощь.

    www\systpayment\unitpay\drpayment.php:

    <?php

    // файл

    include_once(“../../config/config.php”);
    include_once(“../init_work.php”);

    /*
    $t = “данные GET: \r\n”;
    if ( !empty( $_GET ) && sizeof($_GET) )
    {
    //foreach ( $_GET as $key => $value )
    // $t.= $key . “=>”.$value.”;\r\n”;
    $t .= var_export($_GET, true);
    }
    db_error(“Скрипт оплаты услуг (unitpay). “,$t);
    */

    $mas_set = array(

    array(“method”,”get”,”method”,”text”,true,true,”listv”,”check,pay”,false,false,”all”,0),//Индикатор предварительного запроса
    /*
    array(“params”,”post”,”params”,”text”,true,false,false,false,false,false,”all”,””),//кошелек продавца
    array(“LMI_PAYMENT_NO”,”post”,”LMI_PAYMENT_NO”,”text”,true,false,false,false,false,false,”all”,”0″),
    array(“LMI_PAYMENT_AMOUNT”,”post”,”LMI_PAYMENT_AMOUNT”,”text”,true,false,false,false,false,false,”all”,”0″),//Сумма, которую заплатил покупатель. Дробная часть отделяется точкой.
    array(“LMI_MODE”,”post”,”LMI_MODE”,”text”,true,false,false,false,false,false,”all”,”0″),
    array(“LMI_PAYER_WM”,”post”,”LMI_PAYER_WM”,”text”,true,false,false,false,false,false,”all”,”0″),
    array(“LMI_PAYER_PURSE”,”post”,”LMI_PAYER_PURSE”,”text”,true,false,false,false,false,false,”all”,””),
    array(“LMI_SYS_INVS_NO”,”post”,”LMI_SYS_INVS_NO”,”text”,true,false,false,false,false,false,”all”,””),
    array(“LMI_SYS_TRANS_NO”,”post”,”LMI_SYS_TRANS_NO”,”text”,true,false,false,false,false,false,”all”,””),
    array(“LMI_SYS_TRANS_DATE”,”post”,”LMI_SYS_TRANS_DATE”,”text”,true,false,false,false,false,false,”all”,””),

    array(“LMI_HASH”,”post”,”LMI_HASH”,”text”,true,false,false,false,false,false,”all”,””),

    array(“comment”,”post”,”comment”,”text”,true,false,false,false,false,false,”all”,””),
    */
    );

    $mas_set_params = array(
    array(“unitpayId”,”numeric”,false),
    array(“account”,”text”,true),
    array(“sum”,”numeric”,true),
    array(“profit”,”numeric”,false),
    array(“phone”,”text”,false),
    array(“paymentType”,”text”,false),
    array(“operator”,”text”,false),
    array(“date”,”text”,false),
    array(“sign”,”text”,true),

    );

    $url_site = “http://”.$_SERVER[“SERVER_NAME”].set_dir_from_path($_SERVER[“SCRIPT_NAME”],2).”/”;

    $dbcnx=@$obj_baz->connectBaz($dbhost,$dbuser,$dbpasswd,$dbname);
    if ( !$dbcnx ) write_answer_sp(1,”невозможно подключится к базе данных”);

    $rez_control_data=$obj_control_data->processing_one_group($mas_set);

    $mas_inbox = $rez_control_data[3];
    $mas_status = $rez_control_data[5];

    $get_params = array();
    $data_params = array();
    $is_check_data_params = false;

    if ( !empty($_GET[“params”]) && is_array($_GET[“params”]) && sizeof($_GET[“params”]) )
    {
    $get_params = $_GET[“params”];//var_dump($get_params);
    $is_data = true;
    foreach ( $mas_set_params as $one_init_v )
    {
    $v = false;
    if ( isset($get_params[$one_init_v[0]]) )
    $v = trim($get_params[$one_init_v[0]]);

    if ( !$v && $one_init_v[2] )
    {
    $is_data = false;
    break;
    }

    if ( $one_init_v[1] == “numeric” )
    {
    if ( $v === false || ( $v !== “” && !is_numeric($v) ) )
    {
    $is_data = false;
    break;
    }
    }

    $data_params[$one_init_v[0]] = ($v === false ? “” : $v);

    }

    if ( $is_data ) $is_check_data_params = true;

    }

    if ( $rez_control_data[0] && !$rez_control_data[1] && $is_check_data_params )
    {
    //данные обнаружены

    $method = $mas_inbox[“method”];
    $is_check_query = ( $method == “pay” ? false : true );

    $m = $get_params;
    unset ($m[“sign”]);
    ksort($m);

    $part1 = implode(“”,$m);
    $part1 .= $masConfig[“SP_SECRET_KEY_UNITPAY”];

    $contr = md5( $part1 );

    //$contr_test = md5( $part1 . $mas_inbox[“test”] . SECRET_KEY_A1LITE );

    if ( $contr == $data_params[“sign”] )
    {

    if ( !mb_strlen( $data_params[“account”] ) ) write_answer_sp(1,”не заданы идентификационные параметры”);

    $d_order = explode(“:”,mb_strtolower($data_params[“account”]));
    if ( !(sizeof($d_order) >= 2 ) ) write_answer_sp(1,”ошибка с инициализационными данными.”);

    $mas_data = $d_order;
    unset($mas_data[0]);
    $mas_data = array_values($mas_data);

    if ( $mas_data[0] == 7 )
    $name_modul = “addmoney”;
    else
    {
    $name_modul = work_init_moduls::get_name_modul($mas_data[0]);
    if ( !$name_modul ) write_answer_sp(1,”ошибка с инициализацией модуля”);
    }
    $mas_data[0] = $name_modul;

    if ( !( sizeof( $mas_data ) > 0 && gen_methods_systpayment::check_name_modul($mas_data[0]) ) )
    write_answer_sp(1,”ошибка с инициализационными данными.”);

    //echo($mas_data[0].” “.$mas_data[1]);

    $path_dr_modul = gen_methods_systpayment::path_include_modul_sp($mas_data[0],”unitpay”);

    if ( !$path_dr_modul )
    {
    write_answer_sp(1,”ошибка с платежным драйвером модуля.”);
    }

    $payment_amount = $data_params[“sum”];//сумма оплаченная пользователем
    $payment_num_order = $d_order[0];//номер заказа

    include($path_dr_modul);

    //list($error,$error_text) = $obj_proc->operationServiceAdv($mas_data[0],$mas_data[1]);

    }
    else
    {
    write_answer_sp(1,”контрольные ключи не совпали”);
    }

    }
    else
    {
    write_answer_sp(1,”ошибка с данными”);
    }

    write_answer_sp($error,$error_text);

    function write_answer_sp($error,$error_text)
    {
    $answer=””;

    if ($error==1)
    {
    db_error(“Скрипт оплаты услуг (unitpay)”,$error_text);

    $answer = ‘{“error”: {“code”: -32000, “message”: “‘.codeHtmlText($error_text).'”}}’;
    //$answer.= “error”;//$error_text;
    }
    else
    {

    $answer = ‘{“result”: {“message”: “Услуга успешно оказана!”}}’;
    }

    echo($answer);
    exit();
    }
     
    Последнее редактирование: 5 янв 2020