автодонат payeer

ghang

Любопытный
Пользователь
19 Авг 2012
140
40
28
34
a-pw.ru
Т.к. waytopay закрылся, а не всех стоит лк за хз скока к, а также нет персонального wm (ну бывают же такие люди как я:angelic:), надо найти аналог, покапавшись наткнулся на payeer. % мизерный снимают с перевода, принимают много всего, но без карт и киви, а также wm соотв.

Регистрация тут (реф.ссылка)
Думаю как настроить магазин найдете в интернете, там всё просто, теперь скрипты:

Табличка в базе:
Код:
CREATE TABLE IF NOT EXISTS `WTP` (
  `payid` int(11) NOT NULL,
  `userid` int(11) NOT NULL,
  `summ` int(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Форма, на форму нужно отправить сумму GET параметром, т.е. форму делаем где надо:
HTML:
<form method="GET" action="pay.php" style="position:relative; left:50px; width: 420px; height:50px; background: url(https://payeer.com/bitrix/templates/difiz/img/quote-logo.png) no-repeat left center";>
<input type="text" name="sum" placeholder="сумма" style="height:42px; line-height:42px; font-size:20px;">
<input type="submit" id="subb" style="height:42px; line-height:42px; font-size:20px;" name="submit" value="GO!"></center>
</form>

И сама обработка (леньбыло приводить в порядок,так что как есть): pay.php
$_SESSION['log'] - это от лк, вообщем проверка авторизации, если у вас нет меняйте к примеру на $_SESSION['login']
$_SESSION['login'] - логин акка
$_SESSION['id'] - ид акка (самое важное)

PHP:
<?php
session_start();
if(!empty($_GET["sum"]) AND $_SESSION['log']==1)
{
if(!is_numeric($_GET["sum"])){$_GET["sum"]=100;};
$_GET["sum"]=round($_GET["sum"]);
	$config = array
(
	'MyHOST' => '127.0.0.1', //Хост MySQL
	'MyUser' => 'user', //Пользователь MySQL
	'MyPassword' => 'pass', //Пароль
	'MyDB' => 'pw', //База данных MySQL
);
	$mysqli = new mysqli($config['MyHOST'],$config['MyUser'],$config['MyPassword'],$config['MyDB']) or die("Not connect to mysql");
	$id=$mysqli->query("select * from `WTP` ")->num_rows+1;
	$mysqli->query("INSERT INTO `WTP`(`payid`, `userid`,`summ`) VALUES ('$id','{$_SESSION['id']}','{$_GET["sum"]}')") or die ("error");
 
$m_orderid=$id;
$m_shop = 'НОМЕР МАГАЗИНА';
$m_amount = $_GET["sum"].".00";
$m_curr = 'RUB';
$m_desc = base64_encode('Пожертвование от '.$_SESSION['login']);
$m_key = 'КЛЮЧ';
$arHash = array(
$m_shop,
$m_orderid,
$m_amount,
$m_curr,
$m_desc,
$m_key
);
$sign = strtoupper(hash('sha256', implode(':', $arHash)));
?>
<form name="pay" method="GET" action="//payeer.com/merchant/">
<input type="hidden" name="m_shop" value="<?=$m_shop?>">
<input type="hidden" name="m_orderid" value="<?=$m_orderid?>">
<input type="hidden" name="m_amount" value="<?=$m_amount?>">
<input type="hidden" name="m_curr" value="<?=$m_curr?>">
<input type="hidden" name="m_desc" value="<?=$m_desc?>">
<input type="hidden" name="m_sign" value="<?=$sign?>">
<input type="submit" name="m_process" value="send" />
</form>
<script>document.pay.submit()</script>
<?}?>

Теперь обработка платежа: result.php
PHP:
<?php
if (isset($_POST['m_operation_id']) && isset($_POST['m_sign']))
{
$m_key = 'КЛЮЧ';
$arHash = array($_POST['m_operation_id'],
$_POST['m_operation_ps'],
$_POST['m_operation_date'],
$_POST['m_operation_pay_date'],
$_POST['m_shop'],
$_POST['m_orderid'],
$_POST['m_amount'],
$_POST['m_curr'],
$_POST['m_desc'],
$_POST['m_status'],
$m_key);
$sign_hash = strtoupper(hash('sha256', implode(':', $arHash)));
if ($_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success'){
if(is_numeric($_POST['m_orderid'])){
$_POST['m_orderid']=round($_POST['m_orderid']);
 
$MySQL_HOST = "127.0.0.1";
$MySQL_USER = "ПАРОЛЬ";
$MySQL_USER_PASS = "ЛОГИН";
$MySQL_DB = "pw";
 
$Link = MySQL_Connect($MySQL_HOST, $MySQL_USER, $MySQL_USER_PASS) or die ("Can't connect to MySQL");
MySQL_Select_Db($MySQL_DB, $Link) or die ("Database ".$MySQL_DB." do not exists.");
$Query=MySQL_Query("select * from `WTP` where `payid`='{$_POST['m_orderid']}'");
if(mysql_num_rows($Query)>0){
$UserID=MySQL_result($Query, 0, 'userid');
$sum=MySQL_result($Query, 0, 'summ');
$rmone=round($_POST['m_amount']);
$sum=(int)$sum;
$rmone=(int)$rmone;
if($sum>0){
if($rmone==$sum){
MySQL_Query("UPDATE `WTP` SET `summ` = 0 WHERE `payid`='{$_POST['m_orderid']}'");  //обнулим наф,чтоб проблем не было
ТУТ ВАШИ ОПЕРАЦИИ $UserID - ИД АККА
$sum иль $rmone - сумма зачисления (без разницы)
 
};
};
};
};
};
echo $_POST['m_orderid'].'|success';
};
echo $_POST['m_orderid'].'|error';
};
?>

Также 2 файла надо при неудачной и удачной операции, в удачной делаем обновление лк монет (если на сессиях монеты), только надо делать с задержкой в 3-4 сек, просто ресульт выполняется медленее, чем редикт

для особо продвинутых: КЛЮЧ, НОМЕР МАГАЗИНА меняете на свои, ЛОГИН и ПАРОЛЬ - это от базы, меняется в 2х файлахвыше.


Итог,
делаем:
Код:
форму в лк //скрипт выше
pay.php //скрипт выше
result.php //скрипт выше
good.php //можно указать просто адрес лк, если не на сессиях
bad.php //пишем в файле не удалось, и т.п.


Самое важное:
вывод монеток - делается через ПЕРЕВОД, а не обмен, хотя в скрипте я сделал всё, чтобы проблем не возникло,просто при обмене сработает редикт на магазин - это, наверно, баг системы, незнаю, но сумма идет рандомная с подлинной подписью, если скрипт взять стандартный, то можно получить пополнение счета на 1-2к слкчайному игроку, если сделан обмен, мой быдлоскрипт от этого избавиться если что, но всё равно выводиться ПЕРЕВОДОМ, а не обменом!!!

Меговажно:
После установки и модерации, вы столкнетесь с тем, что принимают только валюты самой сиstемы, а пополнить с того же яндекса нельзя,пишет,что магазу нельзя прямым переводом.
Это решается через поддержку, дело в том, что ваш проект забракован сразу же из за ссылок скачать клиент, т.е. система работает с хайпами, пирамидами и прочем, гарантий, что у вас в "проге", т.е. в игре, не встроена покупка гранат за яндекс они определить не могут, поэтому сразу пишем:

"У меня проект чистый, т.е. он не имеет никакого отношения к хайпам, фермам, пирамидам и т.п.
Это приватный игровой сервер. Клиентской ММОРПГ игры Perfect World.
Оплата нужна только для приёма пожертвований, т.е. покупки товаров не осуществляется, обратного вывода соответственно нет."


Всё, вам должны подключить все возможные способы.
При проблемах с настройками скриптов, пишите мне помогу.
 
Последнее редактирование:
  • Like
Реакции: Clac

Vieraw

Администратор
Команда форума
Администратор
12 Май 2012
273
145
43
27
Весьма интересно. Вы проверяли на роботоспособность прежде, чем здесь размещать?
  • (
  • 'MyHOST' => '127.0.0.1', //Хост MySQL
  • 'MyUser' => 'user', //Пользователь MySQL
  • 'MyPassword' => 'pass', //Пароль
  • 'MyDB' => 'pw', //База данных MySQL
  • )
Где ; ?
  • echo $_POST['m_orderid'].'|error';
  • };
} лишняя, А так же после } в условиях ; ненужно ставить.
  • if($rmone==$sum){
  • if($rmone==$sum){
Не кажется ли вам это странным? А почему не сделать так?
PHP:
if($sum>0 && $rmone==$sum)
$mysqli = new mysqli($config['MyHOST'],$config['MyUser'],$config['MyPassword'],$config['MyDB']) or die("Not connect to mysql");

$Link = MySQL_Connect($MySQL_HOST, $MySQL_USER, $MySQL_USER_PASS) or die ("Can't connect to MySQL");
Не понятно почему используется разные расширения для работы с базой. А вы вкурсе что mysql_*:
1e7168715e3f5f84f64e6c962d3068e6.png
Писать про разницу == и ===, а так же двойных и одинарных кавычек не буду.
PHP:
MySQL_Query("UPDATE `WTP` SET `summ` = 0 WHERE `payid`='{$_POST['m_orderid']}'");  //обнулим наф,чтоб проблем не было
О каких проблемах речь?
 
  • Like
Реакции: Juzilkree

Пользователи онлайн

Сейчас на форуме нет ни одного пользователя.

Последние ресурсы

Статистика форума

Темы
3.838
Сообщения
21.197
Пользователи
7.601
Новый пользователь
hkuno