Расчет доставки в современных e-commerce приложениях

Дата публикации:

Если вы вовлечены в e-commerce, а конкретно — в e-trade с помощью мобильных приложений, на первый план постепенно выдвигается автоматизация покупки товаров и сбора необходимых данных для их дальнейшей отправки. Объясним на примере. Допустим, вы предоставляете  услугу отправки товара по почте. В таком случае автоматизация расчета доставки и сбора необходимых для отправки данных превращается в важнейшее условие взаимодействия с клиентами. В противном случае работа сервиса электронной торговли становится чрезмерно сложной.

В чем проблема использования доставки от PayPal?

Не будем ходить вокруг да около и сразу же перейдем к рассмотрению проблемы в практической плоскости. Сервис PayPal предоставляет возможность автоматического расчета доставки и ее ручной настройки. Для этого потребуется только наличие аккаунта PayPal и указание адреса отправки. Все остальное, за исключением тонких настроек, сервис сделает за нас.

Как это выглядит? Перед пользователем появляется специальный блок для введения адреса доставки. Туда вносятся, соответствующие данные, после чего в окошке моментально отображается цена.

Казалось бы, все хорошо. Но в этом подходе есть одна проблема. PayPal не использует API почтовых адресов — данные выводятся на основании собственных настроек. В качестве примера, хотелось бы привести проект Nucleus, в котором ранее использовался предложенный метод.

Как объяснил заказчик, это позволяет ему выигрывать на внутренних доставках, но приводит к потере денег при международных заказах. Дело в том, что стоимость транспортировки товаров по Америке составляла 8 долларов, что значительно ниже средней цены. А доставка за рубеж выходила в 45 долларов (кроме Канады и Мексики), что, в свою очередь, выше среднего ценника.

Workers in parcel delivery company preparing a deliver ** Note: Slight graininess, best at smaller sizes

Способы использования API доставки в Rails App

Казалось бы, в чем проблема? Гемы, хоть и старые, но есть. Документация — тоже. Однако перед нами возникает суровая необходимость использовать сразу несколько сервисов. Как быть? Чтобы избежать путаницы, приходится изыскивать решение, способное использовать один интерфейс для работы с разными сервисами.

Существует два основных варианта:

Использование гема shipping

Гем shipping предоставляет возможность получать данные от таких сервисов как:

Перед началом работы с гемом необходимо получить данные клиента для доступа к API необходимых нам сервисов. А именно:

  • USPS — логин и пароль
  • UPS — логин, пароль, секретный ключ
  • FedEx — логин, пароль, секретный ключ и аккаунт
  • Canada Post — логин
  • New Zealand Post — секретный ключ
  • Shipwire — не требует никаких данных
  • Stamps — логин, пароль, ключ интеграции
  • Kunaki — не требует данных.

Работа с active_shipping

Переходим ко второму гему. Основным объектами, которые нам понадобятся, являются: посылка, адрес отправки и адрес доставки. Используя класс Package, мы можем указать размеры товара:

Package.new(weight,[width,height,depth], unit system)

Стандартная система измерения — метрическая. Однако можно использовать и английскую систему мер. Для этого необходимо указать units: :imperial в качестве последнего параметра.  Далее следует прописать адреса отправки и доставки. Для этого используется класс Location:

Location.new(country: ‘country’,

 state: ‘state’,

 city: ‘city’,

 zip: ‘zip’)

Гем active_shipping имеет один существенный недостаток. Предполагается, что при работе с ним сервису передается полный массив объектов Package с данными по каждому товару. Но при использовании такого метода цена доставки получается неоправданно высокой. Это происходит потому, что сервисы распознают полученный массив, как отдельные посылки и в ответ отправляют суммарную стоимость всех заказов. Плюс предлагают все возможные способы одновременной доставки посылок.

посылки

Получается совсем нехорошо. И с этой проблемой мы столкнулись, когда разрабатывали систему расчета доставки для проекта Nucleus Gallery.

Существуют алгоритмы, позволяющие укладывать прямоугольники на поверхности. Они могут быть двухмерными и трехмерными. Реализация первого алгоритма достаточно сложна. А второго — не только сложна, но еще и невозможна с точки зрения попадания в определенный дедлайн. Она попросту не зависит от количества входных данных.

