Интеграция со службой доставки Ddelivery

Documentation Develop
Develop Python DRF REST API Postgresql PyTest

Интеграция со службой доставки Ddelivery

API запрос создание сущности ddelivery

Описание запроса и параметров

Запрос:

POST http://localhost/api/merch/orderset/<orderset_id>/delivery/

Запроса где orderset_id==65

POST http://localhost/api/merch/orderset/65/delivery/

Входящие параметры:

type - Тип доставки. Смотри DELIVERY_TYPES. Обязательное поле

      Типы доставки (
         "PVZ" – самовывоз (доставка до ПВЗ),
         "COURIER" – КД(Курьерская доставка) (экспресс-доставка до получателя)
         "POCHTA" – Почта
         "PICKUP" –Самовывоз
     )
    

orderset_id - Номер заказа в вашем магазине

delivery_point_id - ПВЗ (пункт самовывоза) ID из справочника «Точки ПВЗ»

Обязательное поле для типа доставки: «1 - Самовывоз»

delivery_company_id - Компания доставки. ID из справочника «Компании доставки»

Обязательное поле для типов доставки: «2 - Курьерская» «3 - Почта России»

pickup_company_id - Компания забора ID из справочника «Компании забора»

Обязательное поле для типов доставки: «2 - Курьерская» «3 - Почта России»

to_city_id - Город назначения. ID из справочника «Населённые пункты»

Обязательное поле для расчета цены доставки и для типов доставки: «2 - Курьерская» «3 - Почта России»**

city - Название города

to_street - Улица назначения

Обязательное поле для типов доставки: «2 - Курьерская» «3 - Почта России»

to_house - Дом назначения.

Обязательное поле для типов доставки: «2 - Курьерская» «3 - Почта России»

to_flat - Квартира назначения.

Обязательное поле для типов доставки: «2 - Курьерская» «3 - Почта России»

to_postal_code - Почтовый индекс назначения. Если не указать, он определится автоматически

price_declared - Оценочная стоимость / руб.

side1 - Габариты (Высота / см)

side2 - Габариты (Ширина / см)
side3 - Габариты (Длина / см)

weight - Вес / кг

item_count - Кол-во мест в заказе (По умолчанию 1)

fio_name - Имя получателя. Обязательное поле.

fio_surname - Фамилия получателя. Обязательное поле.
fio_fathername - Отчество получателя. Обязательное поле.

to_phone - Телефон получателя. Обязательное поле.

to_add_phone - Дополнительный телефон получателя.

to_email - E-mail получателя.

products - Товары в заказе. JSON массив в описании расшифровка значений.

        Описание Products:
                    Products [
                      Inline Model 1
                    ]
                    Inline Model 1 {
                      name (string, optional): Наименование товара ,
                      vendor_code (string, optional): Артикул ,
                      barcode (string, optional): Штрих код ,
                      nds (integer, optional): НДС (принимает значения: 0, 10, 18) ,
                      price_declared (integer, optional): Стоимость одного товара ,
                      count (integer, optional): Кол-во товаров в заказе
                    }
        Пример Products:
                    [
                      {
                        "name": "Товар",
                        "vendor_code": "артикул",
                        "barcode": "Штрих код",
                        "nds": 10,
                        "price_declared": 150,
                        "count": 2
                      }
                    ]
    

services[] - Дополнительные услуги. Array[integer]. Массив ID услуг из справочника «Дополнительне услуги»

comment - Комментарии к заказу.

company_info - Полная информаци о компании полученная от службы Ddelivery. Обязательное поле

Пример:

    {
      "_id": 36881,
      "name": "москва люблинская_9987_с",
      "to_city_id": 151184,
      "to_street": "Плещеева",
      "to_house": "22",
      "to_flat": "211",
      "city": "Москва",
      "region": "г. Москва",
      "region_id": 77,
      "city_type": "г",
      "postal_code": "101000",
      "area": "",
      "kladr": "77000000000",
      "company": "Boxberry",
      "company_id": 4,
      "company_code": "99871",
      "metro": "",
      "description_in": "",
      "description_out": "",
      "indoor_place": "Проезд: Метро Текстильщики. Первый вагон из центра налево в сторону кинотеатра \"Молодежный\". Поднимаетесь на улицу, перед Вами ул. Люблинская. Пройти 5 мин пешком до здания ул. Люблинская д. 7/2 , свернуть во двор, найти вывеску \"ФОТО\", пункт выдачи интернет заказов. Рядом с Аптекой.",
      "address": "109125, Москва г, Люблинская ул, д.7/2, корпус 1",
      "schedule": "пн-пт:10.00-20.00, сб-вс:11.00-18.00",
      "longitude": 37.731164,
      "latitude": 55.713106,
      "type": "2",
      "status": "2",
      "has_fitting_room": false,
      "is_cash": true,
      "is_card": false,
      "dimension_side1": null,
      "dimension_side2": null,
      "dimension_side3": null,
      "weight": null,
      "delivery_company": "4",
      "delivery_company_name": "Boxberry",
      "delivery_company_driver_version": 0,
      "pickup_company_driver_version": 0,
      "pickup_price": 250,
      "delivery_price": 138.6,
      "sorting_price": null,
      "declared_price_fee": 0,
      "delivery_time_min": 1,
      "delivery_time_max": 1,
      "delivery_time_avg": 1,
      "total_price": 388.6,
      "payment_price_fee": 0,
      "delivery_date": null,
      "confirm_date": null,
      "pickup_date": null,
      "payment_time": 0,
      "packing_price": null,
      "packing_required": false,
      "packing_paid": false,
      "items_count": 99,
      "services": [],
      "declared_price_fee_amount": 0,
      "payment_price_fee_amount": 0,
      "payment_availability": 0,
      "client_price": 144.56,
      "company_type": 1
    }
   

price - Общая (объявленная) стоимость. Получено с клиента / руб. Обязательное поле.

delivery_sum - Стоимость доставки. /руб. Обязательное поле.

npp_option - Boolean. По умолчанию true. Считать ли наложенные платёж ?

is_confirm - Boolean. По умолчанию false. Оформить заказ или сохранить как черновик ?

Запрос цены с клиента

Выбор доставки DDelivery

Запрос

method: POST 
url:    http://localhost/api/merch/orderset/{orderset_id}/delivery/check_delivery_price/
POST 
{
  to_city_id:151184 // city_to:
  type:"COURIER"
  delivery_company_id: 33  
}

Ответ:

HTTP_CODE == 200
{
   "price": 407.95,
}

HTTP_CODE == 500
{
   "check_delivery_price": ["server_error"]
}

Выпиант ответа:

{
    "status": "ok",
    "message": "",
    "data": {
        "2": {
            "type": 2,
            "delivery": [
                {
                    "is_cash": true,
                    "price_commission_declared": 16.9,
                    "pickup_company_id": 105,
                    "total_price": 407.95,
                    "price_delivery": 391.05,
                    "delivery_company_name": "Boxberry",
                    "delivery_date": "09.02.2018",
                    "delivery_hold_date": "-",
                    "delivery_company_abbr": "Boxberry",
                    "delivery_days": 3,
                    "percent_commission_declared": 0.5,
                    "delivery_company_id": 4,
                    "service": []
                }
            ],
            "type_name": "Курьерская"
        }
    }
}

Изменение тиража

Запрос

method: POST 
url:    /api/merch/order/<order_id>/
data:   {count: 2}

Ответ

{
  cost:580
  count:2
  delivery_box_size:{width: 20, weight: 1.4, depth: 40, height: 20}
  id:143
  orderset_id:124
  total_cost:580
  *delivery: {price, address(info), type}
}

*delivery - потом

Нажатие по кнопке оплатить

Запрос

method: POST 
url:    /api/merch/orderset/<order_id>/delivery/
data:   {
  comment:"Не торопитесь, я подожду дома"
  fio_fathername:"Ильич"
  fio_name:"Владимир"
  fio_surname:"Ленин"
  to_phone:"7232323232"

  *delivery_company: {"27", delivery_company_name: "DPD Economy",…}
  *delivery_company_id:"27"
  *delivery_point_id:null
  *delivery_sum:1471
  *pickup_company_id:"27"
  *price:0
  *to_flat:"1"
  *to_house:"1"
  *to_street:"Красная Площадь"
}

*delivery_company - шлется с избыточными данными, потом слаться не будет

Ответ

{
 link || error
}