Плагин Яндекс.Маркет. 500 server internal error при попытке сделать тестовый заказ Исправлено

3

Добрый день, плагин для заказов с Яндекс.маркета настроен по инструкции, недавно куплен ssl сертификат, вбил тестовые настройки для проверки. При проверке выдаёт

Возникла ошибка: HTTP

Возникла проблема при обработке ответа от магазина.

Посмотреть лог запросов.

Дата и времяМетодРесурсВремя ответаТип ошибкиПодтип ошибкиЗапросОтветТип заказа
31.08.2017 15:13:43POST/cart2166CANT_GET_RESPONSEHTTP
Тестовый
URL = https://******/yandexmarket/api/cart
Параметры URL: auth-token=****
Детали ошибки = 500 Internal Server Error


Запрос:

Заголовок
POST /yandexmarket/api/cart HTTP/1.1
Content-Type: application/json;charset=utf-8 

Тело

{"cart":{"currency":"RUR","items":[{"feedId":474349,"offerId":"212","feedCategoryId":"3","offerName":"Смартфон Xiaomi Redmi 4X 32Gb Black","count":1,"params":"Цвет: черный"}],"delivery":{"region":{"id":56,"name":"Челябинск","type":"CITY","parent":{"id":121115,"name":"Челябинский городской округ","type":"SUBJECT_FEDERATION_DISTRICT","parent":{"id":11225,"name":"Челябинская область","type":"SUBJECT_FEDERATION","parent":{"id":52,"name":"Уральский федеральный округ","type":"COUNTRY_DISTRICT","parent":{"id":225,"name":"Россия","type":"COUNTRY"}}}}}}}}


ответ:

Заголовок
HTTP/1.1 500 Internal Server Error
Server: nginx
Date: Thu, 31 Aug 2017 12:13:43 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 1689
Connection: keep-alive
Тело

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Ошибка #500</title>

<link href="/wa-content/css/wa/wa-1.0.css" rel="stylesheet" type="text/css" />

<script src="/wa-content/js/jquery/jquery-1.8.2.min.js" type="text/javascript"></script>

<script src="/wa-content/js/jquery-wa/wa.dialog.js" type="text/javascript"></script>

<script type="text/javascript">$(function () {$('#wa-recovery-dialog').waDialog({'esc': false})});</script>

</head>

<body>

<div id="wa-recovery">

<img id="wa-recovery-stretched-background" />

<div class="dialog width500px height300px" id="wa-recovery-dialog">

<div class="dialog-background"></div>

<div class="dialog-window">

<div class="dialog-content">

<div class="dialog-content-indent wa-500-error">


<h1>Ошибка #500</h1>

<p>

<img src="/wa-apps/shop/img/shop.png" /><br />

<span class="small">Магазин</span>

</p>

<h2></h2>

<p>

Please contact app developer.

</p>

</div>

</div>

</div>

</div>

</div>

</body>

</html>

