Настроить механизм покупки валюты в IFrame приложении

Если вы хотите получить что-то готовое и бесплатно, то пишите в этом разделе.
Roman99
Сообщения: 52
Зарегистрирован: 25 сен 2012, 09:56

Настроить механизм покупки валюты в IFrame приложении

Сообщение Roman99 »

Здравствуйте. Хотелось бы узнать, как настроить механизм покупки валюты в IFrame приложении. При клике на кнопку купить - предлагалось списать голос, и прибавить к значению в базе данных +1000 монет.
Помогите пожалуйста. :D :D :D. Если можно, то кодом.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: По поводу покупки валюты.

Сообщение Alazaur »

Как сделать "с чистого листа" долго разжевывать. Посмотрите здесь на форуме есть уроки.

Могу показать как сделать, если подключить вот этот класс http://flapps.ru/forum/post42616.html#p42616

HTML:

Код: Выделить всё

<html>    <head>         <script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>        <script type="text/javascript">            VK.addCallback('onOrderSuccess', function(order_id){alert("Платеж "+order_id+" успешно проведен");});            VK.addCallback('onOrderCancel', function(order_id){alert("Пользователь отменил покупку");});            VK.addCallback('onOrderFail', function(order_id){alert("При проведении платежа возникла ошибка");});            function bymoney(count){VK.callMethod('showOrderBox', { type:'item',item:'money_'+count});}        </script>    </head>    <body>        <a href="#" onclick="bymoney(10)">Купить 10 монет</a>        <a href="#" onclick="bymoney(20)">Купить 20 монет</a>    </body></html>
Серверный скрипт, адрес которого надо указать в настройках приложения:

Код: Выделить всё

<?php    require_once("Payments.php"); //Подключаем класс    header("Content-Type: text/html; charset=utf-8"); //Устанавливаем кодировку    $secret_key = "fd6767hjhkdfjhf444"; //Секретный ключ приложения    $items = array(    array('item_name'=>'money_10', 'item_title'=>'Десять монет', 'item_price'=>1, 'money'=>10),    array('item_name'=>'money_20', 'item_title'=>'Двадцать монет', 'item_price'=>2, 'money'=>20)    );    $payments = new Payments($secret_key, $items);    $payments->process($_POST, 'handler');        function handler($data)    {        //Добавление монет пользователю. Подключение к БД я опустил полагаю вы знаете как его сделать        if(mysql_query("UPDATE users SET money = money + " . $data['item']['money'] . " WHERE userid = " . $data['request']['user_id'])) return $data['request']['order_id'];        else return FALSE;    }?>
Не проверял, но должно работать. Здесь я показал самую простую реализацию, но рекомендую дополнительно сделать учет заказов и перед тем как добавлять пользователю денег проверять не было ли такого заказа ранее. А то мало-ли всякое бывает, ответ до ВК с первого раза не дойдет и покупка продублируется.
Roman99
Сообщения: 52
Зарегистрирован: 25 сен 2012, 09:56

Re: По поводу покупки валюты.

Сообщение Roman99 »

Может я что-то не так сделал, может и вправду не работает, но при клике на ссылку, сначала долго грузится Ожидание информации о товаре, а потом При проведении платежа возникла ошибка. Ваш запрос не был обработан. Попробуйте повторить его позднее.
Лог платежных уведомлений
Дата Режим Тип Текст
Тестовый Ответ п»їп»ї{"response":{"item_id":null, "title":"Десять монет", "price":1, "photo_url":null}}<style type="text/css"> #follow1{ margin: 0px; z-index: 2; position: absolute; top: 0px; right: 0px;} </style> <div id="follow1"> </div> <a href="http://мойсайт.ru/" target="_blank"></a>

Дата Режим Тип Текст
Тестовый Запрос app_id=1111&item=money_10&lang=ru_RU&notification_type=get_item_test&order_id=109728&receiver_id=1111111&user_id=1111111

и примерно так во всех, только там еще 20 монет. Что не работает??? :?: :?: :?:


Сделал вот так

Код: Выделить всё