К чему мы это? К тому, что решением проблемы послужил один простой способ. Для расчета общего веса мы сложили вес всех товаров по отдельности. Система такова. Изначально выбирается товар с максимальной площадью. Его параметры нам необходимы для определения ширины посылки. Далее предполагается, что товары будут укладываться в стопку по принципу пирамиды — наибольший становится основанием, наименьший — вершиной. Исходя из этого, рассчитывается высота посылки. Наконец, собранные данные отправляются одним пакетом на сервер. Это позволило нам приблизить стоимость доставки к реальным цифрам.

И еще одна сложность. Такие сервисы как USPS и UPS проверяют валидность полученных данных только для Америки и только на уровне принадлежности почтового индекса к определенному штату. Это может создать проблемы при передаче информации о доставке на PayPal. Сервис просто не распознает адрес заказчика. В результате возникает коллапс. Для решения этой проблемы необходима сторонняя валидация адреса. Например, smartystreets или Google’s geocoding.

Мы Крым Диджитал

С 2015 года мы предоставляем полный цикл услуг мобильной и веб-разработки клиентам из различных отраслей и разных стран.

Подпишись
на наши новости

Контакты пресс-службы

+ 7 (926) 118-80-32

WhatsApp, Viber, Telegram

Давайте обсудим Ваш проект

или свяжитесь с нами по почте projects@crimeadigital.ru

Нажимая кнопку «Отправить», вы даете согласие на обработку персональных данных

Заполните форму или свяжитесь
удобным для Вас способом

Контакты

г. Севастополь, ул. Руднева, д.41, 4 этаж технопарк ИТ-Крым +7 978 679-76-353 agro@crimeadigital.ru

Социальные сети

Нажимая на кнопку, вы даете согласие на обработку персональных данных и соглашаетесь c политикой конфиденциальности

Крым Диджитал приняла участие в стратегической сессии

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня. Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства. Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Руководители Крым Диджитал приняли участие в стратегической сессии, которая прошла на базе СевГУ 10 июня.

Вместе с Правительством Севастополя, Институтом информационных технологий и управления в технических системах СевГУ и приглашенными ИТ-компаниями города обсудили перспективу развития системы высшего образования в Севастополе.
Представители бизнеса, власти и образовательной системы выступали со своим видением будущих потребностей региона в кадрах, поднимали насущные вопросы обучения студентов, прохождения практики и дальнейшего трудоустройства.

Крым Диджитал является амбассадором идеи образования и взращивания молодых кадров, развивает образовательные проекты и на протяжении 5 последних лет ведет активную работу в направлении поддержки и развития молодых специалистов ИТ-отрасли Крыма.

Выпуск курса Software Testing

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing! Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании. Следующий курс намечен на август. Не пропусти анонс записи!

Мы поздравляем выпускников нашего первого в этом году курса Крым Диджитал Академии по Software Testing!

Всего курс успешно завершили 13 человек. В течение 2 месяцев несмотря на теплую погоду и манящее море ребята ответственно посещали занятия 2 раза в неделю, делали домашние задания и проверочные работы. Трое начинающих специалистов теперь стажеры нашей компании.

Следующий курс намечен на август. Не пропусти анонс записи!

Лицензия на образовательную деятельность

В 2022 году мы получили лицензию на образовательную деятельность по программам дополнительного профессионального образования! Теперь мы можем обучать специалистов по направлениям Ruby on Rails, ReactJS и Software Testing и выдавать удостоверения о повышении квалификации государственного образца.
В 2022 году мы получили лицензию на образовательную деятельность по программам дополнительного профессионального образования! Теперь мы можем обучать специалистов по направлениям Ruby on Rails, ReactJS и Software Testing и выдавать удостоверения о повышении квалификации государственного образца.

Мы вошли в Реестр эффективно и социально значимых предприятий.

По результатам ежегодной финансово-экономической аналитики Межотраслевой рейтинговой компании Крым Диджитал включена в Реестр эффективных и социально значимых предприятий. По итогу аналитики, в рамках отрасли (ОКВЭД 62.01) и региона Крым, CDG вошло в 4% лучших компаний страны, с результатом – 92 балла!
По результатам ежегодной финансово-экономической аналитики Межотраслевой рейтинговой компании Крым Диджитал включена в Реестр эффективных и социально значимых предприятий. По итогу аналитики, в рамках отрасли (ОКВЭД 62.01) и региона Крым, CDG вошло в 4% лучших компаний страны, с результатом – 92 балла!