- Регистрация
- 10 Май 2007
- Сообщения
- 1.332
- Реакции
- 1.237
- Автор темы
- Заблокирован
- #1
КАК идея. Может и было такое....
Прием яндекс денег без api - оплата заказа в магазине. Чтоб официально не подключаться к яндексу и прием средств записывался в бд. Через парсер, CURL!!!
Регаем почту на яндексе + подключаем яндекс деньги (платежный пасс храним как ппц как)
Создаем файл авторизации в яндексе
123.php привязываем его к крону на каждые 12 часов.
Затем создаем файл
приема денег и запись в БД
index.php
где <input name=receiver value=410011255078125 type=hidden> ваш кошель
где $orders - берется из заказа, т.е. номер заказа это д/быть как назначение платежа
Это парсер приема денег в яше с записью дальнейшей в бд
Следовательно в назначении должен писаться № $orders (пример № 706)
Эти данные спарсиваются и записываются в БД
И изначально в магазине данные о заказе записываются и присваивается как обычно статус в обработке
Затем необходимо сделать сверку по сумме по дате (времени с разбегом не более 5 минут) и назначении платежа.
Если все сходится - то товар отдается покупателю или статус меняет на проплачено
Как-то так, напильником обработать))) На коленке накидывал все...
и запускать.
Прием яндекс денег без api - оплата заказа в магазине. Чтоб официально не подключаться к яндексу и прием средств записывался в бд. Через парсер, CURL!!!
Регаем почту на яндексе + подключаем яндекс деньги (платежный пасс храним как ппц как)
Создаем файл авторизации в яндексе
123.php привязываем его к крону на каждые 12 часов.
PHP:
<?php
$url = "http://passport.yandex.ru/passport?mode=auth"; //УРЛ, куда отправлять данные
/*
Переменные, которые мы будет отправлять Яндексу в виде POST запроса:
*/
$login = 'lloggggggin'; //Логин к почте
$passwd = 'passssss'; //Пароль к почте
$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/555/cookies.txt'; //Полный путь до файла, где будем хранить куки
$idkey = '3121235564020nVDfxvth2'; //Хрен знает что
$retpath = 'https://money.yandex.ru/'; //Откуда мы пришли на страницу авторизации
$timestamp = ''; //Хрен знает что
$twoweeks = 'yes'; //Две недели какие-то
$In = 'Войти'; //Кнопка входа
/*
Функция:
*/
function auth($url) {
global $user_cookie_file, $idkey, $retpath, $timestamp, $login, $passwd, $twoweeks, $In; // Получаем все POST данные
/*
Небольшая прелюдия с инифиализацией cURL и прочей шулухой
*/
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file); //Куки раз
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file); //Куки два
curl_setopt($ch, CURLOPT_POST,1); //Будем отправлять POST запрос
/*
Формируем и отправляем тот самый POST запрос.
Как видите, это простая строка, мало чем отличающаяся от GET.
*/
curl_setopt($ch, CURLOPT_POSTFIELDS,"idkey=$idkey&retpath=$retpath×tamp=$timestamp&login=$login&passwd=$passwd&twoweeks=$twoweeks&In=$In");
$html = curl_exec($ch);
curl_close($ch);
return $html; //Возвращаем ответ Яндекса
}
auth($url); // Авторизируемся.
?>
Затем создаем файл
приема денег и запись в БД
index.php
где <input name=receiver value=410011255078125 type=hidden> ваш кошель
PHP:
<style type="text/css">#navbar-iframe { display:block }html, body {font: normal 12px Tahoma;color: #333;}a {outline: none;text-decoration: none;}div#wrap {width: 800px;margin: 50px auto;}img {border: 0px;}.b-widget-commercial{background: #fff 0 bottom repeat-x;background-size: 10px 100%;border-radius: 8px;box-shadow: 0 1px 3px #999;margin: 2px 3px 4px;padding: 20px;font-family: Arial, sans-serif;font-size: 13px;width:320px;height: 140px;}
</style>
<div class=b-widget-commercial>
<form method=POST target="_top" action="https://money.yandex.ru/quickpay/confirm.xml">
<input name=receiver value=410011255078125 type=hidden>
<input name=FormComment value="$orders" type=hidden>
<input name=short-dest value="$orders" type=hidden>
<input name=writable-targets value=false type=hidden>
<input name=writable-sum value=true type=hidden>
<input name=comment-needed value=false type=hidden>
<table><tbody>
<tr>
<td>
<label>Назначение платежа:
</label>
</td>
<td>
<div style="text-align:left;">Оплата заказа №'$orders'</div>
<input name=targets value="$orders" type=hidden>
</td>
</tr>
<tr>
<td>
<label>Сумма:
</label>
</td>
<td>
<div style="width: 60px;">
<input style="text-align: right;" data-type=number name=sum type=text>
</div>
<span>в рублях.
</span>
</td>
</tr>
<tr>
<td style="text-align: right;"><a target="_blank" href="https://money.yandex.ru/"><img src="images/ym_logo.gif" alt="Yandex.Money"></a>
</td>
<td>
<span>
<input name=submit-button value="Оплатить" type=submit>
</span>
</td>
</tr></tbody>
</table>
</form>
</div>
где $orders - берется из заказа, т.е. номер заказа это д/быть как назначение платежа
Это парсер приема денег в яше с записью дальнейшей в бд
PHP:
<?php
$uas = array(
//Chrome
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13",
"Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/532.9 (KHTML, like Gecko) Chrome/5.0.307.9 Safari/532.9",
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.1 (KHTML, like Gecko) Chrome/6.0.437.3 Safari/534.1",
//IE
"Mozilla/4.0 (compatible; MSIE 6.0; MSN 2.5; Windows 98)",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)",
"Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022)",
//Opera
"Opera/9.02 (Windows NT 5.1; U; en)",
"Opera/10.00 (Windows NT 6.0; U; en) Presto/2.2.0",
"Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.5.24 Version/10.52"
);
$head = array(
'Host: slil.ru',
'Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'Accept-Language: en-us,en;q=0.5',
'Accept-Encoding: gzip,deflate',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7',
'Keep-Alive: 300',
'Connection: keep-alive'
);
function browser($url)
{
$url = "https://money.yandex.ru/history-in.xml?show-archive-records=true";
$user_cookie_file = $_SERVER['DOCUMENT_ROOT'].'/555/cookies.txt'; //Полный путь до файла, где будем хранить куки
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// не проверять SSL сертификат
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
// не проверять Host SSL сертификата
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $uas[rand(0, count($uas)-1)]);
curl_setopt($ch, CURLOPT_COOKIEFILE, $user_cookie_file);
curl_setopt($ch, CURLOPT_COOKIEJAR, $user_cookie_file);
$html = curl_exec($ch);
curl_close($ch);
return $html;
}
preg_match_all('~<td[^>]*?nowrap[^>]*?class="summ summ-incoming-payment"[^>]*?>(.*?)</td>~is', browser($url), $money);
echo "<table><tr><td valign='top'><b>Сумма перевода</b><br />";
print implode('<br />', array_slice($money[1], 0, 12));
preg_match_all( '~</td>\s*<td[^>]*?nowrap[^>]*?class="history-date-td"[^>]*?>(.*?)</td>~is', browser($url), $data);
echo "</td><td valign='top'> </td><td valign='top'><b>Дата перевода</b><br />";
print implode('<br />', array_slice($data[1], 0, 12));
preg_match_all( '~\s*?class="payment-name-link" style=""[^>]*?>(.*?)</a></td>~is', browser($url), $order);
echo "</td><td valign='top'> </td><td valign='top'><b>Назначение</b><br />";
print implode('<br />', array_slice($order[1], 0, 12));
echo "</td></tr></table>";
?>
Следовательно в назначении должен писаться № $orders (пример № 706)
Эти данные спарсиваются и записываются в БД
PHP:
<?
mysql_connect("localhost", "root_db", "pass")
or die ("<FONT COLOR=\"#FF0000\"><B>ОШИБКА:</B></FONT> Невозможно соединиться с базой данных.");
mysql_select_db("name_db")
or die ("<FONT COLOR=\"#FF0000\"><B>ОШИБКА:</B></FONT> Базы данных не существует.");
mysql_query("SET NAMES cp1251");
$out_summ = $_REQUEST["LMI_PAYMENT_AMOUNT"]; //сумма перевода
$purse = $_REQUEST["LMI_PAYER_PURSE"]; // кошель того кто перевел
$odate = $_REQUEST["LMI_SYS_TRANS_DATE"]; // дата перевода
$sql = mysql_query("INSERT INTO `orders` (out_summ, purse, odate) VALUES ('".$out_summ."', '".$purse."', '".$odate."')");
echo "OK$inv_id\n";
?>
И изначально в магазине данные о заказе записываются и присваивается как обычно статус в обработке
Затем необходимо сделать сверку по сумме по дате (времени с разбегом не более 5 минут) и назначении платежа.
Если все сходится - то товар отдается покупателю или статус меняет на проплачено
Как-то так, напильником обработать))) На коленке накидывал все...
и запускать.