(Луцилий Гай)
Для того чтобы создаваемый обработчик
На тему создания собственного обработчика служб доставок есть следующая документация:
-
-
Есть возможность ограничить использование службы доставки по каким - либо параметрам. Например, по максимальному весу или размеру.
Для этого можно воспользоваться
Если же необходимо что - то особенное, например, ограничить использование службы доставки в зависимости от фазы луны, то можно создать собственный тип ограничений. О создании таких ограничений можно почитать здесь:
В системе есть также возможность задавать для службы доставки
Про создание собственного типа дополнительных услуг можно почитать здесь:
При создании службы доставки необходимо учитывать тот факт, что сайт может быть как в кодировке utf-8 так и в кодировке cp-1251.
Если производится обмен данными со службой доставки - необходимо при этом правильно менять кодировку данных при отправлении и получении данных.
Здесь может помочь метод \Bitrix\Main\Text\Encoding::convertEncoding().
В качестве примера служб доставок лучше всего подходят следующие:
\Sale\Handlers\Delivery\SimpleHandler (/bitrix/modules/sale/handlers/delivery/simple/handler.php) простейший пример обработчика.
\Sale\Handlers\Delivery\SpsrHandler (/bitrix/modules/sale/handlers/delivery/spsr/handler.php) вариант посложнее с использованием всех возможностей текущей архитектуры.
Для служб доставок существует механизм автоматического отслеживания идентификаторов отправления (трэкинг-номеров). Пример, как это реализовано для службы доставки СПСР: \Sale\Handlers\Delivery\SpsrTracking
Для запросов к сервису службы доставки рекомендуется использовать встроенный класс \Bitrix\Main\Web\HttpClient вместо сторонних расширений, например curl.
Оптимальный формат обмена - json, так как возможно использовать встроенный класс \Bitrix\Main\Web\Json.
При обмене информацией с сервисами служб доставок зачастую необходимо передавать идентификаторы местоположений. Сопоставление идентификаторов местоположений интернет магазина с идентификаторами местоположений служб доставок - задача нетривиальная. Как пример можно использовать \Sale\Handlers\Delivery\Spsr\Location::mapStepless();
Чтобы не порождать лишних запросов к службе доставки и не замедлять работу сайта желательно при возможности кэшировать информацию полученную от сервисов служб доставок. Однако делать это надо аккуратно во избежание побочных эффектов. Как пример: \Sale\Handlers\Delivery\Spsr\Cache
В случае возникновения ошибок и для отладки желательно иметь возможность записывать события связанные с получением информации от служб доставок в системный журнал. Для этого можно воспользоваться классом \CEventLog.
И конечно же в случае обмена информацией со службой доставки необходимо предусмотреть корректную обработку случаев, когда по каким - то причинам сервер службы доставки недоступен или выдаёт неверный ответ.