Где должен находится API_callback?

Работаю с javascript и FAPI одноклассников. Вызываю FAPI.init - все успешно. Вызываю FAPI.UI.showPayment() - происходит успешная покупка. Вопрос: куда должен прийти колбек от платежа? В некую функцию, которая называется API_callback? Где она должна быть? Если на одном уровне с FAPI.init, то она не вызывается. В браузерной консоли при совершении покупки пишется "Uncaught TypeError: c.__FAPI__CallBack is not a function". Клал функцию в разные места, называл разными вариантами. Может её надо зарегистрировать где-то? Думаю битый час на этим.
  • Вопрос задан
  • 878 просмотров
Пригласить эксперта
Ответы на вопрос 4
@x32net
Делал так: из AS3 вызывал js-функцию в браузере. Имя функции было выбрано аля myAwesomeFunc.
Ответ написан
Romas34
@Romas34
Если честно, не совсем понял в чём проблема. Да, в коде скрипта должна быть колбэк-функция (там же, где и функция инициализации FAPI):
/*
* Эта функция вызывается после завершения выполнения следующих методов:
* showPermissions, showInvite, showNotification, showPayment, showConfirmation, setWindowSize
*/
function API_callback(method, result, data) {
    console.log("Method " + method + " finished with result " + result + ", " + data);
    if (method == "showConfirmation" && result == "ok") {
    	FAPI.Client.call(feedPostingObject, function(status, data, error) {
            console.log("status = " + status + "   data = " + data + " error == "
    	                + (error != null ? error["error_msg"] : "null"));
            getFlash().publishCallback({"status":status, "data":data, "error":error});
        }, data);
    }
    //invoke client API callback
    getFlash().onApiCallBack({"method":method, "result":result, "data":data});
}

(пример взят вот отсюда: https://github.com/apiok/html_app_example/blob/mas...
она вызывает onApiCallBack() - колбэк в as-коде. Который, естественно, должен быть зарегистрирован:
ExternalInterface.addCallback("onApiCallBack", onApiCallBack);

Т.о. мы попадаем в функцию onApiCallBack():
private function onApiCallBack(event: Object): void {
        trace("[OKManager] onApiCallBack: method =", event.method,
              " result =", event.result, " data =", event.data);
        if (event.method == 'showPayment') {
            .......
        } else if (event.method == "showConfirmation") {
            .......
        }
        .............
    }
Ответ написан
@JayJet Автор вопроса
Вопрос уже частично решён. У меня лично это работает только в Mozilla (всегда) и в Opera (через раз). Так как сам пользуюсь в Google Chrome, а в нём это не работает, поэтому и забил тревогу. Однако, хотелось бы, чтобы и в гугле работало.
Ответ написан
@nick_bar
Вопрос к автору. Я тоже работаю с API одноклассниками. Но у меня даже Init неправильный. Мог бы помочь?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы