Есть два готовых алгоритма расчета: с помощью Яндекс карты рассчитывается расстояние от магазина до адреса покупателя, используется api Яндекс карт. При этом отсекаются расстояния от точки соприкосновения с КАДом (Санкт-Петербург, есть полигон на Яндекс картах). Это значит, что внутри полигона (в пределах КАД) доставка бесплатна, оплачивается только расстояние за пределом КАД. Два вида расчета - по дорогам и по радиусам. Скрипты расчетов есть и работают (java script).
Что необходимо сделать: сейчас расчеты выполняются в браузере вызовами к Yandex API. Необходимо вынести эти два расчета на бакендный сервис из браузера. Идеально сделать сервис бакенда на C# core net, но рассматриваются другие варианты.