Маркету отдаётся информация о возможности доставки ещё до просчёта доставки ($count - количество единиц товара в заказе, а не параметр доставки). Логика кода - если товара больше 0 штук, то разрешаем доставку по любому адресу. Фактически невозможно обработать адрес и ответить Я.Маркету отказом в доставке.
Из него следует, что без методов доставки Маркету вообще ничего не вернётся в ответ
(!empty($deliveryOptions)).
Создал свой обработчик доставки, при попытке отказывать в доставке по адресам методом
if ($distance>100) {
$result->addError(new Error('Доставка не разрешена'));
return $result;
}
Маркет вообще перестаёт отрабатывать запрос с ошибкой. Выше привёл причины в коде ядра.
Проблема заключается в том, что в таком случае некорректно работает эта форма Яндекс.Маркета https://partner.market.yandex.ru/sandbox/new.xml (Работа с тестовыми заказами), при отсутствии доставки эта форма не даёт даже актуализировать цены. При описанной мной логике (отдавать данные товара с
deliveryOptions=0
) данной проблемы нет.
Тех. поддержка Битрикс считает это нормальным поведением (тикет №1504727).
Сейчас в интеграции между покупками на маркете и битриксом не предусмотрена возможность указать для использования автоматизированные способы доставки - можно только настраиваемые использовать.
В связи с этим предложение - реализовать поддержку автоматизированных способов доставки в интеграции с покупками на маркете.
Как вы это себе представляете и зачем. Поэтому она и автоматизированная, что она решает сколько стоит доставка. А с маркетом история другая, там оплата статичная, и не умеет быть рассчитаной.