Да вроде бы так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 сработает несколько раз,то значение измениться в самом клиенте ,а не на сервере и юзер ничего не сможет сделать с теми монетами,которые ему вдруг зачислились в самом клиенте (ну если у вас конечно ,все покупки выполняются через сервер ,а не в самом клиенте)
Ну вы меня поняли