抖店 Python SDK
抖店 Python SDK.
Приглашаем разработчиков, связанных с «Озон», сканировать QR-код и присоединиться к QQ группе для обсуждения (номер группы: 799137292):
«Озон» Python SDK поддерживает как приложения для личного использования, так и инструменты для разработки. Подробные инструкции см. на официальном сайте.
$ pip install doudian
Подготовьте app key, app secret, shop id и другие параметры в соответствии с официальными документами.
В файле examples.py показан бэкэнд с интерфейсом запроса списка заказов для членов клуба и обработки push-уведомлений. Сначала измените несколько параметров конфигурации в файле examples.py:
# App类型,SELF=самостоятельное приложение, TOOL=инструментальное приложение
APP_TYPE = AppType.SELF
# 应用key,длина 19 цифр
APP_KEY = '3409409348479354011'
# 应用密钥 字符串
APP_SECRET = '2ad2355c-01d0-11f8-91dc-05a8cd1054b1'
# 店铺ID,самостоятельное приложение обязательно.
SHOP_ID = '323423'
# token缓存文件
TOKEN_FILE = './323423.token'
# 日志记录器, записывает веб-запросы и детали обратных вызовов
logging.basicConfig(filename=os.path.join(os.getcwd(), 'demo.log'), level=logging.DEBUG, filemode='a', format='%(asctime)s - %(process)s - %(levelname)s: %(message)s')
LOGGER = logging.getLogger("demo")
# Прокси-сервер, None или {"https": "http://10.10.1.10:1080"}, подробности см. в https://docs.python-requests.org/zh_CN/latest/user/advanced.html
PROXY = None
# Режим песочницы для тестирования магазинов
TEST_MODE = False
Затем инициализируйте экземпляр DouDian и настройте подходящий интерфейс:
# Инициализация
doudian = DouDian(
app_key=APP_KEY,
app_secret=APP_SECRET,
app_type=APP_TYPE,
shop_id=SHOP_ID,
token_file=TOKEN_FILE,
logger=LOGGER,
proxy=PROXY,
test_mode=TEST_MODE
)
app = Flask(__name__)
@app.route('/brandList')
def brand_list():
# В качестве примера возьмём получение авторизованных брендов магазина, обратитесь к официальному документу, чтобы правильно собрать путь и параметры, а затем вызвать, чтобы получить данные авторизованного бренда магазина.
# https://op.jinritemai.com/docs/api-docs/13/54
path = '/shop/brandList'
params = {}
result = doudian.request(path=path, params=params)
return jsonify({'result': result if result else ''})
Проверьте правильность параметров, теперь вы можете запустить его с помощью интерпретатора Python:
$ python examples.py
* Serving Flask app "examples" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Теперь перейдите по адресу http://127.0.0.1:5000/orderList, если всё работает правильно, вы увидите что-то вроде следующего JSON:
{
"result":
{
"code":10000,
"data":[],
"err_no":0,
"log_id":"20211203091350010194059098259B567F",
"message":"success",
"msg":"success",
"sub_code":"",
"sub_msg":""
}
}
На этом этапе минимальный бэкенд завершён.
Если не удаётся выполнить этот шаг, обязательно тщательно проверьте все параметры инициализации. При необходимости войдите в фоновый режим «Озона» и сбросьте все параметры.
Далее настроим интерфейс для обработки push-уведомлений, чтобы получать и обрабатывать push-уведомления от «Озона».
@app.route('/notify', methods=['POST'])
def notify():
result = doudian.callback(request.headers, request.data)
if result:
tag = result.get('tag')
if tag == '0': # Проверка сообщения службы push-уведомлений «Озона», необходимо немедленно вернуть success
return jsonify({'code': 0, 'msg': 'success'})
if tag == '100': # Сообщение о создании заказа, дополнительные типы сообщений см. в официальном документе.
# TODO: Выполнить необходимую бизнес-обработку в соответствии с параметрами сообщения, вернуть успех в течение 5 секунд
return jsonify({'code': 0, 'msg': 'success'})
return jsonify({'code': 0, 'msg': 'success'})
else:
return jsonify({'code': 40041, 'message': 'Ошибка анализа данных push-уведомления'})
После настройки интерфейса для обработки push-уведомлений настройте URL-адрес в фоновом режиме «Озона», и сервер «Озона» автоматически отправит проверочное сообщение с тегом «0». После успешной проверки можно будет использовать службу push-уведомлений.
Все вызовы API «Озона» выполняются через интерфейс doudian.request(). Этот интерфейс требует передачи параметров path и params.
Значения параметров должны соответствовать официальному документу. Форма аналогична следующему коду, где params нужно передать только параметры запроса или бизнес-параметры, общие параметры передавать не нужно, SDK обработает их автоматически:
params.update({'page':1})
params.update({'size':50})
result = doudian.request(path=path, params=params)
### init_token(code: str)
Используется для инициализации или сброса access token. Обычно не требуется вызывать вручную. Вызов необходим только в следующих случаях:
* При инициализации DouDian приложением типа Tool (AppType.TOOL), если код не был передан.
* Когда приложению типа Tool (AppType.TOOL) или Self (AppType.SELF) необходимо принудительно сбросить access token.
* Если возникает исключение TokenError.
### callback(headers: dict, body: bytes)
Интерфейс для анализа и проверки сообщений, отправленных через Push-уведомления от Doudian. В интерфейс передаются заголовки headers и тело сообщения body без изменений. Затем они автоматически анализируются и проверяются.
```python
result = doudian.callback(request.headers, request.data)
Этот интерфейс используется для создания URL авторизации для приложений типа Tool. Сгенерированный URL отправляется продавцу для завершения процесса аутентификации и получения кода. Полученный код можно использовать для инициализации или сброса access token с помощью интерфейса init_token.
service_id = 'demo service id'
state = 'demo state'
result = doudian.build_auth_url(service_id=service_id, state=state)
Примеры использования этих интерфейсов можно найти в файле examples.py.
Соответствие типов параметров между документацией Doudian API и Python SDK:
Тип параметра в документации Doudian API | Тип параметра в Python SDK |
---|---|
String | str |
Int64, Number | int |
object, Json, Struct | dict: {} |
List, JsonArray | list: [] |
Bool | bool: True, False |
Каждая функция интерфейса возвращает None или json.
Одной из проблем, с которой сталкиваются разработчики, является сбой при анализе и проверке сообщений. Это может быть связано с тем, что разные веб-фреймворки Python по-разному обрабатывают обратные вызовы. Если возникают проблемы с проверкой, убедитесь, что переданные заголовки headers и тело message body соответствуют ожидаемым типам и значениям.
Передайте request.headers и request.data напрямую.
result = doudian.callback(headers=request.headers, body=request.data)
Django выполняет предварительную обработку заголовков. Используйте следующий подход.
headers = {}
headers.update({'app-id': request.META.get('HTTP_APP_ID')})
headers.update({'event-sign': request.META.get('HTTP_EVENT_SIGN')})
result = doudian.callback(headers=headers, body=request.body)
Передайте request.headers и request.body напрямую.
result = doudian.callback(headers=request.headers, body=request.body)
Следуйте описанным выше подходам, чтобы обеспечить соответствие переданных и полученных значений. Не преобразуйте данные в dict или string.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )