Баланс пользователя в приложении

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в Flash-приложениях (ActionScript)
Alexander
FL Team
FL Team
Сообщения: 186
Зарегистрирован: 15 окт 2009, 20:08

Баланс пользователя в приложении

Сообщение Alexander »

Подскажите, как сделать чтобы например в текстовом поле 'user_balance' отображался баланс приложения?

Покопошив руководство по api нашёл следующее
Пример запроса:

http://api.vkontakte.ru/api.php?api_id= ... ca256fa538



В данном случае API получает запрос secure.getAppBalance ("вернуть баланс голосов текущего приложения").

Пример ответа:

<?xml version="1.0" encoding="utf-8"?>
<response>
<balance>5000</balance>
</response>


Ответ по умолчанию приходит в формате XML в кодировке UTF-8.

Если же приходит сообщение об ошибке, то ответ мог бы выглядеть, например, следующим образом:

<error>
<error_code>4</error_code>
<error_msg>Incorrect signature</error_msg>
<request_params list="true">
<param><key>api_id</key><value>4</value></param>
<param><key>v</key><value>2.0</value></param>
<param><key>method</key><value>secure.getAppBalance</value></param>
<param><key>timestamp</key><value>1238714241</value></param>
<param><key>random</key><value>83962759</value></param>
<param><key>sig</key><value>7598d64720bb39544679f2ca256fa538</value></param>
</request_params>
</error>
Получилось что то вроде этого

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

<?
$api_id = '1679168'; // id приложения
$timestamp = time();
$v='2.0';
$random = rand(0,546546);
$secret = 'dsfdsfsdfdsfsfsdfsd'; // секрет
$method = 'secure.getAppBalance';

$sig = md5('api_id='.$api_id."method=".$method.'random='.$random.'timestamp='.$timestamp.'v='.$v.$secret);
echo $otvet=сonnect("http://api.vkontakte.ru/api.php?api_id=".$api_id."&v=".$v."&method=".$method."&timestamp=".$timestamp."&random=".$random."&sig=".$sig);
?>
Возможно код написан не правильно.

Подскажите кто нибудь как это реализовать... :o
Последний раз редактировалось Alexander 08 ноя 2009, 20:39, всего редактировалось 1 раз.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Баланс пользователя в приложении

Сообщение Александр »

Ну и работает? Я не проверял твой код.

Сам делаю с использованием VkApi.class.php

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

<?
require('VkApi.class.php');

$app_id = '1676336'; 					// id приложения
$api_secret = 'qwertyuiopasdfghjklzxcvbnm';	// Защищенный ключ с вкладки "Платежи"

function get_url($query) {
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $query);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_TIMEOUT, 10);
	return curl_exec($ch);
	curl_close($ch);
}

$api = new VkApiNode($app_id, $api_secret);
$query = $api->getBalance();
$user_balance = get_url($query);
echo $user_balance;

?>
И определись что ты хочешь узнать баланс пользователя (getBalance) или баланс приложения (getAppBalance)? Название темы и содержимое различается.

Чтобы отобразить в текстовом поле, надо обратиться через приложение к этому скрипту и вывести результат.
Alexander
FL Team
FL Team
Сообщения: 186
Зарегистрирован: 15 окт 2009, 20:08

Re: Баланс пользователя в приложении

Сообщение Alexander »

Я хочу узнать баланс пользователя в приложении.
Тьфу блин, это я искал не то
Alexander
FL Team
FL Team
Сообщения: 186
Зарегистрирован: 15 окт 2009, 20:08

Re: Баланс пользователя в приложении

Сообщение Alexander »

Александр писал(а):Чтобы отобразить в текстовом поле, надо обратиться через приложение к этому скрипту и вывести результат.
Меня собственно и интересует как обратится к скрипту и вывести результат.
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Баланс пользователя в приложении

Сообщение Александр »

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

var loader:URLLoader = new URLLoader();
var request:URLRequest=new URLRequest("ссылка на скрипт");
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);

function onComplete(event:Event):void {
	var loader:URLLoader=event.target as URLLoader;
	// как вывести результат зависит от того как ты обработаешь его в php скрипте, если оставишь только значение то так
	result_tf.text=loader.data;
	// а если получишь xml, то придется вытащить значение
}
Alexander
FL Team
FL Team
Сообщения: 186
Зарегистрирован: 15 окт 2009, 20:08

Re: Баланс пользователя в приложении

Сообщение Alexander »

Спасибо.
Alexander
FL Team
FL Team
Сообщения: 186
Зарегистрирован: 15 окт 2009, 20:08

Re: Баланс пользователя в приложении

Сообщение Alexander »

Если заходить на сервер в ручную вылазит это


Warning: Missing argument 1 for VkApiNode::getBalance(), called in /home/alexlab/public_html/balance.php on line 18 and defined in /home/alexlab/public_html/VkApi.class.php on line 117
113 Invalid user id api_id 1679168 format XML method secure.getBalance random 1751939922 timestamp 1257704148 uid v 2.0 sig сдесь сиг

Это нормално?
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Баланс пользователя в приложении

Сообщение Александр »

Alexander, а ошибку то прочитал? Документацию по использованию метода getBalance посмотрел?
Когда я подумал что тебе нужно узнать баланс пользователя, а не приложения, то я исправил getAppBalance на getBalance. А в getBalance нужно указать id пользователя getBalance(id). Ну а id нужно передать из приложения, например post запросом и получить в php скрипте. Аналогично этому http://flapps.ru/forum/topic10-20.html#p79
Alexander
FL Team
FL Team
Сообщения: 186
Зарегистрирован: 15 окт 2009, 20:08

Re: Баланс пользователя в приложении

Сообщение Alexander »

/ну значит я понял правильно..
Просто днски никак не перетащу, всё жду и жду...
Alexander
FL Team
FL Team
Сообщения: 186
Зарегистрирован: 15 окт 2009, 20:08

Re: Баланс пользователя в приложении

Сообщение Alexander »

Вот это ответ сервера приложению :

<br />
<b>Warning</b>: Missing argument 1 for VkApiNode::getBalance(), called in /home/alexlab/public_html/balance.php on line 18 and defined in <b>/home/alexlab/public_html/VkApi.class.php</b> on line <b>117</b><br />
<?xml version="1.0" encoding="utf-8"?>
<error>
<error_code>2</error_code>
<error_msg>Application is disabled. Enable your application or use test mode</error_msg>
<request_params list="true">
<param>
<key>api_id</key>
<value>1679168</value>
</param>
<param>
<key>format</key>
<value>XML</value>
</param>
<param>
<key>method</key>
<value>secure.getBalance</value>
</param>
<param>
<key>random</key>
<value>2139077985</value>
</param>
<param>
<key>timestamp</key>
<value>1257842991</value>
</param>
<param>
<key>uid</key>
<value/>
</param>
<param>
<key>v</key>
<value>2.0</value>
</param>
<param>
<key>sig</key>
<value>сдесь сиг</value>
</param>
</request_params>
</error>

Почему???
И ещё, как из таково ответа сграбить только то что находится между <balance></balance>
Ответить