В этой статье я расскажу как сделать на сайте, средствами PHP автоматическую оплату по ВМ без аттестата продавца. Нам нужно: Любой WMID Аккаунт на digiseller.ru Знания PHP (Косвенные) Недавно потребовалось прикрепить к сайту оплату (автоматическую) и тут облом: нужен аттестат продавца. Меня это не смутило и я вспомнил о сервисе digiseller.ru, а именно о том, что там есть API. С помощью XML можно проверять оплату товара. Первым делом я сделал аккаунт, добавил новый товар с неограниченым количеством продаж и выставил цену. Так-же товаром был уникальный код, который и будет проверятся у нас на сайте. Получил ссылку: http://www.oplata.info/asp/pay_unit.asp?id_d=******* Добавил в панельке digiseller кошельки, авторизовал их и прикрепил. Попробовал оплатить 3 единицы товара и все прошло удачно. Работает так: На WMID покупателя высылается счет, который он оплачивает, а дальше digiseller делает все сам. На сайте я быстро сделал форму, сверху которой была ссылка на oplata.info для покупки уникального кода. Формой-же было поле, в которое вводится этот код, посылается запрос на digiseller и получаешь: Сумму оплаты и валюту. Вот скрипт приема купленного с digiseller кода и обработки: PHP: if (isset($_POST['xcode'])) { // Если код передается скрипту с именем xcode if (strlen($_POST['xcode']) == 16) { // Код на digiseller равен 16 символам $code = $_POST['xcode']; // Вводим переменную с кодом function _GetAnswer($address, $xml){ $ch = curl_init($address); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); $result=curl_exec($ch); return $result; } $sign = md5("id продавца:$code:password от продавца"); // Тут заполняем в соответствии с своими данными $xml = '<?xml version="1.0" encoding="windows-1251"?> <digiseller.request> <id_seller>тут твой id</id_seller> <unique_code>'.$code.'</unique_code> <sign>'.$sign.'</sign> </digiseller.request>'; $answer=_GetAnswer("http://shop.digiseller.ru/xml/check_unique_code.asp", $xml); $xmlres = simplexml_load_string($answer); function object2array($object) { return @json_decode(@json_encode($object),1); } $xmlres = object2array($xmlres); // переводим XML в массив if ($xmlres['retdesc'] == "не найден unique_code (код ошибки 1)") { // проверяем, есть ли вообще такой код echo "Код не найден"; } else { $type = $xmlres['type_curr']; // получаем валюту (WMZ, WMR, WMU) $amount = $xmlres['amount']; // получаем сумму if ($type == "WMR") { $amount = $amount/30; // тут меняете курс рубля на свой } if ($type == "WMU") { $amount = $amount/8; // тут курс гривны на свой } $amount = round($amount,3); $inv = $xmlres['inv']; $date = date('l jS \of F Y h:i:s A'); $query = mysql_query("SELECT * FROM pays WHERE inv='$inv'"); // pays - таблица с оплатами if (mysql_num_rows($query) == 0) { // проверяем, был ли использован код $login = "логин пользователя"; $query = mysql_query("INSERT INTO pays (inv, amount, date, login) VALUES ('$inv', '$amount', '$date', '$login')") or die("MySQL ERROR: ".mysql_error());; $balance = mysql_query('select * from users where login = "'.$login.'" limit 0,1') or die("MySQL ERROR: ".mysql_error());; // получаем текущий баланс пользователя $balance = mysql_fetch_array($balance); $balance = $balance['balance']; $amount = $balance + $amount; // прибавляем $query = mysql_query("UPDATE users SET balance='$amount' WHERE login='".$login."'") or die("MySQL ERROR: ".mysql_error());; echo "Счет пополнен! Редирект..."; echo '<script language = \'javascript\'> var delay = 2000; setTimeout("document.location.href=\'\/\'", delay); </script>'; } else { echo "Код уже был использован"; } } } else { echo "<b>Введите правильный код!</b>"; } } ВАЖНО! После того как получили информацию и обновили баланс клиента - создайте базу с кодами, поскольку ввести один и тот-же код можно несколько раз и баланс соответственно пополнится несколько раз. (В скрипте это реализовано) С Вами был ИдиЗаМной! Бросил в тебя веником
FollowMe, ничего нового не узнал, но молодец, что отписал. ну это не сравнить с функциями Merchanta конечно Это сойдет для продажи icq номеров допустим или ключей активаций, но больше не для чего существенного
Помогите разобраться.. Как использовать этот скрипт? Куда его вставлять? id продавца - регистрационный номер?
Уважаемый продавец! Для осуществления продажи ваших товаров через собственный магазин вам необходимо до 20.12.2011 получить на сайте центра аттестации аттестат не ниже начального (желательно персональный) и внести соответствующие изменения в ваши платежные реквизиты. В противном случае, ваши товары, выставленные на продажу в собственном магазине после указанной даты, не будут доступны для покупки. Данное ограничение касается только тех товаров, у которых в разделе «Товары > Список» в графе «торговая площадка» указан «Мой магазин». Другими словами товары, одновременно размещенные на торговой площадке и в собственном магазине, под данное ограничение не попадают.
там нужно давать доверенность к своему кошельку? что бы они могли выводить средства с твоего кошелька?
Есть вариант поинтересней, приём напрямую на кошелек через Выписку счета без аттестата с помощью http://forum.antichat.ru/thread403704.html