Настроить механизм покупки валюты в IFrame приложении
Настроить механизм покупки валюты в IFrame приложении
Здравствуйте. Хотелось бы узнать, как настроить механизм покупки валюты в IFrame приложении. При клике на кнопку купить - предлагалось списать голос, и прибавить к значению в базе данных +1000 монет.
Помогите пожалуйста. . Если можно, то кодом.
Помогите пожалуйста. . Если можно, то кодом.
Re: По поводу покупки валюты.
Как сделать "с чистого листа" долго разжевывать. Посмотрите здесь на форуме есть уроки.
Могу показать как сделать, если подключить вот этот класс http://flapps.ru/forum/post42616.html#p42616
HTML:
Серверный скрипт, адрес которого надо указать в настройках приложения:
Не проверял, но должно работать. Здесь я показал самую простую реализацию, но рекомендую дополнительно сделать учет заказов и перед тем как добавлять пользователю денег проверять не было ли такого заказа ранее. А то мало-ли всякое бывает, ответ до ВК с первого раза не дойдет и покупка продублируется.
Могу показать как сделать, если подключить вот этот класс 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; }?>
Re: По поводу покупки валюты.
Может я что-то не так сделал, может и вправду не работает, но при клике на ссылку, сначала долго грузится Ожидание информации о товаре, а потом При проведении платежа возникла ошибка. Ваш запрос не был обработан. Попробуйте повторить его позднее.
Лог платежных уведомлений
Дата Режим Тип Текст
Тестовый Ответ п»їп»ї{"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¬ification_type=get_item_test&order_id=109728&receiver_id=1111111&user_id=1111111
и примерно так во всех, только там еще 20 монет. Что не работает???
Сделал вот так
Кстати 1 код html вставил в файл где выводится кол-во монет. Файл php. Я думаю может поэтому.
Лог платежных уведомлений
Дата Режим Тип Текст
Тестовый Ответ п»їп»ї{"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¬ification_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; }?>
Re: По поводу покупки валюты.
откуда у вас в ответе сервера html
И вот это п»їп»ї намекает, что у вас файлы с серверным скриптом и/или c моим классом в неправильной кодировке. пересохраните их в utf8.
В серверном скрипте кроме вышеуказанного ничего не должно быть. 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>
И вот это п»їп»ї намекает, что у вас файлы с серверным скриптом и/или c моим классом в неправильной кодировке. пересохраните их в utf8.
Re: По поводу покупки валюты.
Это у меня написано в логе платежных уведомлений. Кодировка правильная. Переделал в отдельный файл, но все тоже самое. Ожидание. . И вот ещё что: когда я писал полный путь к классу Payments.php он возвращал, что он не подключается. Вероятно по этому он и не работает. Попробовал прописать неполный и положил их в одну директорию, но все одно и тоже, но возвращает все тотже ответ с непонятными буквами вначале. Я не знаю что делать. Помогите пожалуйста.
Re: По поводу покупки валюты.
В приведенном вами логе
Это правильный ответ скрипта, он работает, и класс подключен нормально. Проблема из-за того что с нужным ответом цеплялся html и п»їп»ї. HTML вы говорите уже убрали.
А вот это п»їп»ї очень похоже на BOM сигнатуру. Видимо у вас файл сохранен в UTF8 с BOM. А нужно без нее. Воспользуйтесь нормальным редактором. Например Notepad++. Там в кодировках есть буквально такое: "Кодировать в UTF-8 без BOM"
Код: Выделить всё
{"response":{"item_id":null, "title":"Десять монет", "price":1, "photo_url":null}}
А вот это п»їп»ї очень похоже на BOM сигнатуру. Видимо у вас файл сохранен в UTF8 с BOM. А нужно без нее. Воспользуйтесь нормальным редактором. Например Notepad++. Там в кодировках есть буквально такое: "Кодировать в UTF-8 без BOM"
Re: По поводу покупки валюты.
Хорошо сейчас попробую.
Re: По поводу покупки валюты.
Да вы были правы на счет кодировки. Скачал Notepad++ и изменил. Но все тоже самое. Все непонятные буквы исчезли (в начале), но html остался. Я думаю все из-за того что сервер бесплатный. И после выполнения скрипта он внизу обязательно приписывает ссылку на главный сайт. Отсюда и html. И я так подозреваю что он у меня работать не будет.
Вот что он мне в последний раз вернул
А вот это вот </style> <div id="follow1"> </div> <a href="http://myfreehosting.ru/" target="_blank"> myFREEhosting.ru </a> он приписывает сам (сервер). Подскажите будет работать или нет???
Вот что он мне в последний раз вернул
Код: Выделить всё
{"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>
-
- Сообщения: 429
- Зарегистрирован: 22 июн 2012, 17:50
Re: По поводу покупки валюты.
Поидее, контакт интересует только объект {response}, а что там дальше, его не волнует. Поэтому должно работать.
Re: По поводу покупки валюты.
Неа, скорее всего не будет работать, ВК просто не распарсит входящую строку в объект.