Работа с Payments API.(as3,php)

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!
Аватара пользователя
112
Модератор
Модератор
Сообщения: 2215
Зарегистрирован: 02 фев 2010, 21:53

Re: Работа с Payments API.(as3,php)

Сообщение 112 »

XELAD писал(а):Представим ситуацию, что это всё связано с БД, в №1 будут вноситься заказы, в №2 (там, где сохранение игроков) будут изменено кол-во монет на счету.
Как я понимаю:
1) Новую запись в БД №1 нужно создавать при case 'get_item'
- Внести user_id, item, order_id, а также app_order_id в виде счетчика. ПЛЮС одна графа, где мы укажем, сколько уведомлений пришло от ВК (подробности ниже), сейчас укажем ноль.
2) При case 'order_status_change' найти в БД №1 строку с теми же user_id, item, order_id....
Вспоминаем, что ВК может несколько раз отправлять уведомления типа Изменения статуса заказа с тем же order_id, смотрим на счетчик в той самой графе. И только если он равен нулю, прибавляем монеток в БД №2! И увеличиваем счетчик в той графе.
Всё это сделано, чтобы при каждом таком уведомлении от ВК, монеты не прибавлялись.
А если мы не находим такую запись в БД №1, то выдаем критическую ошибку.
3) В самом flash получаем событие onOrderSuccess, и загружаем данные пользователя из БД №2 для получения актуальной информации.

Поправьте меня, если я не прав, и если всё намного проще :)
Да вроде бы так :)
Если проще делать,то я бы у себя убрал 3 пункт,ведь допустим при самом загрузке приложения у юзера была 100 монет ,и приложение эти данные при загрузке получило,юзер решил нажать на кнопку купить 50 монет.На сервере вы в бд добавите +50 монет.После того ,как сработает onOrderSuccess вы можете изменить значения монет в самом приложении(в смысле в самом клиенте) (добавить 50),без лишнего запроса к серверу ,ведь вы и так знаете сколько монет купил юзер,тем более если вдруг даже onOrderSuccess сработает несколько раз,то значение измениться в самом клиенте ,а не на сервере и юзер ничего не сможет сделать с теми монетами,которые ему вдруг зачислились в самом клиенте (ну если у вас конечно ,все покупки выполняются через сервер ,а не в самом клиенте) :)
Ну вы меня поняли :D
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Работа с Payments API.(as3,php)

Сообщение agni »

не пойму, почему не работает
при запуске приложения выдает надпись: "....то тестовое приложение в котором показан пример работы с payments Api"
но
при нажатии на кнопку выдает контактовское окно: "Ожидание информации о товаре.."
потом, почти сразу: другое контактовское окно: "Ошибка
Ваш запрос не был обработан. Попробуйте повторить его позднее."
и всё
судя по Charles с адреса обратного вызова, который указан, на приложение ответ не приходит,
но в Логе платежных уведомлений присутствует запись {"response":{"item_id":1, "title":null, "photo_url":"", "price":1}}
подскажите, где ошибка порылась
почему ответ не принимает?
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Работа с Payments API.(as3,php)

Сообщение agni »

всё работает, если в файле пхп кириллицу заменить на латиницу
видимо, проблема на серверной стороне
Serge
WEB Team
WEB Team
Сообщения: 520
Зарегистрирован: 04 мар 2011, 21:55

Re: Работа с Payments API.(as3,php)

Сообщение Serge »

agni писал(а):всё работает, если в файле пхп кириллицу заменить на латиницу
видимо, проблема на серверной стороне
Видимо, файлы надо в UTF-8 сохранить
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Работа с Payments API.(as3,php)

Сообщение agni »

да, так и сделал, спасибо
Аватара пользователя
Abarmotina
Сообщения: 469
Зарегистрирован: 21 апр 2012, 19:34

Re: Работа с Payments API.(as3,php)

Сообщение Abarmotina »

