• Добро пожаловать на инвестиционный форум!

    Во всем многообразии инвестиций трудно разобраться. MMGP станет вашим надежным помощником и путеводителем в мире инвестиций. Только самые последние тренды, передовые технологии и новые возможности. 400 тысяч пользователей уже выбрали нас. Самые актуальные новости, проверенные стратегии и способы заработка. Сюда люди приходят поделиться своим опытом, найти и обсудить новые перспективы. 16 миллионов сообщений, оставленных нашими пользователями, содержат их бесценный опыт и знания. Присоединяйтесь и вы!

    Впрочем, для начала надо зарегистрироваться!
  • 🐑 Моисей водил бесплатно. А мы платим, хотя тоже планируем работать 40 лет! Принимай участие в партнеской программе MMGP
  • 📝 Знаешь буквы и умеешь их компоновать? Платим. Дорого. Бессрочная акция от MMGP: "ОПЛАТА ЗА СООБЩЕНИЯ"

Платежная система Payeer. Настройка и прикрепление к сайту.

Kitori

Интересующийся
Регистрация
06.10.2016
Сообщения
9
Реакции
0
Поинты
0.000
Здравствуйте. Возникла проблема при прикреплении платежной системы payeer к сайту. А именно: пользователь моего сайта пополняет свой счет (на моем сайте), деньги приходят мне в магазин payeer, однако на сайте не добавляются и не появляются вообще. Платежная система реализована как плагин. Не могу понять вообще с чем это может быть связано. Вот код обработчика платежа (полностью файл functions.php):
<?php

// Создание чека
function payeer_add_check($check_info)
{
global $wpdb;
$table_check = $wpdb->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 = '<div class="'.$class_div.'">'.$name;

for ($i = 0; $i < $page_num; $i++)
{
$navigation .= '<span class="'.$class_span.'">';

if($i == $current && $current != -1)
$navigation .= ($i+1);
else
$navigation .= '<a href="'.$page.($i+1).'">'.($i+1).'</a>';

$navigation .= '</span>';
if($i+1 < $page_num) $navigation .= $separator1;
$navigation .= $separator2;
}

$navigation .= '</div>';

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 < count($date); $i++) {
$result .= '['.$date[$i].']';
}
}
}

return $result;
}

// Работа с настройками
function get_option_payeer($name)
{
global $settings_rnt;

if(!$settings_rnt)
{
$settings_rnt = working_with_fields_payeer(get_option('settings_rnt'), 0, 1);
}

return $settings_rnt[$name];
}

function update_option_payeer($name, $date)
{
global $settings_rnt;
if(!$settings_rnt) get_option_rnt('');

$settings_rnt[$name] = $date;
update_option('settings_rnt', working_with_fields_payeer($settings_rnt, 1, 1));
}

?>
 

Vladij

Интересующийся
Регистрация
21.01.2013
Сообщения
69
Реакции
2
Поинты
0.000
Сбросьте домен сайта

!!!Начинающий веб-мастер!!!
 

Kitori

Интересующийся
Регистрация
06.10.2016
Сообщения
9
Реакции
0
Поинты
0.000
Да, указан секретный ключ верно. Проблему я решил вроде с пополнением, но возникли другие. Счет на сайте пополнить теперь могу только я, пользователь не может так как после оплаты, со статусом success его кидает на страницу error. У меня привязка платежной системы сделана плагином, в котором я указываю страницу сайта, куда будет приходить результат при оплате (успешно или нет), однако пополнить могу только я, всех остальных кидает на страницу error
 

HyipZanoza

Любитель
Регистрация
16.05.2016
Сообщения
155
Реакции
42
Поинты
0.000
Ваш магазин должен пройти модерацию, Вам нужно подать заявку на модерирование.
Или у Вас включен тестовый режим, где только разработчик может проводить оплату.
 

Kitori

Интересующийся
Регистрация
06.10.2016
Сообщения
9
Реакции
0
Поинты
0.000
Все я разобрался с проблемой пополнения. Теперь проблема с выводом. Деньги со счета пользователя на моем сайте списываются, но не приходят на его счет.
 

HyipZanoza

Любитель
Регистрация
16.05.2016
Сообщения
155
Реакции
42
Поинты
0.000
Все я разобрался с проблемой пополнения. Теперь проблема с выводом. Деньги со счета пользователя на моем сайте списываются, но не приходят на его счет.

