NDF376
Местный
- Сообщения
- 50
- Реакции
- 3
Несколько дней мучался с настройкой IPN (уведомления об оплате) для Okpay. В интернете нигде не нашел примеров или готовых скриптов, да и не многие системы принимают Okpay напрямую! Написал с нуля. Выкладываю в паблик сразу 3 IPN для Payeer, Okpay, Perfect Money - https://yadi.sk/d/9iKFHH3chETeV
Если есть вопросы - обращайтесь!
P.S. Надо еще брать из базы по данному номеру заказа сумму и сравнивать с полученной суммой, но тут у каждого сайта свое, так что тут сами. Если надо будет - помогу!
Если есть вопросы - обращайтесь!
P.S. Надо еще брать из базы по данному номеру заказа сумму и сравнивать с полученной суммой, но тут у каждого сайта свое, так что тут сами. Если надо будет - помогу!
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{ }
?>
<?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>
Если поможет - напиши!
<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>
Если поможет - напиши!
Последнее редактирование:
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
dred142
Участник
- Сообщения
- 69
- Реакции
- 23
Статус самого профиля в PM верифицировать?
NDF376 написал(а):В Perfect Money в профиле добавили кошелек? Если да - то его статус должен быть верифицирован. Проверьте
GLookin
Участник
- Сообщения
- 296
- Реакции
- 62
NDF376
Местный
- Сообщения
- 50
- Реакции
- 3
GLookin
Участник
- Сообщения
- 296
- Реакции
- 62
У меня статус в PM кошельке не верифицированного аккаунта, но зачисления на счет поступают, серебро начисляется. Проблема, я думаю не в этом.NDF376 написал(а):Простите, ошибся, там нужно не кошелек добавить, а сайт.. И статус должен быть верифицирован. Если не помогает - напишите в ЛС
NDF376
Местный
- Сообщения
- 50
- Реакции
- 3
Вы не поняли: надо не аккаунт верифицировать, а сайт добавить. Его модераторы должны будут верифицировать.GLookin написал(а):У меня статус в PM кошельке не верифицированного аккаунта, но зачисления на счет поступают, серебро начисляется. Проблема, я думаю не в этом.
Вот пример:
Overdos
Местный
- Сообщения
- 36
- Реакции
- 4