Спасибо!Дошло дело до Payments API,заглянул в официальную документацию,и некоторые вещи были не понятны...Ну как всегда обратился к flapps.ru,и нашёл этот топик.В нём вполне внятно описано,спасибо! :)
add0295
Сообщения: 19
Зарегистрирован: 09 авг 2011, 14:46

Re: Работа с Payments API.(as3,php)

Сообщение add0295 »

Почему у меня вот такая ошибка:

ReferenceError: Error #1069: Не удалось найти свойство error_msg в vk.events.CustomEvent; отсутствует значение по умолчанию.
at payment_fla::MainTimeline/onError()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at vk::APIConnection/customEvent()

И окошко выдает:

Ваш запрос не был обработан. Попробуйте повторить его позднее.

З.Ы. Пока что тестирую на исходниках
add0295
Сообщения: 19
Зарегистрирован: 09 авг 2011, 14:46

Re: Работа с Payments API.(as3,php)

Сообщение add0295 »

Пересохранял в UTF-8, не помогло.

Лог:

п»ї<br /> <b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/h36642/data/www/example.ua/pay/payment.php:1) in <b>/home/h36642/data/www/example.ua/pay/payment.php</b> on line <b>2</b><br /> {"response":{"item_id":1, "title":"10 монеток(test mode)", "photo_url":"", "price":1}}
add0295
Сообщения: 19
Зарегистрирован: 09 авг 2011, 14:46

Re: Работа с Payments API.(as3,php)

Сообщение add0295 »

add0295 писал(а):Пересохранял в UTF-8, не помогло.

Лог:

п»ї<br /> <b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/h36642/data/www/example.ua/pay/payment.php:1) in <b>/home/h36642/data/www/example.ua/pay/payment.php</b> on line <b>2</b><br /> {"response":{"item_id":1, "title":"10 монеток(test mode)", "photo_url":"", "price":1}}
Во! решил.. Не знаю что изменилось, но когда скопировал именно с вконтакте:

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

<?php header("Content-Type: application/json; encoding=utf-8");
тогда заработало)))
add0295
Сообщения: 19
Зарегистрирован: 09 авг 2011, 14:46

Re: Работа с Payments API.(as3,php)

Сообщение add0295 »

XELAD писал(а):Представим ситуацию, что это всё связано с БД, в №1 будут вноситься заказы, в №2 (там, где сохранение игроков) будут изменено кол-во монет на счету.
Как я понимаю:
1) Новую запись в БД №1 нужно создавать при case 'get_item'
- Внести user_id, item, order_id, а также app_order_id в виде счетчика. ПЛЮС одна графа, где мы укажем, сколько уведомлений пришло от ВК (подробности ниже), сейчас укажем ноль.
2) При case 'order_status_change' найти в БД №1 строку с теми же user_id, item, order_id....
Вспоминаем, что ВК может несколько раз отправлять уведомления типа Изменения статуса заказа с тем же order_id, смотрим на счетчик в той самой графе. И только если он равен нулю, прибавляем монеток в БД №2! И увеличиваем счетчик в той графе.
Всё это сделано, чтобы при каждом таком уведомлении от ВК, монеты не прибавлялись.
А если мы не находим такую запись в БД №1, то выдаем критическую ошибку.
3) В самом flash получаем событие onOrderSuccess, и загружаем данные пользователя из БД №2 для получения актуальной информации.
Хочу сделать как описано сдесь)
Посмотрите правильно ли первый пункт я сделал:

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

$query = mysql_query('INSERT INTO `'.$table_name.'` (`user_id`, `order_id`, `item`, `app_order_id`, `counter`) VALUES ("'.$in_user_id.'","'.$in_order_id.'","'.$input['item'].'","'.$rndm.'","'.$counter.'");');
А вот со вторым не могу понять:
Объясните пожалуйста с app_order_id и еще, как сделать
найти в БД №1 строку с теми же user_id, item, order_id
Да, а счетчик это app_order_id или то самое дополнительное поле?
И напишите пожалуйста, зачем они... никак не могу понять :oops:
Ответить