Перейти к основному содержимому

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

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

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

Через 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&#124;32343&#124;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 сервера, напишите нам, мы сможем предоставить свой.