Здравствуйте. Проблема следующая. Установил на сайт платежную систему Payeer, настроил магазин, прошел модерацию. Но, когда пользователь пополняет личный счет на моем сайте, то деньги не добавляются на его счет, хотя мне в магазин они приходят. Не могу разобраться в чем проблема. Плагины безопасности отключал, отключал вообще все, но проблема не решилась. Платежка Payeer выполнена в виде плагина, который я настраиваю в админ панеле. Подразумеваю несколько причин: не правильно указан url обработчика, может база данных не обновляется, вообщем даже не знаю. Если нужны еще какие файлы плагина платежки я скину. Код обработчика:
prefix.check_payeer;
$wpdb->insert
(
$table_check,
array(
'product_id' => $check_info['product_id'],
'user_id' => $check_info['user_id'],
'amount' => $check_info['amount'],
'currency' => $check_info['currency'],
'status' => $check_info['status'], // success - успех, error - ошибка, processed - обрабатывается
'type' => $check_info['type'], // depositing - пополнение счета, withdrawals - вывод денег, payment - оплата
'date' => $check_info['date'],
'description' => $check_info['description']
),
array('%s', '%s', '%d', '%s', '%s', '%s', '%s', '%s')
);
return mysql_insert_id();
}
// Подпись
function payeer_signature_store($m_orderid, $m_amount, $m_curr, $m_desc)
{
$arHash = array(
get_option_payeer('payeer_shop_id'),
$m_orderid,
$m_amount,
$m_curr,
base64_encode($m_desc),
get_option_payeer('payeer_secret_key')
);
return strtoupper(hash('sha256', implode(":", $arHash)));
}
// Работа с датой
function payeer_handler_date($date, $type = false)
{
if($type)
{
$dateTime = new DateTime($date);
$dateTime->modify(-get_option('gmt_offset').' hour');
return $dateTime->format('Y-m-d H:i:s');
}
else
{
$dateTime = new DateTime($date);
$dateTime->modify(get_option('gmt_offset').' hour');
return $dateTime->format('H:i, d.m.Y');
}
}
// Генерация навигации
function payeer_generator_navigation($number, $current, $table, $page = '?page_n=', $separator1 = ',', $separator2 = ' ', $name = 'Навигация: ', $class_div = '', $class_span = '')
{
global $wpdb;
$page_num = $wpdb->get_var("SELECT count(*) FROM $table") / $number;
$navigation = ''.$name;
for ($i = 0; $i < $page_num; $i++)
{
$navigation .= '';
if($i == $current && $current != -1)
$navigation .= ($i+1);
else
$navigation .= '
';
$navigation .= '';
if($i+1 < $page_num) $navigation .= $separator1;
$navigation .= $separator2;
}
$navigation .= '';
return $navigation;
}
// Обработка платежа
function payeer_process()
{
global $wpdb;
$table_products = $wpdb->prefix.check_payeer;
if (isset($_GET['m_operation_id']) && isset($_GET['m_sign']))
{
$table_check = $wpdb->prefix.check_payeer;
$check = $wpdb->get_row
(
$wpdb->prepare
(
"SELECT * FROM $table_check WHERE check_id = %d",
$_GET['m_orderid']
)
);
$arHash = array($_GET['m_operation_id'],
$_GET['m_operation_ps'],
$_GET['m_operation_date'],
$_GET['m_operation_pay_date'],
$_GET['m_shop'],
$_GET['m_orderid'],
number_format($check->amount, 2, '.', ''),
$check->currency,
$_GET['m_desc'],
$_GET['m_status'],
get_option_payeer('payeer_secret_key'));
$sign_hash = strtoupper(hash('sha256', implode(':', $arHash)));
if ($_GET['m_sign'] == $sign_hash && $_GET['m_status'] == 'success' && $check->status == 'processed')
{
//include_once WP_PLUGIN_DIR.'/'.get_option_payeer('payeer_name_plugin').'/api.php';
//api_payment_nt('success', $product->product_id, $product->user_id, $product->amount, $product->description);
$wpdb->update
(
$table_check,
array('status' => 'success'),
array('check_id' => $_GET['m_orderid']),
array('%s'),
array('%d')
);
include_once (PAYEER_PLUGIN_DIR.'/api.php');
api_account_management_nt($check->amount, $product->user_id);
echo $_GET['m_orderid'].'|success';
exit;
}
if($table_check == 'processed')
{
$wpdb->update
(
$table_check,
array('status' => 'error'),
array('check_id' => $_GET['m_orderid']),
array('%s'),
array('%d')
);
}
echo $_GET['m_orderid'].'|error';
exit;
}
}
// Работа с полями
function working_with_fields_payeer($date, $conf = 0, $conf2 = 0) // conf: 0 - в массив, 1 - в строку
{ // conf2: 0 - $mas[$j][$key] == 'content', 1 - $mas[$key] == 'content', 2 - $mas[$j] == $key
if(!$conf)
{
for($i = 0, $j = 0, $type = 0, $key; $i < strlen($date); $i++) { // type = 0 - обход, 1 - чтение названия, 3 - чтение информации
if($type == 0 && $date[$i] == '[')
{
$type = 1;
continue;
}
if($type == 1 && $date[$i] == '=' && $date[$i+1] == ''')
{
$type = 2;
$i++;
continue;
}
if($type == 1 && $conf2 == 2 && $date[$i] == ']')
{
$type = 0;
$j++;
continue;
}
if(($type == 2 && $date[$i-1] != '\' && $date[$i] == ''' && $date[$i+1] == ']') || ($type == 1 && $date[$i] == ']'))
{
if($conf2 == 0)
$result[$j]['content'] = stripslashes($result[$j]['content']);
elseif($conf2 == 1)
$result[$key] = stripslashes($result[$key]);
$key = '';
$type = 0;
$i++;
$j++;
continue;
}
if($conf2 == 0)
{
if($type == 1) $result[$j]['name'] .= $date[$i];
if($type == 2) $result[$j]['content'] .= $date[$i];
}
elseif($conf2 == 1)
{
if($type == 1) $key .= $date[$i];
if($type == 2) $result[$key] .= $date[$i];
}
elseif($conf2 == 2)
{
if($type == 1) $result[$j] .= $date[$i];
}
}
}
else
{
if($conf2 == 0)
{
for ($i = 0; $i < count($date); $i++) {
$result .= '['.$date[$i]['name'].'=''.addslashes($date[$i]['content']).'']';
}
}
if($conf2 == 1)
{
while ($date_name = current($date)) {
$result .= '['.key($date).'=''.addslashes($date_name).'']';
next($date);
}
}
if($conf2 == 2)
{
for ($i = 0; $i