Интеграция с внешними перевозчиками
- Когда есть заказ, который должен быть передан на доставку, либо когда переданный ранее заказ был изменен, Смартомато делает вызов (callback) по зарегистрированному адресу (для регистрации службы внешней перевозки обратитесь в службу поддержки) и передает в параметре
secure_id
заказа. - Перевозчик загружает себе заказ через
secure_id
- Перевозчик поддерживает статус заказа в актуальном состоянии. При изменении положения курьера перевозчик обновляет его гео-положение.
Доступные callback-вызовы
При создании заказа:
POST http://example.com/foo?type=order_created& order_id=1&order_secure_id=ab12dc34eeff
При изменении статуса заказа:
POST http://example.com/foo?type=order_status_changed& order_id=1&order_secure_id=ab12dc34eeff&status=delivery
Описание методов API
Контекст вызовов: http://smartomato.ru/api-delivery/
GET /api-delivery/orders/:secure_id
Возвращает данные заказа. Для доступа используется secure_id
заказа, который приходит в оповещении.
{
"order": {
"id": 65,
"secure_id": "Hf1Bcvv78a4d",
// Человекочитаемый номер заказа для системы логистики Смартомато
"number": "1-14",
"created_at": "2015-02-21T21:08:39+03:00",
// -----
// Блок параметров, которые доступны на запись для перевозчика
// ----
"delivery": {
// Статус внешнего перевозчика заказа: ожидает назначения,
// курьер назначен, курьер доставляет,
// курьер везет заказ клиенту,
// курьер доставил заказ, проблема доставки.
"status": "idle", "courier_assigned", "delivering", "delivered", "problem"
// Сообщение от системы внешней доставки (может указывать на проблему)
"message": "Звоню, а он не берет трубку :("
"courier_name": "Таир Джанибековский",
"courier_phone": "+7 (928) 234-34-34",
// Идентификатор курьера во внешней системе доставки
"courier_external_id": 1337,
"lat": 234.23,
"lon": 2342.43
},
// Статус заказа (только чтение!):
// - новый
// - подтвержден
// - готовится
// - приготовлен
// - доставляется
// - доставлен
// - отменен
"order_status": "new", "confirmed",
"preparing", "prepared", "delivering", "complete", "cancelled"
// Данные клиента
"description": "Привезите скорее, пожалуйста!",
"contact_phone": "+7 (904) 571-25-42",
"contact_name": "John Doe",
// Время доставки в минутах и время, к которому необходимо доставить
"delivery_time": 60,
"delivery_at": "2015-02-21T21:38:39+03:00",
// Время забора товара из ресторана
"pickup_at": "2015-02-21T21:38:39+03:00",
// Доставка как можно скорее
// (означает, что можно привезти раньше назначенного времени)
"delivery_asap": true,
// Тип оплаты: cash, card, courier_card, external_service_card_online
"payment_source": "cash",
// Адрес клиента
"destination": {
"address": "улица Максима Горького, 151 кв. 1, эт. 2",
"city": "Россия, Ростов-на-Дону",
"lon": 39.714285,
"lat": 47.226894
},
// Данные ресторана и адрес
"restaurant": {
"organization_name": "Setters Brew",
"name": "Setters Brew Bar в Ростове",
"phone": "2-33-01-20",
"address": "ул. Максима Горького, 151"
}
"change": 5000, // Нужна сдача с данной суммы (null, если не нужна)
"items_price": 315.0, // Полная цена всех блюд
"delivery_price": 50.0, // Цена доставки
"final_price": 370.0, // Итоговая цена с учетом всех надбавок и доставки
// (сумма, которую клиент должен отдать курьеру)
// Содержимое заказа
"items": [
{
"name": "Ванильный каппучино",
"amount": 1,
"price": 250, // Полная цена данной позиции (с учетом количества и конфигуратора)
"config_text": "Добавки: корица"
},
{
"name": "Эфиопия фуджи",
"amount": 2,
"price": 1000,
"config_text": null
},
...
]
}
PUT /api-delivery/orders/:secure_id/delivery
Изменяет поля, которые доступны на запись перевозчику заказа: положение, имя курьера и т.д. Можно указать только необходимые поля.
Формат запроса (обязателен Content-Type: application/json
):
{
"status": "problem",
"message": "Звоню, а он не берет трубку :(",
"courier_name": "Таир Джанибековский",
"courier_phone": "+7 (928) 234-34-34",
"courier_external_id": 1337,
"lat": 234.23,
"lon": 2342.43
}