Iframe-приложение, как разрешить кнопку только после оплаты?

Использование API других социальных сетей
Ответить
Аватара пользователя
-Kaizer-
Сообщения: 5
Зарегистрирован: 11 ноя 2012, 16:00

Iframe-приложение, как разрешить кнопку только после оплаты?

Сообщение -Kaizer- »

Всем привет!
Извините, если такой вопрос поднимался (пересмотрел оба раздела по Мой Мир, не нашел).

Уважаемые участники, пожалуйста подскажите, как можно сделать возможность нажимать кнопку только после того, как пользователь оплатит в приложении 1 мэйлик?

То есть, механизм такой - есть игра "Угадайка", в ней поле и неактивная (disables="disabled") кнопка сабмита (исходник ниже). Юзер вводит число от 1 до 15 и жмет кнопку. Если он угадал - пишется "Вы победили!", если нет (компьютер выбрал другое число от 1 до 15) - пишется: "Вы проиграли!".

Вот код index.php (показывается при загрузке приложения):
 Развернуть

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html>    <head>        <title>Угадайка</title>        <meta content="text/html; charset=utf-8" http-equiv="content-type">    </head>    <body id="wrp"> <p align="right"><button id="reviewApp" type="button" onclick="review()">                Написать отзыв            </button> <button id="inviteFrineds" type="button" onclick="invite()">                Пригласить друзей            </button> <button id="install" type="button" onclick="install()">Установить игру</button></p>  <h2>Привет! Это тестовое приложение!<h2>Чтобы начать игру, загадайте число, затем напишите его в поле и нажмите кнопку "Ответ".<br>Если Вы угадали число компьютера, то Вам будет начислен балл, если нет, то можно попробовать еще.            <div id="sandbox">            <button id="payment" type="button" onclick="payment()">                Оплатить            </button>            <button id="payment_sms" id="OTVET" type="button" onclick="payment_sms()">                Оплатить sms            </button>            <button id="payment_other" type="button" onclick="payment_other()">                Оплатить не sms            </button>        </div>                                                        <div align="center">        <form action="otvet.php" method="POST">Ваш ответ (от 1 до 15): <input type="text" name="answer" style="width:50px;" onkeydown="javascript:if(13==event.keyCode){return false;}">        <p><input type="submit" value="Ответ!" style="width:200px;height:50px;" disabled="disabled"></p>        </form></div>                                                        <!--        <script src="http://cdn.connect.mail.ru/js/loader.js?new=1" type="text/javascript" charset="utf-8"></script>        -->        <script src="http://cdn.connect.mail.ru/js/loader.js"></script>        <script type="text/javascript" charset="utf-8">            if(document.URL.indexOf('__branch') != -1 && /*@cc_on!@*/false){             }                        if(typeof window.console === 'undefined'){                window.console = {                    log: function(d){                        cl('console log: ' + d);                    }                };            }             function $(d){                return document.getElementById(d) || false;            }            function cl(d){                $('console').innerHTML += d + '\n';            }                        var user = {}, friends = {}, albums = null, aid = null, sandbox = document.getElementById('sandbox');                mailru.loader.require('api', function() {                    cl('Кросс-доменный транспорт ' + mailru.intercomType)                     //делаем инициализацию приложения                    mailru.app.init('cfe0b07b0762f250c1f640f8bbf259c3');                     mailru.app.utils.hash.read();                     //проверяем, установлено ли приложение у пользователя                    if(mailru.session.is_app_user != 1){                        sandbox.style.display = 'none';                        mailru.events.listen(mailru.app.events.applicationInstallation, function(d){                            cl(collectData(d))                        });                        mailru.app.users.requireInstallation(['widget']);                        return false;                    }                        //получаем информацию о пользователе и сохраняем в глобаленой переменной user                    mailru.app.users.getInfo(function(result){                        if(result.error) {                            user = {};                            return false;                        }                        user = result[0];                        fillAlbumsSelect();                    });                                                     //блок подписки на события                    mailru.events.listen(mailru.app.events.friendsInvitation, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.paymentDialogStatus, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.incomingPayment, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.applicationReviewStatus, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.applicationSettingsStatus, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.permissionsChange, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.streamPublish, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.guestbookPublish, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.permissionDialogStatus, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.common.events.upload, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.createAlbum, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.hash.read, function(d){                        cl(collectData(d))                    });                    mailru.events.listen(mailru.app.events.friends.add, function(d){                        cl(collectData(d))                    });                 });             function collectData(d){                var o = '';                for (var p in d){                    if(d.hasOwnProperty(p))                        if(typeof d[p] === 'object'){                            o += collectData(d[p]);                        }                        else{                            o += p + '->' + d[p] + '\n';                        }                    };                return o;            }             //блок функций вызова api-методов            function payment(){                mailru.app.payments.showDialog({service_id: 1, service_name: "ви'лы", sms_price: 1, other_price: 2000  });                return false;            }             function payment_sms(){                mailru.app.payments.showDialog({service_id: 2, service_name: "ви'лы sms", sms_price: 5});                return false;            }             function payment_other(){                mailru.app.payments.showDialog({service_id: 3, service_name: "ви'лы не sms", other_price: 31337});                return false;            }             function invite(){                mailru.app.friends.invite({name: 'test.app invite', logo: ''});                return false;            }             function review(){                mailru.app.users.review();                return false;            }             function permission(type){                mailru.common.users.requirePermissions(type);                return false;            }                        function getAppUsers(){                mailru.app.friends.getAppUsers(function(d){                    cl(collectData(d))                });            }                        function getUserByUID(){                var uid = $('uid').value;                if(uid.indexOf(',') != -1) uid = uid.split(',');                mailru.app.users.getInfo(function(d){                    cl(collectData(d))                }, uid);            }                        function friendsGetInvitationsCount(){              mailru.common.friends.getInvitationsCount(function(invitations) {                alert(invitations.count);              });            }             function addFriend(){                mailru.app.friends.add('15984764615407557866');            }        </script>      </body></html>
За основу взят демо-пример и добавлена форма:

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

         <div align="center">        <form action="otvet.php" method="POST">Ваш ответ (от 1 до 15): <input type="text" name="answer" style="width:50px;" onkeydown="javascript:if(13==event.keyCode){return false;}">        <p><input type="submit" id="OTVET" value="Ответ!" style="width:200px;height:50px;" disabled="disabled"></p>        </form></div>
При отправке формы, ее обрабатывает такой скрипт:

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

<?php $zagadano = rand(1,15);echo "Ваш ответ: ".$_POST['answer']."<br>";echo "Загаданное число: $zagadano"; if ($_POST['answer'] == $zagadano)echo "<p style='color:green;'>Вы выиграли!</p><div style='margin-top:30px;' align=center><img src=win.png></div>";elseecho "<p style='color:red;'>Вы Проиграли!</p><div style='margin-top:30px;' align=center><img src=lose.png></div>"; ?> 
Картинки win.png и lose.png, соответственно:
Изображение Изображение

Пожалуйста подскажите, каким образом можно сделать так:
1. Добавляется кнопка "Оплатить попытку = 1 мэйлик".
2. Кнопке привязывается функционал оплаты 1 мэйлика на счет приложения.
3. После успешной оплаты кнопка "Ответ!" становится доступна (убирается disabled="disabled").
4. При обновлении страницы программы - кнопка "Ответ!" вновь отключена, чтобы нажать ее (сыграть в игру) - нужно вновь оплатить 1 мэйлик.

Что-то вроде:

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

<input type="button" value="Оплатить 1 мэйлик" onclick="payment_1_raz()"> <script type="text/javascript">function payment_1_raz() {    mailru.app.payments.showDialog({service_id: 1, service_name: "одну игру в Угадайку", sms_price: 1, other_price: 1IF SUCESS then input['OTVET'].this.remove('disabled="disabled"');}<script>
Заранее огромное спасибо!
Ответить