Yandex Dostavka API
API wrapper для Yandex Dostavka API
Оглавление
- Установка
- Использование Rails
- Использование Ruby
- Debug Logging
- Custom logger
- Подготовка заявки
- Предварительная оценка стоимости доставки
- Получение интервалов доставки
- Точки самопривоза и ПВЗ
- Получение идентификатора населённого пункта
- Получение списка точек самопривоза и ПВЗ
- Основные запросы
- Создание заявки
- Подтверждение заявки
- Получение информации о заявке
- Получение информации о заявках во временном интервале
- История статусов заявки
- Отмена заявки
- Ярлыки и акты приема-передачи
- Получение ярлыков
- Получение актов приёма-передачи для отгрузки
Получение OAuth-токена:
- Войдите в Кабинет Корпоративного Клиента Яндекс Доставки с помощью выданного вам логина и пароля. Перейдите на вкладку Профиль компании.
- В разделе Токен для API нажмите Получить.
- На странице https://oauth.yandex.ru нажмите Разрешить.
- В Кабинете Корпоративного Клиента Яндекс Доставки на вкладке Профиль компании в разделе Токен для API будет отображен ваш OAuth-токен.
- Получите station id у менеджера.
Ruby
$ gem install yandex-dostavka
Rails
добавьте в Gemfile:
gem 'yandex-dostavka'
и запустите bundle install
.
Затем:
rails g yandex_dostavka:install
В файл config/yandex_dostavka.yml
вставьте ваши данные
Сначала создайте экземпляр объекта YandexDostavka::Request
:
dostavka = YandexDostavka::Request.new(token: "your_token")
Вы можете изменять token
, timeout
, open_timeout
, faraday_adapter
, proxy
, symbolize_keys
, logger
, и debug
:
YandexDostavka::Request.timeout = 15
YandexDostavka::Request.open_timeout = 15
YandexDostavka::Request.symbolize_keys = true
YandexDostavka::Request.debug = false
YandexDostavka::Request.token = "your_token"
Либо в файле config/initializers/yandex_dostavka.rb
для Rails.
Измените debug: true
чтобы включить логирование в STDOUT.
dostavka = YandexDostavka::Request.new(token: "AgAAAADzeAQMAAAPeISvM_9LUkxCijQoFXOH5QE", debug: true)
Logger.new
используется по умолчанию, но вы можете изменить на свой:
dostavka = YandexDostavka::Request.new(token: "AgAAAADzeAQMAAAPeISvM_9LUkxCijQoFXOH5QE", debug: true, logger: MyLogger.new)
Или:
YandexDostavka::Request.logger = MyLogger.new
body = {
client_price: 10000,
destination: {
address: "Санкт-Петербург, ул. Академика Павлова, д. 5"
},
payment_method: "already_paid",
source: {
address: "Санкт-Петербург, ул. Профессора Попова, д. 38"
},
tariff: "time_interval",
total_assessed_price: 10000,
total_weight: 1000
}
response = YandexDostavka::Request.pricing_calculator.create(body: body)
pricing_total = response.body[:pricing_total]
#=> "360 RUB"
params = {
station_id: YandexDostavka.station_id,
full_address: "Санкт-Петербург, Професора Попова, 38",
geo_id: 2
}
response = YandexDostavka::Request.offers.info.retrieve(params: params)
body = {
location: "Санкт-Петербург"
}
response = YandexDostavka::Request.location.detect.create(body: body)
variants = response.body[:variants]
#=> [{:geo_id=>2, :address=>"Россия, Санкт-Петербург"}]
body = {
available_for_dropoff: true,
payment_method: "already_paid",
type: "pickup_point"
}
response = YandexDostavka::Request.pickup_points.list.create(body: body)
points = response.body[:points]
# =>
# [{:id=>"03840f16-3c53-400c-b382-1ecf30e06b64",
# ...
body = {
billing_info: {
delivery_cost: 10000,
payment_method: "card_on_receipt"
},
destination: {
custom_location: {
details: {
comment: "БЦ Ривер Хаус",
full_address: "Санкт-Петербург, ул. Академика Павлова, 5",
room: "601"
}
},
interval: {
from: DateTime.now.to_i,
to: DateTime.tomorrow.to_datetime.to_i
},
type: "custom_location"
},
info: {
comment: "Позвонить за час",
operator_request_id: "100023"
},
items: [
{
article: "55185",
billing_details: {
assessed_unit_price: 237900,
unit_price: 237900
},
count: 1,
name: "Автомобильный держатель Mage Safe Qi для iPhone, магнитный, черный",
place_barcode: "4680431123446"
}
],
places: [
{
barcode: "4680431123446",
physical_dims: {
predefined_volume: 10000,
weight_gross: 1000
}
}
],
recipient_info: {
email: "recipient@email.com",
first_name: "Осетров",
last_name: "Павел",
partonymic: "Федорович",
phone: "+7111111111111"
},
source: {
platform_station: {
platform_id: "03840f16-3c53-400c-b382-1ecf30e06b64"
}
}
}
response = YandexDostavka::Request.offers("create").create(body: body)
body = {
offer_id: "1"
}
response = YandexDostavka::Request.offers.confirm.create(body: body)
response = YandexDostavka::Request.request.info.retrieve(params: {request_id: "873113ce-819a-4a73-b500-dce9dae82299"})
params = {
from: (DateTime.now - 7.day).to_i,
to: DateTime.now.to_i
}
response = YandexDostavka::Request.requests.info.retrieve(params: params)
response = YandexDostavka::Request.request.history.retrieve(params: {request_id: "873113ce-819a-4a73-b500-dce9dae82299"})
response = YandexDostavka::Request.request.cancel.create(body: {request_id: "873113ce-819a-4a73-b500-dce9dae82299"})
body = {
generate_type: "many",
request_ids: [
"873113ce-819a-4a73-b500-dce9dae82299"
]
}
params = {
editable_format: true,
new_requests: true,
created_since: 1643711508,
created_until: 1644489108,
created_since_utc: "2021-10-25T15:00:0.000000Z",
created_until_utc: "2021-10-25T17:00:0.000000Z",
request_ids: "873113ce-819a-4a73-b500-dce9dae82299,dbc17cb3-d3de-48e2-9f7f-b4ff23095df7",
request_code: "my_request_id_123"
}
body = {
request_ids: [
"873113ce-819a-4a73-b500-dce9dae82299",
"dbc17cb3-d3de-48e2-9f7f-b4ff23095df7"
]
}
response = YandexDostavka::Request.request.get_handover_act.create(params: params, body: body)