Так что же у Вас было?
А функция вывода прописана?
API создан?
 

Kitori

Интересующийся
Регистрация
06.10.2016
Сообщения
9
Реакции
0
Поинты
0.000
Файл апи имеет следующую структуру
<?php

//**********************************************//
// API //
//**********************************************//

define( 'PAYEER_INCLUDES_DIR', PAYEER_PLUGIN_DIR.'/includes' );

function api_free_money_nt($money)
{
update_option('payeer_free_money', get_option('payeer_free_money') + $money);
}

function api_addition_product_nt($product_info)
{
global $wpdb;
$table_product = $wpdb->prefix.product_payeer;

$wpdb->insert
(
$table_product,
array(
'product_name' => $product_info['name'],
'date' => $product_info['date']
),
array('%s', '%s')
);

return mysql_insert_id();
}

function api_delete_product_nt($product_id)
{
global $wpdb;
$table_products = $wpdb->prefix.product_payeer;
$wpdb->query("DELETE FROM $table_products WHERE product_id = $product_id");
}

// Управление счетом
function api_account_management_nt($num, $user_id = '', $descr = '', $product_id = '')
{
global $current_user;

if(!$user_id)
{
get_currentuserinfo();
$user_id = $current_user->ID;
}

$money = get_user_meta($user_id, 'amount', true);

if($money + $num < 0) return false;

if($descr)
{
global $wpdb;
$table_check = $wpdb->prefix.check_payeer;
include_once (PAYEER_INCLUDES_DIR.'/functions.php');

$check_info = '';
$check_info['user_id'] = $user_id;
$check_info['product_id'] = $product_id;
$check_info['amount'] = number_format(abs($num), 2, '.', '');
$check_info['currency'] = get_option('payeer_currency');
$check_info['type'] = 'payment';
$check_info['status'] = 'success';
$check_info['date'] = date("Y-m-d H:i:s");
$check_info['description'] = $descr;
payeer_add_check($check_info);

update_user_meta($user_id, 'amount', $money + $num);
return true;
}
else
{
update_user_meta($user_id, 'amount', $money + $num);
return true;
}
}

?>
 

Kitori

Интересующийся
Регистрация
06.10.2016
Сообщения
9
Реакции
0
Поинты
0.000
Вот еще файл
<?php

