API Uber python возвращает статус 409 по запросу

56
9

Я следую инструкциям на странице проекта GitHub
Все это работает в режиме песочницы

Сначала я звоню

estimate = client.estimate_ride(
product_id=product_id,
start_latitude=start_lat,
start_longitude=start_long,
end_latitude=end_lat,
end_longitude=end_long,
seat_count=seat_count
)

и вернуть что-то вроде

{
"pickup_estimate": 2,
"trip": {
"distance_estimate": 2.18,
"distance_unit": "mile",
"duration_estimate": 240
},
"fare": {
"fare_id": "14f81e7421f0ae124c2e5a97d0b9cf975cbb84fdd2bf6fc8b7bb2f49fc6c6f8a",
"value": 8.06,
"display": "$8.06",
"currency_code": "USD",
"expires_at": 1489104865
}

}

Затем я использую тот же product_id и fare_id, который я получил выше (с объектом клиента с теми же учетными данными), который запускает этот

response = client.request_ride(
product_id=product_id,
start_latitude=start_lat,
start_longitude=start_long,
end_latitude=end_lat,
end_longitude=end_long,
seat_count=seat_count,
fare_id=fare_id
)

Все, что я получаю, это исключение ClientError со статусом 409.
Любая идея, что неправильно?

спросил(а) 2017-03-10T22:12:00+03:00 3 года, 3 месяца назад
1
Решение
70

Нашел вопрос. Я неправильно печатал данные об ошибках. В результате я увидел только код ошибки, а не детали.

Чтобы увидеть полную информацию об ошибке, я добавил:

    try:
response = client.request_ride(
product_id=product_id,
start_latitude=start_lat,
start_longitude=start_long,
end_latitude=end_lat,
end_longitude=end_long,
seat_count=seat_count,
fare_id=fare_id
)
except ClientError as error:
self.response.out.write("error: {0}, {1}".format(error.errors, error.message))

Затем я получил эту ошибку, которая очень информативна:
409 missing_payment_method Всадник должен иметь хотя бы один способ оплаты в файле, чтобы запросить автомобиль. Всадник должен добавить способ оплаты

ответил(а) 2017-03-11T03:27:00+03:00 3 года, 3 месяца назад
79

Ошибка 409, скорее всего, вызвана тем, что вы уже выполняете поездку в песочнице для этого пользователя. Вы можете проверить с помощью client.get_current_ride_details() и отменить текущую поездку с помощью client.cancel_current_ride().

ответил(а) 2017-03-11T00:36:00+03:00 3 года, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема