Порядок примерно такой:
При открытии товара происходит аякс запрос по API к DPD и выводится цена и срок доставки. Сперва крутится "Расчет стоимости и сроков доставки...", а потом запись вида "Доставка в г. Владивосток: от 13 дней, от 968 руб."
Город доставки берётся из модуля GeoIp Pro.
Город отправки из location товара или Москва, если не заполнено.
Если у товара нет веса и/или размеров - не делать расчёт.
Конфигурацию можно в текстовых файлах, обязательные настройки такие:
Данные подключения к api.
ID категорий (главная категория товара), где этот расчёт активен
Минимальная и максимальная цена товара, где расчёт активен.
Выбор "тарифа" DPD для расчёта. Если выбрано несколько тарифов, то вывод минимального по цене.
По хорошему нужно кэширование результатов, но я плохо понимаю, как это работает. Наверное записи "id товара -> город назначения -> цена" и регулярная очистка.
Сам API: https://www.dpd.ru/dpd/integration/integration.do2
Там есть php sdk
PS. ocStore 2.3. php5.6