Плагин Яндекс.Маркет. 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
    Михаил Ушенин Михаил Ушенин 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
        Михаил Ушенин Михаил Ушенин 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:22 #

                На всякий случай: кеш в "Инсталлере" очищен?

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

                  нет, ни разу не делал. Сейчас попробую

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

                  Очистил. Ошибка та же. Сервис не может обратиться к /cart

                • +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
                    Михаил Ушенин Михаил Ушенин 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
                        Михаил Ушенин Михаил Ушенин 27 декабря 2017 09:18 #

                        Разработчикам передали информацию о проблеме. Пока комментарии от них не поступали.

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

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

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

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

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

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

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

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

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

                      • +1
                        Михаил Ушенин Михаил Ушенин 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
                          Михаил Ушенин Михаил Ушенин 28 декабря 2017 10:25 #

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                                    Кеш в "Инсталлере" очистили?

                                  • +1
                                    Alex Alex 29 декабря 2017 18:03 #

                                    Название компании "Tasty Bar" , но при сохранении все буквы переходят в строчные.

                                    Кэш конечно чистил

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

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

                                  • +2
                                    Михаил Ушенин Михаил Ушенин 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
                                        Михаил Ушенин Михаил Ушенин 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
                                              Михаил Ушенин Михаил Ушенин 8 февраля 2018 09:32 #

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

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

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

                                                Добавление новых комментариев к этой теме отключено.