Django easypost buy возвращает неверный синтаксис при использовании тестового api ключа, но недостаточное количество средств в production

Используя библиотеку easypost python, я вызываю функцию buy, передавая курс, как сказано в документации, но она возвращает ошибку.

Можно ли использовать тестовый api ключ с buy for easypost или нет? Я не видел ничего в документации по этому поводу. Может показаться, что это работает с продакшеном, но я пока не могу проверить это, поэтому я хотел узнать, могу ли я проверить это с тестовым api ключом?

Код таков:

import easypost

def get_shipment(shipment_id):
    return easypost.Shipment.retrieve(shipment_id)
......
 shipment = get_shipment(shipment_id)
 try:
    shipment.buy(rate=shipment.lowest_rate())
 except Exception as e:
     raise ValidationError({'detail': e.message})

Сообщение об ошибке, которое я получаю при использовании тестового ключа

Traceback (most recent call last):
  File "/app/returns/serializers.py", line 237, in handle_shipment_purchase
    shipment.buy(rate=shipment.lowest_rate())
  File "/usr/local/lib/python3.6/dist-packages/easypost/__init__.py", line 725, in buy
    response, api_key = requestor.request('post', url, params)
  File "/usr/local/lib/python3.6/dist-packages/easypost/__init__.py", line 260, in request
    response = self.interpret_response(http_body, http_status)
  File "/usr/local/lib/python3.6/dist-packages/easypost/__init__.py", line 321, in interpret_response
    self.handle_api_error(http_status, http_body, response)
  File "/usr/local/lib/python3.6/dist-packages/easypost/__init__.py", line 383, in handle_api_error
    raise Error(error.get('message', ''), http_status, http_body)
easypost.Error: The request could not be understood by the server due to malformed syntax.

Да, вы можете покупать грузы с помощью ключа API TEST. Из кода, которым вы поделились, я не вижу никаких очевидных проблем, но вы, очевидно, захотите дважды проверить, что ваш shipment_id устанавливается правильно и что ваш API-ключ тоже. Кроме того, напишите нам как support@easypost.com, и мы сможем заглянуть в наши системные журналы, чтобы увидеть, что может приходить в "неправильном виде".

У меня та же проблема с Python, хотя мой идентификатор отгрузки и API_KEY верны. с сообщением об исключении EasyPost python не показывает первопричину исключения. Попробуйте выполнить запрос с помощью curl или внутри исключения проверить e.json_body и соответственно поднять ValidationError.

 try:
    shipment.buy(rate=shipment.lowest_rate())
 except Exception as e:
    #  Put debugger here and Check exception e.json_body 
    e.json_body
    raise ValidationError({'detail': e.http_body})
Вернуться на верх