![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2012
Сообщений: 101
|
1)Я делаю запрос к вк серверу через vk.call
2)через php мне приходит статус платежа(использовал пример вконтактовской php проверки, без изменений) 3)если все успешно, то посылаю запрос на свой сервер и меняю количество монеток. При использовании такого метода через раз 3 пункт не выполняется, а голоса снимаются. Как это исправить? |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 101
|
Он написан правильно, вк не возвращает ответ иногда в приложение
|
|
|||||
|
Значит ответ просто кэшируется на сервере вк. Надо передавать параметр, который отключает кэш. По памяти не помню как он называется, но в доках вк есть описание. Я тоже как-то раз с этим сталкивался
п.с. тогда я не понимаю вот этого Цитата:
|
|
|||||
|
Регистрация: Apr 2009
Сообщений: 409
|
не совсем понятно из поста от кого что приходит. Если ты ждешь вызова колбека внутри прилы, и потом отправляешь запрос на сервер на начисление монеток - это не правильно.
Инициализировать начисление монет должен order_status_chnged на сервере, а не клиент. |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 101
|
private function paymentsGo(e:MouseEvent):void { VK.callMethod('showOrderBox', {type:'votes', item:'Алмаз', votes:golosa}); } private function onSuccess(data:Object):void { var uv:URLVariables = new URLVariables(); uv["votes"] = golosa; uv["id"] = Main.id; uv["hash"] = Main.auth_key; uv["action"] = 12; uv["hash1"] = MD5.encrypt(Main.id + "_" + golosa); var req:REQ = new REQ(uv); req.addEventListener(REQ.COMPLETE, completeReqHandler); } private function completeReqHandler(e:Event):void { e.currentTarget.removeEventListener(REQ.COMPLETE, completeReqHandler); var ur:URLVariables = new URLVariables(e.currentTarget.data); if (ur.req == "true") { Main.diamond = Main.diamond + (golosa * 15); }else { Main.setMessage(Main.write("errors", "unknown_error")); } } private function onError(data: Object):void { paySet.resultTxt.text = data.error_msg; Main.setMessage(Main.write("errors", "unknown_error")); } private function onCanc(data:Object):void { Main.setMessage(Main.write("errors", "unknown_error")); }
|
|
|||||
|
На клиенте этот код не нужен. Лучше пользоваться библиотекой APIConnection и не изобретать самому себе лишние трудности.
У меня вот такой код на сервере: (добавил там комменты)
_vk.addEventListener('onOrderSuccess', onOrderSuccess); // дальше в методе showPaymentBox() -> _vk.callMethod("showOrderBox", { type: "item", votes: votes, item: itemCode } ); // и обработчик -> var orderID:String = String(e.params[0]); if (orderID && orderID.length > 1) { // ну а тут уже спрашиваю у своего сервера, сколько денег у игрока сейчас var packet:Packet = new Packet("getMoneyState", onMoneyState); } |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 101
|
caseyryan, спасибо большое
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:02. |
|
|
« Предыдущая тема | Следующая тема » |
|
|