<?php //Прописал переменные для коннекта с базой    require_once("Payments.php"); //Подключаем класс    header("Content-Type: text/html; charset=utf-8"); //Устанавливаем кодировку    $secret_key = "fd6767hjhkdfjhf444"; //Секретный ключ приложения    $items = array(    array('item_name'=>'money_10', 'item_title'=>'Десять монет', 'item_price'=>1, 'money'=>10),    array('item_name'=>'money_20', 'item_title'=>'Двадцать монет', 'item_price'=>2, 'money'=>20)    );    $payments = new Payments($secret_key, $items);    $payments->process($_POST, 'handler');        function handler($data)    {      mysql_connect($db_host, $db_user, $db_password) or die (mysql_error());      mysql_select_db($db_name) or die (mysql_error());      mysql_query("SET NAMES 'utf8'");              if(mysql_query("UPDATE users SET money = money + " . $data['item']['money'] . " WHERE userid = " . $data['request']['user_id'])) return $data['request']['order_id'];        else return FALSE;    }?>
Кстати 1 код html вставил в файл где выводится кол-во монет. Файл php. Я думаю может поэтому.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: По поводу покупки валюты.

Сообщение Alazaur »

откуда у вас в ответе сервера html
Ответ п»їп»ї{"response":{"item_id":null, "title":"Десять монет", "price":1, "photo_url":null}}<style type="text/css"> #follow1{ margin: 0px; z-index: 2; position: absolute; top: 0px; right: 0px;} </style> <div id="follow1"> </div> <a href="http://мойсайт.ru/" target="_blank"></a>
В серверном скрипте кроме вышеуказанного ничего не должно быть. HTML отдельно в другом файле.
И вот это п»їп»ї намекает, что у вас файлы с серверным скриптом и/или c моим классом в неправильной кодировке. пересохраните их в utf8.
Roman99
Сообщения: 52
Зарегистрирован: 25 сен 2012, 09:56

Re: По поводу покупки валюты.

Сообщение Roman99 »

Это у меня написано в логе платежных уведомлений. Кодировка правильная. Переделал в отдельный файл, но все тоже самое. Ожидание. :cry: :cry: :cry:. И вот ещё что: когда я писал полный путь к классу Payments.php он возвращал, что он не подключается. Вероятно по этому он и не работает. Попробовал прописать неполный и положил их в одну директорию, но все одно и тоже, но возвращает все тотже ответ с непонятными буквами вначале. Я не знаю что делать. Помогите пожалуйста. :P :P :P
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: По поводу покупки валюты.

Сообщение Alazaur »

В приведенном вами логе

Код: Выделить всё

{"response":{"item_id":null, "title":"Десять монет", "price":1, "photo_url":null}}
Это правильный ответ скрипта, он работает, и класс подключен нормально. Проблема из-за того что с нужным ответом цеплялся html и п»їп»ї. HTML вы говорите уже убрали.
А вот это п»їп»ї очень похоже на BOM сигнатуру. Видимо у вас файл сохранен в UTF8 с BOM. А нужно без нее. Воспользуйтесь нормальным редактором. Например Notepad++. Там в кодировках есть буквально такое: "Кодировать в UTF-8 без BOM"
Roman99
Сообщения: 52
Зарегистрирован: 25 сен 2012, 09:56

Re: По поводу покупки валюты.

Сообщение Roman99 »

Хорошо сейчас попробую. ;) ;) ;)
Roman99
Сообщения: 52
Зарегистрирован: 25 сен 2012, 09:56

Re: По поводу покупки валюты.

Сообщение Roman99 »

Да вы были правы на счет кодировки. Скачал Notepad++ и изменил. Но все тоже самое. Все непонятные буквы исчезли (в начале), но html остался. Я думаю все из-за того что сервер бесплатный. И после выполнения скрипта он внизу обязательно приписывает ссылку на главный сайт. Отсюда и html. И я так подозреваю что он у меня работать не будет. :D :D :D

Вот что он мне в последний раз вернул

Код: Выделить всё

{"response":{"item_id":null, "title":"Десять монет", "price":1, "photo_url":null}}<style type="text/css"> #follow1{ margin: 0px; z-index: 2; position: absolute; top: 0px; right: 0px;} </style> <div id="follow1"> </div> <a href="http://myfreehosting.ru/" target="_blank"> myFREEhosting.ru :)</a>
А вот это вот </style> <div id="follow1"> </div> <a href="http://myfreehosting.ru/" target="_blank"> myFREEhosting.ru :)</a> он приписывает сам (сервер). Подскажите будет работать или нет???
Casperovskii
Сообщения: 429
Зарегистрирован: 22 июн 2012, 17:50

Re: По поводу покупки валюты.

Сообщение Casperovskii »

Поидее, контакт интересует только объект {response}, а что там дальше, его не волнует. Поэтому должно работать.
Alazaur
Разработчик
Разработчик
Сообщения: 1001
Зарегистрирован: 16 окт 2011, 20:25

Re: По поводу покупки валюты.

Сообщение Alazaur »

Неа, скорее всего не будет работать, ВК просто не распарсит входящую строку в объект.
Ответить