- Автор темы
- #1
Не обновляется баланс на сайте после оплаты через unitpay
Всем привет, давно меня здесь не было)))
Есть проблемка:
Не обновляется баланс на сайте после оплаты через unitpay, что может быть?
Прописал в настройках обработчика платежей на сайте unitpay.ru Для просмотра ссылки Войдиили Зарегистрируйся, при проверке вылетает "Магазин отклонил платеж: ошибка с данными " и ошибка {“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 = “Для просмотра ссылки Войдиили Зарегистрируйся
$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:ath_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();
}
Всем привет, давно меня здесь не было)))
Есть проблемка:
Не обновляется баланс на сайте после оплаты через unitpay, что может быть?
Прописал в настройках обработчика платежей на сайте unitpay.ru Для просмотра ссылки Войди
Подскажите пожалуйста, что и где нужно подправить, или может у кого рабочий есть, поделитесь. Версия доски 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 = “Для просмотра ссылки Войди
$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:ath_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();
}
Последнее редактирование: