ActionScript 3.0 (Adobe Flash CS5)
Понадобится свой сервер с поддержкой php и cURL.
Некоторым сложно разобраться с пошаговым руководством по Payments Api. В этом уроке, вы узнаете как можно принимать платежи в флэш приложении.
1. Создаём Новый документ Flash File (ActionScript 3.0)
Добавляем на сцену текстовое поле и называем его result_tf.
И кнопку votes_er.
2. Скачиваем APIConnection.zip
http://vkontakte.ru/source/APIConnection.zip
Папку vk из архива vk_api_connection\src\ кладем в папку с сохраненным fla.
3. Пишем код в приложении
Заходим в первый кадр И пишем код
Код: Выделить всё
import flash.display.Sprite;import flash.events.*;import vk.APIConnection;import vk.events.*; //Переменные var api_id:Number; var viewer_id:Number; var sid:String; var secret:String;//Заполняем переменные данными var flashVars:Object = stage.loaderInfo.parameters as Object;api_id = flashVars['api_id'];viewer_id = flashVars['viewer_id'];sid = flashVars['sid'];secret = flashVars['secret']; var VK:APIConnection = new APIConnection(flashVars);VK.api('getProfiles', { uids: flashVars['viewer_id']}, onProfileLoaded, onError);//Узнаем имя и фамилию пользователя function onProfileLoaded(data: Object):void{result_tf.text ='Привет ' + data[0]['first_name'] + ' ' + data[0]['last_name'] + ' ,это тестовое приложение в котором показан пример работы с payments Api';}//добавляем три слушателя событииVK.addEventListener('onOrderSuccess', onSuccess); //если все прошло удачноVK.addEventListener('onOrderCancel', onCanc); //если пользователь отменил передачуVK.addEventListener('onOrderFail', onError); //если произошла ошибка votes_er.addEventListener(MouseEvent.CLICK, function(event:MouseEvent) { //надатие на кнопкуVK.callMethod('showOrderBox', { type:'item',item:'item1'});//вызов окна перевода голосов ;type:'item' - окно покупки товара(возможно также окно вызова офферов или окно пополнения голосов),item:'item1'- номер товара})//три функции ,которые срабатывают при ://удачнои покупки function onSuccess(data: Object):void { result_tf.text = "Голоса переведены"; }//при отмене function onCanc(data: Object):void { result_tf.text = "Вы отменили перевод"; }//при ошибке function onError(data: Object):void { result_tf.text = data.error_msg; }
Приложение должно быть включено.
Без использования контейнера.
5. Подготовка серверной части к обработке платежных уведомлений
Надо реализовать обработку уведомлений от платежной системы ВКонтакте.А именно:
-Получение информации о товаре. ВКонтакте запрашивает информацию о товаре для его отображения в диалоге покупки.
-Изменение статуса заказа. В параметрах уведомления передается новый статус заказа. При статусе заказа chargeable необходимо оформить товар пользователю внутри приложения.
Вконтакте также дает пример обработчика уведомлений на языке PHP.
Им мы и воспользуемся.Я его немного изменил.
Так же нам понадобится создать пустой файл,который будет лежать в папке вместе с этим скриптом, назовем его file.txt
В него будут записываться id плательщика и id покупки.
Создадим скрипт ,который и будет указываться как адрес обратного вызова,ниже написано содержание этого скрипта
Код: Выделить всё
<?php header("Content-Type: application/json; encoding=utf-8"); $secret_key = ''; // Защищенный ключ приложения $input = $_POST; // Проверка подписи $sig = $input['sig']; unset($input['sig']); ksort($input); $str = ''; foreach ($input as $k => $v) { $str .= $k.'='.$v; } if ($sig != md5($str.$secret_key)) { $response['error'] = array( 'error_code' => 10, 'error_msg' => 'Несовпадение вычисленной и переданной подписи запроса.', 'critical' => true ); } else { // Подпись правильная switch ($input['notification_type']) { case 'get_item': // Получение информации о товаре $item = $input['item']; // наименование товара if ($item == 'item1') { $response['response'] = array( 'item_id' => 1, //id товара 'title' => '10 монеток', //наименование 'photo_url' => '', //фотография товара,если оставить поле пустым,то будет выведена иконка приложения 'price' => 1 //цена товара в голосах ); } break; case 'get_item_test': // Получение информации о товаре в тестовом режиме $item = $input['item']; if ($item == 'item1') { $response['response'] = array( 'item_id' => 1, //id товара 'title' => '10 монеток(test mode)', //наименование 'photo_url' => '', //фотография товара,если оставить поле пустым,то будет выведена иконка приложения 'price' => 1 //цена товара в голосах ); } break; case 'order_status_change': // Изменение статуса заказа if ($input['status'] == 'chargeable') { $order_id = intval($input['order_id']); $user_id = intval($input['user_id']);// Код проверки товара, включая его стоимость //Вконтакте может несколько раз отправлять уведомления типа Изменения статуса заказа //(с тем же order_id) и ответ должен в точности повторять ответ для исходного уведомления. $handle = fopen("file.txt","a+"); // ОТкрываем фаил,чтобы записать туда ид плтельщика и ид покупкиfwrite($handle,"\n".user_id."\n".$order_id); // Записываемfclose($handle); // Закрываем фаил $response['response'] = array( 'order_id' => $order_id, ); } else { $response['error'] = array( 'error_code' => 100, 'error_msg' => 'Передано непонятно что вместо chargeable.', 'critical' => true ); } break; case 'order_status_change_test': // Изменение статуса заказа в тестовом режиме if ($input['status'] == 'chargeable') { $order_id = intval($input['order_id']); $user_id = intval($input['user_id']); $handle = fopen("file.txt","a+"); // ОТкрываем фаил,чтобы записать туда ид плтельщика и ид покупкиfwrite($handle,"\n".$user_id."\n".$order_id); // Записываемfclose($handle); // Закрываем фаил $response['response'] = array( 'order_id' => $order_id, ); } else { $response['error'] = array( 'error_code' => 100, 'error_msg' => 'Передано непонятно что вместо chargeable.', 'critical' => true ); } break; } } echo json_encode($response); ?>
Ссылку на скрипт который у вас получился.
6. Тестирование приложения
Если у ваше приложение не проверено ,то платежи могут проходить только в тестовом режиме .
Для этого в Пункте Тестеры платежей выберите себя.
Как таковые голоса переводится не будут.Вы сможете только посмотреть то, что у вас получилось.
Если же ваше приложение прошло проверку,то пользователи смогут пополнять баланс приложения.
Исходник
Наверно это и все.
Задавайте вопросы ,буду пробовать на них отвечать