50 комментариев

  • +1
    ruslan1 ruslan1 31 августа 2017 16:05 #

    error.log


    2017-08-31 17:40:19 93.158.141.57
    Uncaught exception waException:
    Profile not found (500)
    ## wa-apps/shop/plugins/yandexmarket/lib/classes/shopYandexmarketPluginOrder.class.php(106)
    #0 wa-apps/shop/plugins/yandexmarket/lib/actions/api/shopYandexmarketPluginApi.actions.php(402): shopYandexmarketPluginOrder::createFromJson(Array, Object(shopYandexmarketPlugin), false)
    #1 wa-apps/shop/plugins/yandexmarket/lib/actions/api/shopYandexmarketPluginApi.actions.php(33): shopYandexmarketPluginApiActions->getApiRequest()
    #2 wa-system/controller/waActions.class.php(25): shopYandexmarketPluginApiActions->cartAction()
    #3 wa-system/controller/waActions.class.php(44): waActions->execute('cart')
    #4 wa-system/controller/waFrontController.class.php(229): waActions->run('cart')
    #5 wa-system/controller/waFrontController.class.php(164): waFrontController->runController(Object(shopYandexmarketPluginApiActions), 'cart')
    #6 wa-system/controller/waFrontController.class.php(58): waFrontController->execute('yandexmarket', 'api', 'cart')
    #7 wa-system/waSystem.class.php(698): waFrontController->dispatch()
    #8 wa-system/waSystem.class.php(485): waSystem->dispatchFrontend('yandexmarket/ap...')
    #9 index.php(7): waSystem->dispatch()
    #10 {main}


  • +1
    Михаил Ушенин Михаил Ушенин Webasyst 3 сентября 2017 19:22 #

    Посмотрите внимательнее в своём кабинете "Яндекс.Маркета": возможно, ваша кампания не связана ни с одним существующим профилем экспорта YML-файла вашего интернет-магазина.

    • +1
      ruslan1 ruslan1 8 сентября 2017 13:47 #

      Вот именно, что экспорт уже давно есть и работает, товары выгружаются на маркет, уже и заказы с маркета принимаем и предоплату. Решил подключить, чтобы все заказы принимались через api, но вот не получается.

    • +1
      ruslan1 ruslan1 8 сентября 2017 14:33 #

      Это может быть из-за того, что у меня в плагине "Яндекс.Маркет" два профиля экспорта? один из них настроен для маркета, а другой для другого сервиса.

    • +2
      Alex Alex 12 октября 2017 19:00 #

      Такая же проблема. по-моему из-за того что у меня не показывается в кампании никакой прайслист. В интерфейсе яндекса он прописан, товары загружены без ошибок.



      Как можно исправить ?

    • +1
      pwrppill pwrppill 20 декабря 2017 20:37 #

      Такая же ошибка. Решение найдено ?

    • +1
      Платон Милеев Платон Милеев 25 декабря 2017 11:59 #

      коллеги у нас такая же ошибка.

      просим оперативной обратной связи.

      Заранее благодарю.

      • +1
        Михаил Ушенин Михаил Ушенин Webasyst 25 декабря 2017 12:09 #

        Запрашивая информацию о кампании от "Яндекс.Маркета", плагин не видит ID профиля экспорта YML-файла. Очень вероятно это означает, что в свойствах кампании в личном кабинете "Яндекс.Маркета" указан URL YML-файла, который ещё не утверждён для публикации товаров в "Яндекс.Маркете". Или там вообще не указан никакой URL. Проверьте это.

        • +1
          ruslan1 ruslan1 25 декабря 2017 12:19 #


          • +1
            Вячеслав Вячеслав 26 декабря 2017 00:07 #

            У меня возникла аналогичная проблема. Скажите у вас домен магазина указан как shop.ru или в свободной форме например МАГАЗИН-НА-МАРКЕТЕ. Спрашиваю потому что у меня это второй магазин на маркете, с первым проблем нет. И имя там указано как shop.ru. А у второго который выдает ошибку в свободной форме. Я предположил что это может быть связанно именно с этим.

            • +1
              ruslan1 ruslan1 26 декабря 2017 08:42 #

              нет, у меня обычный домен. без лишних знаков, только буквы. Английский

            • +1
              ruslan1 ruslan1 25 декабря 2017 12:20 #

              Все работает уже давно, ещё с августа. Заказы принимаются через личный кабинет без проблем. Вся информация спокойно передаётся на маркет и обновляется. Только заказы не переносятся до сих пор и проблему не знаю, как решить. Множество вариантов перепробовал


            • +1
              Платон Милеев Платон Милеев 25 декабря 2017 12:41 #

              КЕШ никакой здесь не причем.

              /var/www/html/wa-apps/shop/plugins/yandexmarket/lib/actions/api/shopYandexmarketPluginApi.actions.php around line 400

              395 switch ($this->format) {

              396 case 'application/json':

              397 $json = json_decode($raw, true);

              398

              399 if (!$json || !is_array($json)) {

              >>400 throw new waException('Invalid data');

              401 }

              402 $order = shopYandexmarketPluginOrder::createFromJson($json, $this->getPlugin(), $save_contact);

              403

              404 break;

              405 case 'application/xml':


              На 400 строке он вываливает ошибку попадая на эксцепшен. А ошибка от того что нет никаких данных в массиве.

              • +1
                Михаил Ушенин Михаил Ушенин Webasyst 25 декабря 2017 15:09 #

                Что у вас при этом в переменной $raw?

                • +1
                  Андрей Андрей Андрей Андрей 25 декабря 2017 15:18 #

                  Переменная $raw содержит json. Здесь все норм. Это ошибка при пустом обращении к API. Ошибка именно при запросе профиля внутри плагина:

                  <div style="width:99%;position:relative;text-align:left;white-space:normal" class="wa-exception-debug-dump">

                  <h2 id='Title'>Profile not found <span class="hint">code 500</span></h2>

                  <div id="Trace">

                  <pre>## wa-apps/shop/plugins/yandexmarket/lib/classes/shopYandexmarketPluginOrder.class.php(107)

                  #0 wa-apps/shop/plugins/yandexmarket/lib/actions/api/shopYandexmarketPluginApi.actions.php(412): shopYandexmarketPluginOrder::createFromJson(Array, Object(shopYandexmarketPlugin), false)

                  #1 wa-apps/shop/plugins/yandexmarket/lib/actions/api/shopYandexmarketPluginApi.actions.php(33): shopYandexmarketPluginApiActions->getApiRequest()

                  #2 wa-system/controller/waActions.class.php(25): shopYandexmarketPluginApiActions->cartAction()

                  #3 wa-system/controller/waActions.class.php(44): waActions->execute('cart')

                  #4 wa-system/controller/waFrontController.class.php(229): waActions->run('cart')

                  #5 wa-system/controller/waFrontController.class.php(164): waFrontController->runController(Object(shopYandexmarketPluginApiActions), 'cart')

                  #6 wa-system/controller/waFrontController.class.php(58): waFrontController->execute('yandexmarket', 'api', 'cart')

                  #7 wa-system/waSystem.class.php(698): waFrontController->dispatch()

                  #8 wa-system/waSystem.class.php(485): waSystem->dispatchFrontend('yandexmarket/ap...')

                  #9 index.php(7): waSystem->dispatch()

                  #10 {main}</pre>

                  </div>

                  <div id="Context" style="display: block;">

                  <h3>/var/www/html/wa-apps/shop/plugins/yandexmarket/lib/classes/shopYandexmarketPluginOrder.class.php around line 107</h3>

                  <pre>102

                  103 }

                  104

                  105 if (empty($profile_id)) {

                  106 //Bad...

                  >>107 throw new waException('Profile not found');

                  108 } elseif (count($profile_map) > 1) {

                  109 throw new waException('Multiple feeds not supported');

                  110 }

                  111

                  112 $profile = null;</pre>

                  </div>

                • +2
                  Alex Alex 25 декабря 2017 14:19 #

                  Михаил, Вы хотя бы напишите, занимаетесь ли вы этой проблемой. 4 месяца довольно серьезный срок для поиска решения.

                • +1
                  Андрей Андрей Андрей Андрей 25 декабря 2017 14:34 #

                  Добрый день Михаил. Я подебажил код плагина на предмет эксцепшенов с ошибками. Суть такова:

                  1. Плагин настроен на экспорт фида XML и в плагине и в маркете.

                  2. Маркет этот фид давно видит и прекрасно его грузит. CPC формат работает.

                  3. Плагин «Заказ на Маркете» (CPA формат) авторизован по токену для работы с Яндекс.Маркетом, так же получен и настроен токен для авторизации со стороны API на сайте. Настроены основной и тестовый URL API в маркете.

                  4. При тестировании запросов из песочницы Маркета к API магазина сайт отдает ошибку связанную с эксцепшенами. Суть трассировки показала, что на самом деле плагин не может определить profile_id при попытке получить конфигурацию профиля внутри плагина и выпадает с ошибками.

                  Вы пару раз в комментариях указали на возможное отсутсвие связок профиля и ID фида XML. Вполне возможно здесь и проблема плагина. Именно плагина а не связки: подтверждения фида и профиля в Маркете.

                  Либо маркет поменял что-то в полях и плагин перестал получать номер фида или профиля.

                  Ждем решения проблемы! Спасибо!

                • +1
                  Михаил Ушенин Михаил Ушенин Webasyst 27 декабря 2017 16:04 #

                  Попробуйте в общих настройках в личном кабинете "Яндекс.Маркета" в качестве названия магазина указать домен магазина.

                  • +1
                    Alex Alex 27 декабря 2017 22:31 #

                    Мне не помогло. Еще варианты

                  • +1
                    Андрей Андрей Андрей Андрей 28 декабря 2017 00:55 #

                    Сделали так. Тестовый запрос на актуализацию и тот же самый waException: Profile not found

                    Дело не в названии получается.

                  • +1
                    ruslan1 ruslan1 28 декабря 2017 08:57 #

                    Тоже самое, название изменил, не помогло.

                  • +1
                    Михаил Ушенин Михаил Ушенин Webasyst 28 декабря 2017 10:25 #

                    Это было предложение от разработчиков. Спасибо, что сообщили о результате! Будем исследовать и позже предложим другие варианты решения.

                  • +1
                    Михаил Ушенин Михаил Ушенин Webasyst 28 декабря 2017 21:19 #

                    Похоже, что "Яндекс" не позволяет менять название кампании на "Маркете", а плагин рассчитывает на то, что в названии кампании должен быть указан домен магазина.

                    Появилось предложение временного решения проблемы. Скопируйте название кампании — так, как оно у вас видно в списке кампаний в 1-м столбце в настройках плагина. На той же странице, где во 2-м столбце должна быть ссылка на прайс-лист, но её пока нет.

                    В приложении "Сайт" добавьте новый сайт в виде зеркала для того сайта, на котором размещён магазин. Самое главное: в качестве домена сайта-зеркала вставьте скопированное название кампании "Маркета" из настроек плагина. Оно необязательно должно выглядеть, как доменное имя, но это неважно.

                    Предположительно плагин должен внутри себя "склеить" основной домен магазина и название кампании из адреса сайта-зеркала и правильно сопоставить настройки кампании и конфигурации плагина. Возможно, потребуется очистка кеша в "Инсталлере".

                    • +1
                      Alex Alex 28 декабря 2017 22:38 #

                      У меня решение не работает

                    • +1
                      ruslan1 ruslan1 29 декабря 2017 08:38 #

                      Тоже самое, не работает

                      • +1
                        Михаил Ушенин Михаил Ушенин Webasyst 29 декабря 2017 16:29 #

                        Покажите на снимке экрана, как вы написали "доменное имя" для сайта-зеркала. Там нужно использовать обычную кириллицу — не Punycode.

                        • +1
                          Alex Alex 29 декабря 2017 16:34 #

                          • +1
                            Михаил Ушенин Михаил Ушенин Webasyst 29 декабря 2017 17:58 #

                            Название кампании у вас с прописными буквами или все строчные?

                            Название сайта-зеркала тут не имеет значения. Важен "адрес" сайта (т. е. название кампании вместо настоящего адреса) — в поле "Доменное имя".

                          • +1
                            ruslan1 ruslan1 29 декабря 2017 16:41 #

                            У меня аналогично, также как название на маркете. Без пробелов, слитно.

                          • +2
                            Михаил Ушенин Михаил Ушенин Webasyst 25 января 2018 15:26 #

                            После сегодняшнего обновления "Сайта" это решение должно заработать.

                            • +1
                              Dima Dima 26 января 2018 15:18 #

                              Да, теперь работает!

                              Спс.

                            • +1
                              ruslan1 ruslan1 26 января 2018 15:22 #

                              К сожалению у меня не заработало, сейчас буду заново все настройки проверять, возможно что-то не так настроено

                            • +1
                              ruslan1 ruslan1 26 января 2018 15:58 #

                              Возможно у меня дело не в этих настройках, потому что ошибка такая

                              URL = https://*********/yandexmarket/api/cart


                              Детали ошибки = 500 Internal Server Error

                              плагин не отвечает вообще на запросы маркета

                              И какие бы я настройки не применял, всё равно ошибка одна и та же всегда.


                              • +1
                                Михаил Ушенин Михаил Ушенин Webasyst 26 января 2018 16:16 #
                                500 Internal Server Error

                                См. подробности в PHP-логе.

                                • +1
                                  ruslan1 ruslan1 26 января 2018 16:23 #

                                  Profile not found (500)

                                  ## wa-apps/shop/plugins/yandexmarket/lib/classes/shopYandexmarketPluginOrder.class.php(106)
                                  #0 wa-apps/shop/plugins/yandexmarket/lib/actions/api/shopYandexmarketPluginApi.actions.php(402): shopYandexmarketPluginOrder::createFromJson(Array, Object(shopYandexmarketPlugin), false)
                                  #1 wa-apps/shop/plugins/yandexmarket/lib/actions/api/shopYandexmarketPluginApi.actions.php(33): shopYandexmarketPluginApiActions->getApiRequest()
                                  #2 wa-system/controller/waActions.class.php(25): shopYandexmarketPluginApiActions->cartAction()
                                  #3 wa-system/controller/waActions.class.php(44): waActions->execute('cart')
                                  #4 wa-system/controller/waFrontController.class.php(229): waActions->run('cart')
                                  #5 wa-system/controller/waFrontController.class.php(164): waFrontController->runController(Object(shopYandexmarketPluginApiActions), 'cart')
                                  #6 wa-system/controller/waFrontController.class.php(58): waFrontController->execute('yandexmarket', 'api', 'cart')
                                  #7 wa-system/waSystem.class.php(727): waFrontController->dispatch()
                                  #8 wa-system/waSystem.class.php(487): waSystem->dispatchFrontend('yandexmarket/ap...')
                                  #9 index.php(7): waSystem->dispatch()

                                  #10 {main}

                                • +1
                                  ruslan1 ruslan1 26 января 2018 16:36 #

                                  Кэш почищен. Приложение "Сайт" сегодня обновил


                                • +2
                                  Alex Alex 28 января 2018 12:39 #

                                  Меня удивляет безответственность разработчиков. Пишут что после обновления "Сайта" решение должно заработать. При том, что у многих онлайн магазин "допилен" и обновление сводится не просто к нажатию кнопок, а требует ресурсов и времени, т.е. денег. Так вот я не был удивлен совсем после обновления "Сайта", когда ничего так и не заработало. Это уже к сожалению становится их фишкой... Будем слушать новые гипотезы и предположения, вместо реальных действий

                                  • +1
                                    Dima Dima 29 января 2018 22:13 #

                                    У нас заработало.
                                    Основной сайт для Москвы имеет название компании в Маркете, например:

                                    site.ru

                                    А название компании для СПБ в маркете имеет название:

                                    spb-site.ru

                                    В админке магазина создали Новый сайт с идентичным названием компании в маркете, хотя таким доменом и не обладаем. Выбрали пункт "Зеркало сайта" для site.ru

                                    Тут сразу же /webasyst/shop/?action=plugins#/yandexmarket отобразился прайс-лист для СПБ. До этого не было.

                                    ps: +для СПБ авторизационный токен сменили ещё раз. Хотя вряд-ли это сыграло роль.

                                    • +1
                                      ruslan1 ruslan1 30 января 2018 10:07 #

                                      Возможно это из-за того, что у Вас название из строчных букв. У нас название содержит и прописные и строчные, поэтому скорее всего и не работает. То же самое сделал, не помогло. Будем ждать ответа разработчиков

                                    • +1
                                      Андрей Андрей Андрей Андрей 28 января 2018 02:44 #

                                      У нас тоже решение не заработало. Результат "Profile not found".

                                      Название сайта сателлита = названию кампании в Яндекс.Маркете.

                                      За исключением регистра первая буква названия кампании в маркете "С", а при сохранении адреса сайта сателлита "С" даункейсится в "с" автоматом в админке. Название кампании в Маркете в одно слово на английском.

                                      Кеш в инсталлере почищен.

                                      Возможно у кого в маркете кампания начинает с нижнего регистра сработает. С у кого с верхнего, то наверное не сработает.

                                    • +3
                                      Alex Alex 22 января 2018 20:30 #

                                      Так что, программисты после Нового Года не работают пока ?

                                      Или опять забили на поддержку пользователей на полгода?

                                    • +1
                                      Dima Dima 22 января 2018 23:46 #

                                      Те же проблемы при подключении второго магазина на маркете для другого города.

                                      Когда примерно решат проблему известно?

                                    • +1
                                      Михаил Ушенин Михаил Ушенин Webasyst 8 февраля 2018 09:32 #

                                      Обновили плагин. В настройках добавили возможность связать прайс-лист с кампанией — через выбор витрины магазина для кампаний, где не сработало автоматическое связывание.

                                      • +1
                                        ruslan1 ruslan1 8 февраля 2018 12:13 #

                                        Всё, работает наконец-то. Только нужно удалить зеркало в приложении "Сайт".

                                        Добавить комментарий

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