API сервиса работает по протоколу HTTPS.
BASE_URL = https://tanais.tech/api/v1/
Правило авторизации: Authorization: Basic #строка_авторизации#
где в строку авторизации подставляется закодированная в base64 связка `#логин#:#пароль#`
Заголовок: Content-Type: application/json, означающий, что в теле запроса информация находится в
`json`-формате.
Метод: POST
Адрес: /client/order-files/
В теле запроса отправляются заказы в формате json:
{
"awb": {
"num": "55511951866",
"arrivalDate": 1565557200,
"departureIata": "JFK",
"arrivalIata": "SVO",
"placeCount": 300,
"weight": 456.32,
"sender": "Pochtoy.com",
"receiver": "CLIENT_NAME"
},
"orders": [
{
"num" : "9201990234144400054321",
"firstName": "Sergey",
"lastName": "Ivanov",
"middleName": "Ivanovich",
"phone": "79991231212",
"email": "test@example.com",
"currencyCode": "USD",
"receivingCity": "Arkhangelsk",
"receivingPostal": 123123,
"receivingAddress": "Lenina street 16, k 3, kv 1086",
"idocTypeCode": 21,
"idocSeries": "0010",
"idocNumber": "010101",
"idocDate": 1565557200,
"idocOrg": "УФМС России по Московской области",
"inn": "4513671436",
"isPaid": false,
"files": [
{
"type": "image/png",
"base64": "iVBORw0KGgoAAAANSUhEUg...//Z"
},
{
"type": "image/jpeg",
"base64": "iVBORw0KGgoAAAANSUhEUg...//Z"
},
],
"products": [
{
"name": "Футболка",
"price": 10.00,
"quantity": 2,
"netWeight": 0.196,
"grossWeight": 0.200,
"url": "",
"tnved": ""
},
{
"name": "Джинсы",
"price": 23.00,
"quantity": 1,
"netWeight": 0.400,
"grossWeight": 0.410,
"url": "",
"tnved": ""
}
]
}
]
}
<?php
$url = '/client/order-files/';
$orders = [/* заказы */];
$ordersJson = json_encode($orders);
$login = 'client';
$password = '123456';
$request = curl_init($url);
curl_setopt($request, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($request, CURLOPT_POSTFIELDS, $ordersJson);
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Basic ' . base64_encode("$login:$password"),
]);
$result = curl_exec($request);
Ответ:
```json
{
"queueId": 5
}
Поле `awb` необязательное.
Если у вас ещё нет авианакладной и вы просто хотите проверить, что данные валидны, можно его
опустить. При этом будет сгенерирована временная партия с фиктивным номером AWB. Получить его номер
можно запросом по статусу обработки очереди.
После передачи информации по заказам, данные сохраняются на сервере и в очередь обработки файлов
добавляется запись о том, что этот файл нужно обработать.
`queueId` - это идентификатор записи в очереди.
Метод: GET
Адрес: /client/order-files/{queueId}/
<?php
$queueId = 5;
$url = "/client/order-files/{$queueId}/";
$login = 'client';
$password = '123456';
$request = curl_init($url);
curl_setopt($request, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_HTTPHEADER, [
'Authorization: Basic ' . base64_encode("$login:$password"),
]);
$result = curl_exec($request);
Ответ:
```json
{
"queue": [
{
"id": 5,
"status": "uploaded",
"ordersCount": 0,
"ordersProgress": 0,
"awbNum": "TEMP000000001"
}
]
}
```json
{
"queue": [
{
"id": 5,
"status": "in progress",
"ordersCount": 1000,
"ordersProgress": 576
}
]
}
- `status` может принимать значения `uploaded`, `in -progress`, `finished` и `error`.
- В `ordersCount` хранится количество заказов в файле.
- В `ordersProgress` хранится количество обработанных заказов.
Метод: GET
Адрес: /client/awb-status/{Номер AWB}
<?
$url = '/client/awb-status/12345678/';
$login = 'client';
$password = '123456';
$request = curl_init($url);
curl_setopt($request, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($request, CURLOPT_RETURNTRANSFER, true);
curl_setopt($request, CURLOPT_HTTPHEADER, [
'Authorization: Basic ' . base64_encode("$login:$password"),
]);
$result = curl_exec($request);
Ответ:
```json
{
"awbStatus": "new",
"awbStatusDescription": "Не проверено",
"orders": []
}
- `new` — Не проверено
- `first check` — Первичная проверка
- `sent to customs` — Таможенное оформление
- `answer from customs` — Поступил ответ от таможни
- `archived` — В архиве
```json
{
"awbStatus": "answer from customs",
"awbStatusDescription": "Поступил ответ от таможни",
"orders": [
{
"num": "9201990234144400000001",
"status": "released",
"statusRu": "Выпущен без уплаты пошлины"
}
]
}
Пример: `/client/awb-status/12345678/?with_orders=yes`.
```json
{
"awbStatus": "first check",
"awbStatusDescription": "Первичная проверка",
"orders": [
{
"num": "9201990234144400000001",
"status": "ok",
"statusRu": "Готов к отправке в таможню"
}
]
}
- `not checked` На проверке
- `ok` Готов к отправке в таможню
- `error` Ошибка
- `sent to call center` Отправлен в КЦ
- `sent to customs` Отправлен на таможню
- `released` Выпущен без уплаты пошлины
- `released with payment` Выпущен с уплатой пошлины
- `needs payment` Необходимо оплатить пошлину