// Заявки на вывод денег
function payeer_request()
{
global $wpdb;
$table_request = $wpdb->prefix.request_payeer;
$table_check = $wpdb->prefix.check_payeer;

// Обработка заявки
if (isset($_POST['payeer_request_adopt_btn']) )
{
if (function_exists('current_user_can') && !current_user_can('manage_options'))
die ( _e('Hacker?', 'rates_nt') );

if (function_exists ('check_admin_referer'))
{
check_admin_referer('payeer_request_setup_form');
}

$wpdb->update
(
$table_check,
array('status' => 'success'),
array('check_id' => $_POST['payeer_check_id']),
array('%s'),
array('%d')
);

include_once (PAYEER_PLUGIN_DIR.'/api.php');
api_free_money_nt($_POST['payeer_amount'] * get_option_payeer('payeer_percentage_output') / 100);
$wpdb->query("DELETE FROM $table_request WHERE request_id = ".$_POST['payeer_request_id']);
}

// Отклонение заявки
if (isset($_POST['payeer_request_reject_btn']))
{
if (function_exists('current_user_can') && !current_user_can('manage_options'))
die ( _e('Hacker?', 'rates_nt') );

if(function_exists ('check_admin_referer'))
{
check_admin_referer('payeer_request_setup_form');
}

$wpdb->update
(
$table_check,
array('status' => 'error'),
array('check_id' => $_POST['payeer_check_id']),
array('%s'),
array('%d')
);

include_once (PAYEER_PLUGIN_DIR.'/api.php');
api_account_management_nt($_POST['payeer_amount'], $_POST['payeer_user_id'], 'Ваша заявка отклонена по причине: '.$_POST['payeer_failure_cause']);

$wpdb->query("DELETE FROM $table_request WHERE request_id = ".$_POST['payeer_request_id']);
}

//Вывод формы информации по заявкам
$page_n = 10;
$current_page = ($_GET['page_n'] - 1 < 0 ? 0 : $_GET['page_n'] - 1);

$requests = $wpdb->get_results
(
$wpdb->prepare
(
"SELECT * FROM $table_request ORDER BY request_id DESC LIMIT %d, $page_n",
$current_page * $page_n
)
);

foreach ($requests as $item)
{
echo
"
<form name='rates_nt_tournaments_setup' method='post' action='".$_SERVER['PHP_SELF']."?page=payeer&updated=true'>
";

if (function_exists ('wp_nonce_field') )
{
wp_nonce_field('payeer_request_setup_form');
}

echo
"
<p style='padding-top:30px;'><b>ID заявки: ".$item->request_id."</b></p>
<table>
<tr>
<td style='text-align:right;'>Пользователь:</td>
<td><a href='".admin_url()."user-edit.php?user_id=".$item->user_id."'>ID".$item->user_id."</a></td>
<input type='hidden' name='payeer_check_id' value='".$item->check_id."'/>
<input type='hidden' name='payeer_request_id' value='".$item->request_id."'/>
<input type='hidden' name='payeer_user_id' value='".$item->user_id."'/>
<input type='hidden' name='payeer_amount' value='".$item->amount."'/>
<input type='hidden' name='payeer_currency' value='".$item->currency."'/>
<td> </td>
</tr>
<tr>
<td style='text-align:right;'>Дата:</td>
<td>".payeer_handler_date($item->date)."</td>
<td> </td>
</tr>
<tr>
<td style='text-align:right;'>Сумма:</td>
<td>".$item->amount." ".$item->currency." - ".get_option_payeer('payeer_percentage_output')."% = ".($item->amount * (100 - get_option_payeer('payeer_percentage_output')) / 100)." ".$item->currency."</td>
<td> </td>
</tr>
<tr>
<td style='text-align:right;'>Платёжная система:</td>
<td>".$item->payment_system."</td>
<td> </td>
</tr>
<tr>
<td style='text-align:right;'>Номер счета:</td>
<td>".$item->account_number."</td>
<td> </td>
</tr>
<tr>
<td style='text-align:right;'>Комментарий:</td>
<td>".$item->description."</td>
<td> </td>
</tr>
<tr>
<td style='text-align:right;'>Причина отказа:</td>
<td><input type='text' name='payeer_failure_cause' value='' style='width:300px;'/></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td>
<input type='submit' class='button' name='payeer_request_adopt_btn' value='Принять'/>
<input type='submit' class='button' name='payeer_request_reject_btn' value='Отклонить'/>
</td>
</tr>
</table>
</form>
";
}

echo payeer_generator_navigation($page_n, $current_page, $table_request, $_SERVER['PHP_SELF']."?page=payeer&page_n=");;
}

?>

добавлено через 3 минуты
Вообщем привязка магазина выполнена в виде плагина на вордпресс. Может я вышлю вам весь плагин сразу?Вы посмотрите, для целостности картины функционирования. На почту например
 
Последнее редактирование:

Kitori

Интересующийся
Регистрация
06.10.2016
Сообщения
9
Реакции
0
Поинты
0.000
Да. Тоесть при выводе, пользователь подает заявку на вывод (на определенную сумму), эта заявка приходит ко мне в админку, я ее принимаю, и деньги должны с его счета на моем сайте перевестись на выбранный им счет. Однако деньги с его счета на моем сайте списываются, но со счета магазина они не списываются и соответственно не переводятся пользователю на выбранный им счет.
 

HyipZanoza

Любитель
Регистрация
16.05.2016
Сообщения
155
Реакции
42
Поинты
0.000
Глянув куски кода я не обнаружил ничего похожего на Payeer API.
Вы создавали в кабинете Payeer, API ?Там должен быть секретный ключ и API ID7.
Есть ли у Вас в настройках админки такие поля?

Возможно у Вас ручные выплаты в модуле.
 

Kitori

Интересующийся
Регистрация
06.10.2016
Сообщения
9
Реакции
0
Поинты
0.000
В админке нет таких полей, и да, скорее всего ручные выплаты у меня. КО мне приходит заявка с номеров счета куда переслать деньги, я пересылаю из магазина payeer и после жму в админке принять, и у пользователя в таблице данных высвечивается заявка успешно принята.

добавлено через 1 минуту
Благодарю за помощь =)
 
Последнее редактирование:
Сверху Снизу