Создание заказов

Создание поставки с заказами

POST /api/create_shipment

Передает в систему Glavpunkt.ru данные об заказах, планируемых к отгрузке или забору. При этом формируется электронная накладная.

Метод позволяет создавать следующие виды заказов:

  1. Самовывоз в ПВЗ

  2. Курьерская доставка

  3. Выдача Почтой РФ

Примеры запросов

Пример запроса с использованием Php + Curl

<?php

$data = json_encode([
  "login" => "userlogin", // логин интернет-магазина
  "token" => "token", // token для авторизации
  "shipment_options" => [
      "skip_existed " => 1, // Если какой-либо из заказов уже создан, то пропустить его.
                            // В противном случае ни один из заказов в запросе не будет создан.
      "method" => "self_delivery", // Метод отгрузки self_delivery - самопривоз, или pickup - забор.
      "punkt_id" => "AB-SPB-Moskovskaya", // Пункт отгрузки, если метод отгрузки self_delivery
      "pickup_id" => 123, // Номер заявки на забор, если метод отгрузки pickup

      // Следующие параметры передавайте, только если нужно создать новый забор (т.е. нужен забор, но у вас еще нет pickup_id)
      "pickup_city" => "7800000000000", // Кладр города (или "SPB" или "Санкт-Петербург").
      "pickup_date" => "2020-02-03", // Дата забора в формате "Y-m-d". Должна быть не раньше завтрашнего дня
      "pickup_interval" => "10-18", // Интервал забора
      "pickup_address" => "Санкт-Петербург, ул Седова д.12",
      "pickup_comment" => "Комментарий к заявке на забор" // Не обязательно
  ],
  "orders" => [
      // Заказ на выдачу в ПВЗ
      [
          "serv" => "выдача",
          "pvz_id" => "AB-SPB-Moskovskaya",
          "sku" => "ТEST-PKG-1",
          "price" => 1000, // Сумма к получению. Если передан 0, значит заказ предоплачен.
          "insurance_val" => 2000, // Оценочная (страховая) стоимость заказа
          "weight" => 0.3, // Общий вес заказа в кг.
          "parts" => [ // Номенклатура заказа
              [
                  "name" => "Футболка 1",
                  "price" => 200, // Сумма к получению за единицу товара
                  "insurance_val" => 400, // Оценочная (страховая) стоимость единицы товара
                  "num" => 1, // Количество позиций товара (по-умолчанию 1)
                  "weight" => 0.1
              ],
              [
                  "name" => "Футболка 2",
                  "price" => 200,
                  "insurance_val" => 400,
                  "num" => 1,
                  "weight" => 0.1
              ],
              [
                  "name" => "Футболка 3",
                  "price" => 600,
                  "insurance_val" => 1200,
                  "num" => 1,
                  "weight" => 0.1
              ]
          ]
      ],
      // Заказ на курьерскую доставку
      [
          "serv" => "курьерская доставка",
          "sku" => "ТEST-PKG-2",
          "barcode" => "830467",
          "price" => 0, // Заказ предоплачен
          "insurance_val" => 2000,
          "buyer_phone" => "79001112233",
          "buyer_fio" => "Иванов И.И",
          "buyer_email" => "email@mailserver.com",
          "weight" => 1,
          "delivery" => [ // Параметры курьерской доставки
              "city" => "7800000000000", // Кладр города (или "SPB" или "Санкт-Петербург").
              "address" => "ул. Маяковского д.9",
              "date" => "2025-02-03",
              "time_from" => "10:00",
              "time_to" => "18:00"
          ],
          "parts" => [
              [
                  "name" => "Футболка",
                  "price" => 0,
                  "insurance_val" => 2000
              ]
          ]
      ],
      // Заказ на доставку Почтой России
      [
          "serv" => "почта",
          "sku" => "ТEST-PKG-3",
          "price" => 1000,
          "insurance_val" => 2000,
          "buyer_phone" => "79001112233",
          "weight" => 1,
          "pochta" => [
              "address" => "123098, Россия, москва Рогова, дом 12, корпус 2, строение 1"
              "index" => "123098"
          ],
          "parts" => [
              [
                  "name" => "Футболка",
                  "price" => 1000,
                  "insurance_val" => 2000
              ]
          ]
      ],
      // Заказ с возможностью частичной выдачи
      [
          "serv" => "выдача",
          "pvz_id" => "AB-SPB-Moskovskaya",
          "partial_giveout_enabled" => 1, // признак возможности частичной выдачи
          "sku" => "ТEST-PKG-1",
          "price" => 500, // Для заказов с возможностью частичной выдачи, поле price должно
                          // совпадать с суммой полей price в номенклатуре (parts)
          "insurance_val" => 200,
          "parts" => [ // Номенклатура заказа
              [
                  "name" => "Футболка",
                  "price" => 200,
                  "insurance_val" => 200
              ],
              [
                  // Обратите внимание: в случае, если нужно взять с клиента стоимость доставки,
                  // ее требуется передать отдельной частью.
                  "name" => "Стоимость доставки",
                  "price" => 300,
                  "insurance_val" => 0
              ]
          ]
      ],
  ]
]);

