Реализация callback функции в плагине

Здравствуйте.

Возникла необходимость для плагина написать функцию, которая будет выступать callback-функцией для некоторого стороннего сервиса.

Сервис вызывает данную функцию при определенных условиях и передает ей некоторые параметры. Собственно даже в голову не приходит как это реализовать.

5 ответов

  • 1
    Владислав Горлов 13 ноября 2013 04:47 #
    Надо в роутинг плагина добавит некоторый путь для некоторого стороннего сервиса.
    И соответственно, у плагина должен быть объявлена поддержка фронтенда (frontend => true), и реализован контроллер для фронтенда.
    (образец - плагин яндексмаркета - контроллер скачивания файла яндексом)
    • 0
      Дмитрий (BNP) Дмитрий (BNP) 18 ноября 2013 09:36 #
      С этим разобрался =)
      Теперь следующий вопрос:
      Сторонний сервис все параметры передает в виде json-закодированного POST запроса.
      Как мне получить этот запрос и обработать?
      Сделал контроллер:

      class shopMoyaposylkaPluginFrontendGetParameterController extends waJsonController
      {

      public function execute()
      {
      $body = waRequest::isXMLHttpRequest();

      $mail_message = new waMailMessage('Test', $body);
      $mail_message->setFrom('admin@muskul.ru', 'Test');
      $mail_message->setTo(array('inohacker@yandex.ru' => 'Dimka'));
      $mail_message->send();
      }

      }

      Запросы приходят, скрипт отрабатывает, а вот письма приходят пустые =(
      Да и не очень понятно как распарсить полученный json запрос.
      • 0
        Дмитрий (BNP) Дмитрий (BNP) 18 ноября 2013 09:40 #
        Переделал на такой вариант:
        class shopMoyaposylkaPluginFrontendGetParameterController extends waJsonController
        {

        public function execute()
        {
        if(waRequest::isXMLHttpRequest()){
        $body = 'Yes';
        } else{
        $body = 'No';
        }


        $mail_message = new waMailMessage('Test', $body);
        $mail_message->setFrom('admin@muskul.ru', 'Test');
        $mail_message->setTo(array('inohacker@yandex.ru' => 'Dimka'));
        $mail_message->send();
        }

        }

        В письме приходит No. Ничего не понимаю ...
  • 0
    Дмитрий (BNP) 18 ноября 2013 10:04 #
    А сервис тем не менее передает заголовок:
    X-Requested-With: XMLHttpRequest

    Фигня какая-то
    • 0
      Дмитрий (BNP) Дмитрий (BNP) 18 ноября 2013 17:50 #
      Получил данные при помощи file_get_contents('php://input').
      Как я понимаю waRequest::global не поддерживается?
      Может есть еще какие-то пути обработать такой запрос?

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите