Перейти к содержанию

Импорт заказов

Заказы можно передавать двумя способами:

  1. Используя Platform API
  2. В файле

Через API

Надежный и удобный способ отправки заказов – Platform API v4. Для работы с API рекомендуем использовать библиотеку Unirest.

Добавление

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

Если отзывы собираются о товарах, то в заказе необходимо указывать идентификаторы заказанных товаров. Параметр product_id в этом случае равен аттрибуту offer.id из YML файла.

Для добавления заказа используйте HTTP метод POST. Ключ аутентификации можно посмотреть в личном кабинете.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
API_TOKEN=xxxxxxxxxxxx
curl -X POST -H "Content-Type: application/vnd.api+json" \
-H "Authorization: Token token=$API_TOKEN" \
--url http://api.shoppilot.ru/v4/orders \
  -d '{
  "data": {
    "type": "orders",
    "attributes": {
      "number": "order-number-1386",
      "consumer_name": "Александр Лукашенко",
      "consumer_email": "luka@president.by",
      "details": {
        "payment_status": "not-paid",
        "fullfilment_status": "packed",
        "region": 74
      },
      "order_lines": [
        {
          "product_id": 45,
          "name": "Ботинки ECCO 69",
          "price": 6800
        }
      ]
    }
  }
}'
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
//Install http://unirest.io/php.html

const API_TOKEN = "xxxxxxxxxxxx";

$headers = [
  'Accept' => 'application/vnd.api+json',
  'Content-Type' => 'application/vnd.api+json',
  'Authorization' => "Token token=" . API_TOKEN
];

$parameters = [
  "data" => [
    "type"=> "orders",
    "attributes" => [
      "number" => "order-number-1386",
      "consumer_name" => "Александр Лукашенко",
      "consumer_email" => "luka@president.by",
      "details" => [
        "payment_status" => "not-paid",
        "fullfilment_status" => "packed",
        "region" => 74
      ],
      "order_lines" => [
        [
          "product_id" => 45,
          "name" => "Ботинки ECCO 69",
          "price" => 6800
        ]
      ]
    ]
  ]
];

$response = Unirest\Request::post(
  "https://api.shoppilot.ru/v4/orders", $headers, $parameters);

$response->code;        // HTTP Status code
?>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# gem install unirest

require 'unirest'

API_TOKEN = 'xxxxxxxxxxxx' # API Token

headers = {
  'Accept': 'application/vnd.api+json',
  'Content-Type': 'application/vnd.api+json',
  'Authorization': "Token token=#{API_TOKEN}"
}

parameters = {
  data: {
    type: 'orders',
    attributes: {
      number: 'order-number-1386',
      consumer_name: 'Александр Лукашенко',
      consumer_email: 'luka@president.by',
      details: {
        payment_status: 'not-paid',
        fullfilment_status: 'packed',
        region: 74
      },
      order_lines: [
        {
          product_id: 45,
          name: 'Ботинки ECCO 69',
          price: 6800
        }
      ]
    }
  }
}

response = Unirest.post 'https://api.shoppilot.ru/v4/orders', headers, parameters

puts response.code

Если попытаться создать заказ, который уже есть в БД Shoppilot, то вернется результат с кодом ошибки 422.

Если вы не знаете наверняка, добавлен ли был ранее заказ, то используйте метод API для обновления заказа (см. ниже). Подробнее читайте в документации к API.

Обновление

Для обновления заказа (например, статусов) используйте HTTP метод PUT.

Пример обновления статуса оплаты для ранее добавленного заказа:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
API_TOKEN=xxxxxxxxxxxx
curl -X PUT -H "Content-Type: application/vnd.api+json" \
-H "Authorization: Token token=$API_TOKEN" \
--url http://api.shoppilot.ru/v4/orders/order-number-1386 \
  -d '{
  "data": {
    "type": "orders",
    "attributes": {
      "details": {
        "payment_status": "paid"
      }
    }
  }
}'
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
//Instal http://unirest.io/php.html

const API_TOKEN = "xxxxxxxxxxxx";

$headers = array(
  'Accept' => 'application/vnd.api+json',
  'Content-Type' => 'application/vnd.api+json',
  'Authorization' => "Token token=" . API_TOKEN);

$parameters = [
  "data" => [
    "type"=> "orders",
    "attributes" => [
      "details" => [
        "payment_status" => "paid"
      ]
    ]
  ]
];

$response = Unirest\Request::put(
  'https://api.shoppilot.ru/v4/orders/order-number-1386', $headers, $parameters);

$response->code;        // HTTP Status code
?>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# gem install unirest

require 'unirest'

API_TOKEN = 'xxxxxxxxxxxx' # API Token

headers = {
  'Accept': 'application/vnd.api+json',
  'Content-Type': 'application/vnd.api+json',
  'Authorization': "Token token=#{API_TOKEN}"
}
parameters = {
  data: {
    type: 'orders',
    attributes: {
      details: {
        payment_status: 'paid'
      }
    }
  }
}
response = Unirest.put 'https://api.shoppilot.ru/v4/orders/order-number-1386', headers, parameters

puts response.code

Если попытаться обновить заказ, которго нет в БД Shoppilot, то будет создан новый заказ с number равным order-number-1386 (из примера). Подробнее читайте в документации к API.

Через файл

В личном кабинете перейдите в раздел Настройки компании → Импорт данных → Заказы.

Поддерживаемый формат файла: CSV, XLSX в кодировке UTF-8.

Обязательные колонки(первая строка таблицы):

  • number – номер заказа
  • consumer_email – email клиента
  • consumer_name – имя клиента
  • created_at – дата создания заказа (формат: 2014-01-01 00:11:22)
  • product_ids – ID товаров в корзине. Разделитель - "|" (например: 12232|32343|76348).

Остальные колонки, кроме указанных выше, будут считаться дополнительными параметрами заказа (поле details объекта заказ). Например, поля payment_status или fullfilment_status.

Скачать пример

Через файл можно также обновлять заказы. Например, можно обновить статусы оплаты или доставки.

По ссылке

Вы также можете указать URL файла для скачивания. В этом случае файл будет автоматиески скачиваться раз в день по указанной в настройках ссылке.

Поддерживаются стандарты HTTP и FTP.

В URL можно использовать шаблонизатор Liquid. Доступна только одна переменная now – время запуска очередного импорта.

Пример шаблона URL:

ftp://username:password@ftp.yoursite.ru:/orders/orders-{{ 'now' | date: '%Y-%m-%d' }}.csv

На момент начала импорта URL будет такой:

ftp://username:password@ftp.yoursite.ru:/orders/orders-2018-09-01.csv

Если у вас нет своего FTP сервера, напишите нам и мы предоставим доступ на нашем сервере.