$ch = curl_init();

// set url
curl_setopt($ch, CURLOPT_URL, "https://glavpunkt.ru/api/create_shipment");

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
  "Content-Type: application/json",
  "Content-Length: " . strlen($data)
]);

// return JSON
$result = curl_exec($ch);
curl_close($ch);

Пример запроса Curl из командной строки

$ curl --header "Content-Type: application/json" \
--request POST \
--data '{"login":"userlogin","token":"token","shipment_options":{"method":"self_delivery","punkt_id":"AB-SPB-Moskovskaya"},"orders":[{"validate_parts_strict":1,"serv":"выдача","sku":"TEST-PKG-CURL","pvz_id":"AB-SPB-Moskovskaya","price":1000,"insurance_val":1000,"parts":[{"name":"Товар","price":1000,"insurance_val":1000}]}]}' https://glavpunkt.ru/api/create_shipment

Ответ

если заказы сохранены успешно

{
   result : "ok",
   docnum : 2123, // номер созданной поставки (накладной)
   pkgs : { "track_code": "код_главпункт", "sku": "номер заказа Им" ...}
   pickup_id : 123 // Если в запросе были переданы данные для создания забора, вернется его id
}

если произошла ошибка

{
   result  : "error",
   message : "сообщение об ошибке"
}

Справочник параметров заказа (элемента массива orders)


Название параметра

Описание

Возможные значения

Обязательный?

serv

Тип заказа

выдача“, „курьерская доставка“, „почта

Да

sku

Номер заказа

Произвольная строка длиной до 3 до 35 символов

Да, должен быть уникальным

price

Стоимость заказа к оплате (если передан 0, значит заказ предоплачен!).

Внимание: стоимость доставки можно передать в составе номенклатуры заказа (см. пример «Заказ с возможностью частичной выдачи»)

Число

Да

insurance_val

Оценочная стоимость

Число

Да

weight

Вес заказа

Вес в кг (до 20 кг)

Нет

barcode

Штрих-код заказа

Произвольная строка длиной до 100 символов

Нет

buyer_fio

ФИО клиента

Произвольная строка длиной до 255 символов

Обязательно для заказов с типом „курьерская доставка“, „почта“ и самовывоза за пределами Спб и Мск.

buyer_phone

Телефон клиента

Указывайте телефон, на который клиент сможет получить SMS. Пример: 79001112233

Обязательно для заказов с типом „курьерская доставка“, „почта“ и самовывоза за пределами Спб и Мск.

buyer_email

E-mail клиента

Валидный E-mail

Нет

comment

Комментарий к заказу

Произвольная строка длиной до 255 символов

Нет

items_count

Количество мест в заказе. Используетсядля печати этикеток

Не более 20 мест (по-умолчанию „1“)

Нет

partial_giveout_enabled

Разрешить выдачу заказа по частям. Требуется передать состав заказа в поле parts. См. Параметры указания номенклатуры (товаров)

1“ если заказ можно выдавать частично (по-умолчанию „0“)

Нет

primerka

Услуга примерочной на пункте выдачи

1 - да, 0 - нет

Нет. Доступно только для пунктов: Озерки, Купчино2, Чернышевская, Сенная

pvz_id

ID ПВЗ для самовывоза

См. справочник ПВЗ

Обязательно для заказа с услугой „выдача

delivery

Параметры курьерской доставки

См. Параметры курьерской доставки

Обязательно для заказа с услугой „курьерская доставка

pochta

Доступно только для заказов, отгружаемых на ПВЗ в г. Санкт-Петербург. Параметры выдачи заказа почтой России

См. Параметры выдачи заказа Почтой России

Обязательно для заказа с услугой „почта

Параметры курьерской доставки


city

Код населенного пункта для доставки.

Для доставки по Спб указать «SPB», для Москвы - «MSK». Указание названия города возможно, но для повышения точности рекомендуем передавать его код.

См. Города России для услуги курьерская доставка

Да

address

Адрес доставки

Подробный адрес доставки

Да

date

Дата доставки. По воскресеньям доставки нет.

yyyy-mm-dd

Да, если доставка по СПб, Мск и их областям. Для остальных регионов не обязательно.

time_from

Нижний интервал доставки (только Спб, Мск и их области)

10:00

Нет

time_to

Верхний интервал доставки (только Спб, Мск и их области)

18:00

Нет

evening

Доставить в вечерний интервал. Стоимость доставки возрастает на 50%. Доступно только для заказов с доставкой «По Петербургу» (не включая область)

1“ если необходимо, „0“ - если не требуется (по-умолчанию „0“)

Нет

Параметры выдачи заказа Почтой России


address

Максимально подробный адрес. Рекумендуем в начале адреса указывать почтовый индекс.

123098, Россия, Москва Рогова, дом 12, корпус 2, строение 1

Да

index

Индекс почтового отделения.

123098

Нет

Параметры указания номенклатуры (товаров)


name

Наименование товара

Война и мир, Л.Н.Толстой, том 1

Да

price

Стоимость единицы товара к оплате

100

Да

insurance_val

Оценочная (страховая) стоимость единицы товара

100

Да

barcode

Штрих-код

Нет

num

Количество товара (по-умолчанию „1“). Используется для расчета итоговой стоимости заказа.

1

Нет

Добавление заказов к поставке

POST /api/append_shipment

Дополняет существующую поставку (созданную с помощью /api/create_shipment) дополнительными заказами.

shipment_id - это номер поставки, возвращаемый в параметре docnum при создании накладной с помощью /api/create_shipment

Параметры заказов orders см в POST /api/create_shipment

Пример запроса

{
  login : "userlogin",       // логин интернет-магазина
  token : "xxxx_token_xxxx", // token для авторизации
  shipment_id: 777777,       // ID существующей поставки
  orders : [
    {
      serv  : 'выдача',
      sku   : "ТEST-1",
      price : 123,
      insurance_val : 123,
      pvz_id : "AB-SPB-Moskovskaya"
    }
  ]
}

Формирование заказов из товаров на складе

POST /api/create_fullfilment

Метод позволяет сформировать заказ из товаров, находящихся на складе Glavpunkt.ru При этом формируется электронная накладная.

Параметры метода создания заказа такие же, как в /api/create_shipment. Единственное отличие, в массиве заказа надо указывать обязательное поле goods. Поле price сверяется с суммой, равной стоимости передаваемых товаров.

Пример запроса

{
  login : "userlogin",       // логин интернет-магазина
  token : "xxxx_token_xxxx", // token для авторизации
  punkt_id : "AB-SPB-Moskovskaya", // Пункт, где надо сформировать заказы
  orders : [
    {
      serv : "выдача",
      pvz_id : "AB-SPB-Moskovskaya",
      sku : "ТEST-PKG-1",
      price : 1000, // Сумма к получению. Если передан 0, значит заказ предоплачен.
      insurance_val : 2000, // Оценочная (страховая) стоимость заказа
      weight : 0.3, // Общий вес заказа в кг.
      goods : [ // Номенклатура заказа
        {
          id : "123456", // идентификатор товара
          num : 200, // Сумма к получению за единицу товара
        },
        {
          sku : "Футболка 2", // артикул товара (sku)
          num : 10, // Количество позиций товара (по-умолчанию 1)
        },
        {
          // в случае передачи и id и sku - приоритетным будет считаться id
          id : "5645", // идентификатор товара
          sku : "Футболка 3", // артикул товара (sku)
          num : 200, // Сумма к получению за единицу товара
        }
      ]
    }
  ]
}

Для получения остатков товаров на складе, см. Получить товары, находящиеся в Главпункте

Ответ

если заказы сформированы успешно

{
   result : "ok",
   docnum : 2123, // номер созданной накладной
   pkgs : { "track_code": "код_главпункт", "sku": "номер заказа Им" ...}
}

если произошла ошибка

{
   result  : "error",
   message : "сообщение об ошибке"
}

Устаревший метод создания поставки:

См. Создание поставки с заказами (УСТАРЕВШИЙ МЕТОД!)