Автоматические пополнения

  • Автор темы NDF376
  • Дата начала
NDF376
Местный
Сообщения
50
Реакции
3
Несколько дней мучался с настройкой IPN (уведомления об оплате) для Okpay. В интернете нигде не нашел примеров или готовых скриптов, да и не многие системы принимают Okpay напрямую! Написал с нуля. Выкладываю в паблик сразу 3 IPN для Payeer, Okpay, Perfect Money - https://yadi.sk/d/9iKFHH3chETeV
Если есть вопросы - обращайтесь!

P.S. Надо еще брать из базы по данному номеру заказа сумму и сравнивать с полученной суммой, но тут у каждого сайта свое, так что тут сами. Если надо будет - помогу!
 
Holod
Участник
Сообщения
326
Реакции
24
Если ошибаюсь это не относится к разделу "Заработок".
 
NDF376
Местный
Сообщения
50
Реакции
3
Я немного темы перепутал, тему нельзя перенести?
 
dred142
Участник
Сообщения
69
Реакции
23
Не работает PM!(

<?PHP
# Автоподгрузка классов
function __autoload($name){ include("classes/_class.".$name.".php");}
# Класс конфига
$config = new config;
# Функции
$func = new func;
# База данных
$db = new db($config->HostDB, $config->UserDB, $config->PassDB, $config->BaseDB);
$passphrase = strtoupper(md5('max'));
$ALTERNATE_PHRASE_HASH_NO_HASH="22t0eJK17WpRqdherT554745";
$ALTERNATE_PHRASE_HASH = strtoupper(md5($ALTERNATE_PHRASE_HASH_NO_HASH));

$string = $_REQUEST['PAYMENT_ID'].':'.$_REQUEST['PAYEE_ACCOUNT'].':'.$_REQUEST['PAYMENT_AMOUNT'].':'.$_REQUEST['PAYMENT_UNITS'].':'.$_REQUEST['PAYMENT_BATCH_NUM'].':'.$_REQUEST['PAYER_ACCOUNT'].':'.$ALTERNATE_PHRASE_HASH.':'.$_REQUEST['TIMESTAMPGMT'];

$hash=strtoupper(md5($string));

if($_REQUEST['V2_HASH']==$hash) {
$sum = round($_REQUEST['PAYMENT_AMOUNT'],2);
$id = (int)$_REQUEST["PAYMENT_ID"];
$db->Query("SELECT * FROM `db_pm_insert` WHERE `id`='$id'");
$db->Query("UPDATE db_pm_insert SET status = '1' WHERE id = '$id'");
if($db->NumRows() == 0){ echo 'Not founded';}
$row = $db->FetchArray();
$db->Query("DELETE FROM `db_pm_insert` WHERE `id`='$id'");
$user_id = $row["usid"];


$wmset = new wmset();
$marray = $wmset->GetSet($ik_payment_amount);

$a_t = intval($marray["t_a"]);
$b_t = intval($marray["t_b"]);
$c_t = intval($marray["t_c"]);
$d_t = intval($marray["t_d"]);
$e_t = intval($marray["t_e"]);

$db->Query("UPDATE db_users_b SET a_t = a_t + '$a_t', b_t = b_t + '$b_t', c_t = c_t + '$c_t', d_t = d_t + '$d_t', e_t = e_t + '$e_t',
last_sbor = '$lsb' WHERE id = '{$user_id}'");

$ik_payment_amount = $sum;
$user_id = $row["user_id"];

# Настройки
$db->Query("SELECT * FROM db_config WHERE id = '1' LIMIT 1");
$sonfig_site = $db->FetchArray();

$db->Query("SELECT user, referer_id FROM db_users_a WHERE id = '{$user_id}' LIMIT 1");
$user_ardata = $db->FetchArray();
$user_name = $user_ardata["user"];
$refid = $user_ardata["referer_id"];

# Зачисляем баланс
$serebro = sprintf("%.4f", floatval($sonfig_site["ser_per_wmr"] * $ik_payment_amount) );

$db->Query("SELECT insert_sum FROM db_users_b WHERE id = '{$user_id}' LIMIT 1");
$ins_sum = $db->FetchRow();

$serebro = intval($ins_sum <= 0.01) ? ($serebro + ($serebro * 1.00) ) : $serebro;
$add_tree = ( $ik_payment_amount >= 1499.99) ? 1 : 0;
$lsb = time();
$to_referer = ($serebro * 0.10);

$db->Query("UPDATE db_users_b SET money_b = money_b + '$serebro', e_t = e_t + '$add_tree', to_referer = to_referer + '$to_referer', last_sbor = '$lsb', insert_sum = insert_sum + '$ik_payment_amount' WHERE id = '{$user_id}'");



# Зачисляем средства рефереру и дерево
$add_tree_referer = ($ins_sum <= 0.01) ? ", a_t = a_t + 1" : "";
$db->Query("UPDATE db_users_b SET money_b = money_b + $to_referer, from_referals = from_referals + '$to_referer' {$add_tree_referer} WHERE id = '$refid'");

# Статистика пополнений
$da = time();
$dd = $da + 60*60*24*15;
$db->Query("INSERT INTO db_insert_money (user, user_id, money, serebro, date_add, date_del)
VALUES ('$user_name','$user_id','$ik_payment_amount','$serebro','$da','$dd')");

# Конкурс
$competition = new competition($db);
$competition->UpdatePoints($user_id, $ik_payment_amount);
#--------

# Обновление статистики сайта
$db->Query("UPDATE db_stats SET all_insert = all_insert + '$ik_payment_amount' WHERE id = '1'");
} else{ }
?>

NDF376 написал(а):
Несколько дней мучался с настройкой IPN (уведомления об оплате) для Okpay. В интернете нигде не нашел примеров или готовых скриптов, да и не многие системы принимают Okpay напрямую! Написал с нуля. Выкладываю в паблик сразу 3 IPN для Payeer, Okpay, Perfect Money - https://yadi.sk/d/9iKFHH3chETeV
Если есть вопросы - обращайтесь!

P.S. Надо еще брать из базы по данному номеру заказа сумму и сравнивать с полученной суммой, но тут у каждого сайта свое, так что тут сами. Если надо будет - помогу!
 
Последнее редактирование:
NDF376
Местный
Сообщения
50
Реакции
3
Ничего не понял. Возможно вы в форме оплаты не указали STATUS_URL! Вот пример формы:

<h3 class="title_section" style="text-align:center;">Подтверждение платежа</h3>
<form action="https://perfectmoney.com/api/step1.asp" method="POST">
<input type="hidden" name="PAYEE_ACCOUNT" value="Ваш кошелек">
<input type="hidden" name="PAYEE_NAME" value="Название проекта">
<input type="hidden" name="PAYMENT_ID" value="Уникальный id пополнения в вашей системе">
<input type="hidden" name="PAYMENT_AMOUNT" value="Сумма">
<input type="hidden" name="PAYMENT_UNITS" value="USD">
<input type="hidden" name="STATUS_URL" value="Ссылка на страницу обработчика">
<input type="hidden" name="PAYMENT_URL" value="Ссылка на страницу, куда будет переадресован покупатель после успешной оплаты">
<input type="hidden" name="PAYMENT_URL_METHOD" value="POST">
<input type="hidden" name="NOPAYMENT_URL" value="Ссылка на страницу, куда будет переадресован покупатель после неуспешной оплаты">
<input type="hidden" name="NOPAYMENT_URL_METHOD" value="POST">
<input type="hidden" name="BAGGAGE_FIELDS" value="">
<input type="hidden" name="SUGGESTED_MEMO" value="Примечание">
<div class="center" style="margin-top:-10px;">
Вы пополняете счет на <strong>'.$sum.'</strong> USD через <strong>Perfect Money</strong><br>
<input class="subm custom_submit" name="PAYMENT_METHOD" type="submit" value="Платёж подтверждаю">
</div>
</form>


Если поможет - напиши!
 
Последнее редактирование:
NDF376
Местный
Сообщения
50
Реакции
3
Обновил файл okresult.php, сделав более безопасным!
 
dred142
Участник
Сообщения
69
Реакции
23
указал! Но не начисляет средства и на баланс
NDF376 написал(а):
Ничего не понял. Возможно вы в форме оплаты не указали STATUS_URL! Вот пример формы:

<h3 class="title_section" style="text-align:center;">Подтверждение платежа</h3>
<form action="https://perfectmoney.com/api/step1.asp" method="POST">
<input type="hidden" name="PAYEE_ACCOUNT" value="Ваш кошелек">
<input type="hidden" name="PAYEE_NAME" value="Название проекта">
<input type="hidden" name="PAYMENT_ID" value="Уникальный id пополнения в вашей системе">
<input type="hidden" name="PAYMENT_AMOUNT" value="Сумма">
<input type="hidden" name="PAYMENT_UNITS" value="USD">
<input type="hidden" name="STATUS_URL" value="Ссылка на страницу обработчика">
<input type="hidden" name="PAYMENT_URL" value="Ссылка на страницу, куда будет переадресован покупатель после успешной оплаты">
<input type="hidden" name="PAYMENT_URL_METHOD" value="POST">
<input type="hidden" name="NOPAYMENT_URL" value="Ссылка на страницу, куда будет переадресован покупатель после неуспешной оплаты">
<input type="hidden" name="NOPAYMENT_URL_METHOD" value="POST">
<input type="hidden" name="BAGGAGE_FIELDS" value="">
<input type="hidden" name="SUGGESTED_MEMO" value="Примечание">
<div class="center" style="margin-top:-10px;">
Вы пополняете счет на <strong>'.$sum.'</strong> USD через <strong>Perfect Money</strong><br>
<input class="subm custom_submit" name="PAYMENT_METHOD" type="submit" value="Платёж подтверждаю">
</div>
</form>


Если поможет - напиши!
 
NDF376
Местный
Сообщения
50
Реакции
3
В Perfect Money в профиле добавили кошелек? Если да - то его статус должен быть верифицирован. Проверьте
 
dred142
Участник
Сообщения
69
Реакции
23
Статус самого профиля в PM верифицировать?
NDF376 написал(а):
В Perfect Money в профиле добавили кошелек? Если да - то его статус должен быть верифицирован. Проверьте
 
GLookin
Участник
Сообщения
296
Реакции
62
  • #10
Не обязательно его верифицировать. Я не верифицировал - всё зачисляется.
Но кодом поделиться не могу, самописный на продажу.
 
NDF376
Местный
Сообщения
50
Реакции
3
  • #11
Простите, ошибся, там нужно не кошелек добавить, а сайт.. И статус должен быть верифицирован. Если не помогает - напишите в ЛС
 
GLookin
Участник
Сообщения
296
Реакции
62
  • #12
NDF376 написал(а):
Простите, ошибся, там нужно не кошелек добавить, а сайт.. И статус должен быть верифицирован. Если не помогает - напишите в ЛС
У меня статус в PM кошельке не верифицированного аккаунта, но зачисления на счет поступают, серебро начисляется. Проблема, я думаю не в этом.
 
NDF376
Местный
Сообщения
50
Реакции
3
  • #13
GLookin написал(а):
У меня статус в PM кошельке не верифицированного аккаунта, но зачисления на счет поступают, серебро начисляется. Проблема, я думаю не в этом.
Вы не поняли: надо не аккаунт верифицировать, а сайт добавить. Его модераторы должны будут верифицировать.


Вот пример:
 
Overdos
Местный
Сообщения
36
Реакции
4
  • #14
В общем говорю сразу, я сам подымал это авто пополнение, там как минимум бд не хватает и вырезана самая главная часть кода, которая делает проверку. Так что включаем голову, и вуаля, всё будет готово, это от силы 10-15 минут.
 
APTEMOH
Участник
Сообщения
889
Реакции
256
Telegram
APTEMOH
  • #15
Perfecrt Money сложная ЭПС. Нам много подводных камней, в том числе и настройке их API.
Но я на этом собаку сьел :)
 
Сверху