Импорт заказов
Заказы можно передавать двумя способами:
- Используя Platform API
- Через файлы
Через API
Надежный и удобный способ отправки заказов – Platform API v4.
Добавление
Приглашения оставить отзыв обычно отправляют клиентам, которые оплатили заказ и заказ уже доставлен. Поэтому рекомендуем в информацию о заказе добавлять как минимум статусы доставки и оплаты.
Если отзывы собираются о товарах, то в заказе необходимо указывать
идентификаторы заказанных товаров. Параметр product_id в этом случае равен
аттрибуту offer.id из YML файла.
Для добавления заказа используйте HTTP метод POST. Ключ аутентификации можно
посмотреть в личном кабинете.
API_TOKEN=xxxxxxxxxxxx
curl -X POST -H "Content-Type: application/vnd.api+json" \
-H "Authorization: Token token=$API_TOKEN" \
--url http://api.aplaut.io/v4/orders \
  -d '{
  "data": {
    "type": "orders",
    "attributes": {
      "number": "order-number-1386",
      "consumer_name": "Александр Лукашенко",
      "consumer_email": "luka@president.by",
      "details": {
        "payment_status": "not-paid",
        "fulfillment_status": "packed",
        "region": 74
      },
      "order_lines": [
        {
          "product_id": 45,
          "name": "Ботинки ECCO 69",
          "price": 6800
        }
      ]
    }
  }
}'
<?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",
        "fulfillment_status" => "packed",
        "region" => 74
      ],
      "order_lines" => [
        [
          "product_id" => 45,
          "name" => "Ботинки ECCO 69",
          "price" => 6800
        ]
      ]
    ]
  ]
];
$response = Unirest\Request::post(
  "https://api.aplaut.io/v4/orders", $headers, $parameters);
$response->code;        // HTTP Status code
?>
# 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',
        fulfillment_status: 'packed',
        region: 74
      },
      order_lines: [
        {
          product_id: 45,
          name: 'Ботинки ECCO 69',
          price: 6800
        }
      ]
    }
  }
}
response = Unirest.post 'https://api.aplaut.io/v4/orders', headers, parameters
puts response.code
Если попытаться создать заказ, который уже есть в БД Aplaut, то вернется
результат с кодом ошибки 422.
Если вы не знаете наверняка, добавлен ли был ранее заказ, то используйте метод API для обновления заказа (см. ниже). Подробнее читайте в документации к API.
Обновление
Для обновления заказа (например, статусов) используйте HTTP метод PUT.
Пример обновления статуса оплаты для ранее добавленного заказа:
API_TOKEN=xxxxxxxxxxxx
curl -X PUT -H "Content-Type: application/vnd.api+json" \
-H "Authorization: Token token=$API_TOKEN" \
--url http://api.aplaut.io/v4/orders/order-number-1386 \
  -d '{
  "data": {
    "type": "orders",
    "attributes": {
      "details": {
        "payment_status": "paid"
      }
    }
  }
}'
<?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.aplaut.io/v4/orders/order-number-1386', $headers, $parameters);
$response->code;        // HTTP Status code
?>
# 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.aplaut.io/v4/orders/order-number-1386', headers, parameters
puts response.code
Если попытаться обновить заказ, которго нет в БД Aplaut, то будет создан новый
заказ с number равным order-number-1386 (из примера). Подробнее читайте в
документации
к API.
Через файлы
В личном кабинете перейдите в раздел Настройки → Импорт данных → Заказы и загрузите файл CSV, XLSX в кодировке UTF-8.
Формат 1
В данном формате каждая строка это один заказ.
| Переменная | Обязат. | Описание | Пример | 
|---|---|---|---|
| number | Да | Номер заказа | |
| consumer_email | Да | Е-mail клиента | |
| consumer_name | Да | Полное имя клиента | |
| created_at | Да | Дата создания заказа | 2014-01-01 00:11:22 | 
| product_ids | Да | ID товаров | 12232|32343|76348 | 
Остальные колонки, кроме указанных выше, будут считаться дополнительными параметрами заказа (поле details объекта заказ). Например, поля payment_status или fulfillment_status.
Через файл можно также обновлять заказы. Например, можно обновить статусы оплаты``` или доставки и заново загрузить файл.
Формат 2
В данном формате каждая строка это одна позиция(товар в корзине) из заказа.
Например, если в заказе две позиции, то в файле будет две одинаковые строки,
которые отличаются только значением колонок product_…
| Переменная | Обязат. | Описание | Пример | 
|---|---|---|---|
| number | Да | Номер заказа | |
| consumer_email | Да | Е-mail клиента | |
| consumer_name | Да | Полное имя клиента | |
| created_at | Да | Дата создания заказа | 2014-01-01 00:11:22 | 
| product_id | Да | ID одного товара | 12232 | 
| product_name | Нет | Название товара | Камера Sony a6400 | 
| product_url | Нет | URL карточки товара | https://shop.site/344 | 
| product_picture_url | Нет | URL картинки товара | https://shop.site/344/cover.jpg | 
Если в файле вместе с колонкой product_id заполнить
product_name, product_url, product_picture_url, то вместе с заказом будут
созданы также товары. В этом случае для работы email кампаний,
каталог товаров можно не импортировать.
Остальные колонки, кроме указанных выше, будут считаться дополнительными параметрами заказа (поле details объекта заказ). Например, поля payment_status или fulfillment_status.
Через файл можно также обновлять заказы. Например, можно обновить статусы оплаты или доставки и заново загрузить файл.
По ссылке
Вы также можете указать URL файла для скачивания. В этом случае файл будет автоматически скачиваться раз в день по указанной в настройках ссылке.
Поддерживаются стандарты HTTP и FTP. t В 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 сервера, напишите нам, мы сможем предоставить свой.