Добрый день, плагин для заказов с Яндекс.маркета настроен по инструкции, недавно куплен ssl сертификат, вбил тестовые настройки для проверки. При проверке выдаёт
Возникла ошибка: HTTP
Возникла проблема при обработке ответа от магазина.
Посмотреть лог запросов.
Дата и время | Метод | Ресурс | Время ответа | Тип ошибки | Подтип ошибки | Запрос | Ответ | Тип заказа |
---|
31.08.2017 15:13:43 | POST | /cart | 2166 | CANT_GET_RESPONSE | HTTP | | | Тестовый |
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 комментариев
error.log
Посмотрите внимательнее в своём кабинете "Яндекс.Маркета": возможно, ваша кампания не связана ни с одним существующим профилем экспорта YML-файла вашего интернет-магазина.
Вот именно, что экспорт уже давно есть и работает, товары выгружаются на маркет, уже и заказы с маркета принимаем и предоплату. Решил подключить, чтобы все заказы принимались через api, но вот не получается.
Это может быть из-за того, что у меня в плагине "Яндекс.Маркет" два профиля экспорта? один из них настроен для маркета, а другой для другого сервиса.
Такая же проблема. по-моему из-за того что у меня не показывается в кампании никакой прайслист. В интерфейсе яндекса он прописан, товары загружены без ошибок.
Как можно исправить ?
Такая же ошибка. Решение найдено ?
коллеги у нас такая же ошибка.
просим оперативной обратной связи.
Заранее благодарю.
Запрашивая информацию о кампании от "Яндекс.Маркета", плагин не видит ID профиля экспорта YML-файла. Очень вероятно это означает, что в свойствах кампании в личном кабинете "Яндекс.Маркета" указан URL YML-файла, который ещё не утверждён для публикации товаров в "Яндекс.Маркете". Или там вообще не указан никакой URL. Проверьте это.
У меня возникла аналогичная проблема. Скажите у вас домен магазина указан как shop.ru или в свободной форме например МАГАЗИН-НА-МАРКЕТЕ. Спрашиваю потому что у меня это второй магазин на маркете, с первым проблем нет. И имя там указано как shop.ru. А у второго который выдает ошибку в свободной форме. Я предположил что это может быть связанно именно с этим.
нет, у меня обычный домен. без лишних знаков, только буквы. Английский
Все работает уже давно, ещё с августа. Заказы принимаются через личный кабинет без проблем. Вся информация спокойно передаётся на маркет и обновляется. Только заказы не переносятся до сих пор и проблему не знаю, как решить. Множество вариантов перепробовал
На всякий случай: кеш в "Инсталлере" очищен?
нет, ни разу не делал. Сейчас попробую
Очистил. Ошибка та же. Сервис не может обратиться к /cart
КЕШ никакой здесь не причем.
/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 строке он вываливает ошибку попадая на эксцепшен. А ошибка от того что нет никаких данных в массиве.
Что у вас при этом в переменной $raw?
Переменная $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>
Михаил, Вы хотя бы напишите, занимаетесь ли вы этой проблемой. 4 месяца довольно серьезный срок для поиска решения.
Разработчикам передали информацию о проблеме. Пока комментарии от них не поступали.
Добрый день Михаил. Я подебажил код плагина на предмет эксцепшенов с ошибками. Суть такова:
1. Плагин настроен на экспорт фида XML и в плагине и в маркете.
2. Маркет этот фид давно видит и прекрасно его грузит. CPC формат работает.
3. Плагин «Заказ на Маркете» (CPA формат) авторизован по токену для работы с Яндекс.Маркетом, так же получен и настроен токен для авторизации со стороны API на сайте. Настроены основной и тестовый URL API в маркете.
4. При тестировании запросов из песочницы Маркета к API магазина сайт отдает ошибку связанную с эксцепшенами. Суть трассировки показала, что на самом деле плагин не может определить profile_id при попытке получить конфигурацию профиля внутри плагина и выпадает с ошибками.
Вы пару раз в комментариях указали на возможное отсутсвие связок профиля и ID фида XML. Вполне возможно здесь и проблема плагина. Именно плагина а не связки: подтверждения фида и профиля в Маркете.
Либо маркет поменял что-то в полях и плагин перестал получать номер фида или профиля.
Ждем решения проблемы! Спасибо!
Попробуйте в общих настройках в личном кабинете "Яндекс.Маркета" в качестве названия магазина указать домен магазина.
Мне не помогло. Еще варианты
Сделали так. Тестовый запрос на актуализацию и тот же самый waException: Profile not found
Дело не в названии получается.
Тоже самое, название изменил, не помогло.
Это было предложение от разработчиков. Спасибо, что сообщили о результате! Будем исследовать и позже предложим другие варианты решения.
Похоже, что "Яндекс" не позволяет менять название кампании на "Маркете", а плагин рассчитывает на то, что в названии кампании должен быть указан домен магазина.
Появилось предложение временного решения проблемы. Скопируйте название кампании — так, как оно у вас видно в списке кампаний в 1-м столбце в настройках плагина. На той же странице, где во 2-м столбце должна быть ссылка на прайс-лист, но её пока нет.
В приложении "Сайт" добавьте новый сайт в виде зеркала для того сайта, на котором размещён магазин. Самое главное: в качестве домена сайта-зеркала вставьте скопированное название кампании "Маркета" из настроек плагина. Оно необязательно должно выглядеть, как доменное имя, но это неважно.
Предположительно плагин должен внутри себя "склеить" основной домен магазина и название кампании из адреса сайта-зеркала и правильно сопоставить настройки кампании и конфигурации плагина. Возможно, потребуется очистка кеша в "Инсталлере".
У меня решение не работает
Тоже самое, не работает
Покажите на снимке экрана, как вы написали "доменное имя" для сайта-зеркала. Там нужно использовать обычную кириллицу — не Punycode.
Название кампании у вас с прописными буквами или все строчные?
Название сайта-зеркала тут не имеет значения. Важен "адрес" сайта (т. е. название кампании вместо настоящего адреса) — в поле "Доменное имя".
Кеш в "Инсталлере" очистили?
Название компании "Tasty Bar" , но при сохранении все буквы переходят в строчные.
Кэш конечно чистил
У меня аналогично, также как название на маркете. Без пробелов, слитно.
После сегодняшнего обновления "Сайта" это решение должно заработать.
Да, теперь работает!
Спс.
К сожалению у меня не заработало, сейчас буду заново все настройки проверять, возможно что-то не так настроено
Возможно у меня дело не в этих настройках, потому что ошибка такая
URL = https://*********/yandexmarket/api/cartДетали ошибки = 500 Internal Server Error
плагин не отвечает вообще на запросы маркета
И какие бы я настройки не применял, всё равно ошибка одна и та же всегда.
См. подробности в PHP-логе.
Profile not found (500)
#10 {main}
Кэш почищен. Приложение "Сайт" сегодня обновил
Меня удивляет безответственность разработчиков. Пишут что после обновления "Сайта" решение должно заработать. При том, что у многих онлайн магазин "допилен" и обновление сводится не просто к нажатию кнопок, а требует ресурсов и времени, т.е. денег. Так вот я не был удивлен совсем после обновления "Сайта", когда ничего так и не заработало. Это уже к сожалению становится их фишкой... Будем слушать новые гипотезы и предположения, вместо реальных действий
У нас заработало.
Основной сайт для Москвы имеет название компании в Маркете, например:
site.ru
А название компании для СПБ в маркете имеет название:
spb-site.ru
В админке магазина создали Новый сайт с идентичным названием компании в маркете, хотя таким доменом и не обладаем. Выбрали пункт "Зеркало сайта" для site.ru
Тут сразу же /webasyst/shop/?action=plugins#/yandexmarket отобразился прайс-лист для СПБ. До этого не было.
ps: +для СПБ авторизационный токен сменили ещё раз. Хотя вряд-ли это сыграло роль.
Возможно это из-за того, что у Вас название из строчных букв. У нас название содержит и прописные и строчные, поэтому скорее всего и не работает. То же самое сделал, не помогло. Будем ждать ответа разработчиков
У нас тоже решение не заработало. Результат "Profile not found".
Название сайта сателлита = названию кампании в Яндекс.Маркете.
За исключением регистра первая буква названия кампании в маркете "С", а при сохранении адреса сайта сателлита "С" даункейсится в "с" автоматом в админке. Название кампании в Маркете в одно слово на английском.
Кеш в инсталлере почищен.
Возможно у кого в маркете кампания начинает с нижнего регистра сработает. С у кого с верхнего, то наверное не сработает.
Так что, программисты после Нового Года не работают пока ?
Или опять забили на поддержку пользователей на полгода?
Те же проблемы при подключении второго магазина на маркете для другого города.
Когда примерно решат проблему известно?
Обновили плагин. В настройках добавили возможность связать прайс-лист с кампанией — через выбор витрины магазина для кампаний, где не сработало автоматическое связывание.
Всё, работает наконец-то. Только нужно удалить зеркало в приложении "Сайт".