from dotenv import load_dotenv import os load_dotenv() import sqlite3 import requests conn = sqlite3.connect("./files/rokky.db") partner = os.getenv('partner') user_name = os.getenv('userName') password = os.getenv('password') headers = { 'Content-Type': 'application/json', } BASE_URL = "https://partner.rokky.com/api/v1" json_data = { 'partner': partner, 'userName': user_name, 'password': password, 'scope': 'WebApi', } def tokens(): response = requests.post('https://partner.rokky.com/api/v1/tokens', headers=headers, json=json_data) # print(response.json()) data = response.json() access_token = data["accessToken"] return access_token access_token = tokens() def get_orders(access_token, page=1, page_size=25): url = f"{BASE_URL}/orders" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } payload = { "page": page, "pageSize": page_size } response = requests.get(url, headers=headers, json=payload) response.raise_for_status() print(response.json()) # return response.json() def download_products(): # url = f"https://cdn-partners.rokky.com/partner-catalogs/{user_name}_products.json.gz.enc" url = f"https://rokky-cdn.azureedge.net/partner-catalogs/{user_name}_products.json.gz.enc" response = requests.get(url) response.raise_for_status() with open("./files/products.json.gz.enc", "wb") as f: f.write(response.content) print("Каталог продуктов скачан.") # get_orders(access_token) def download_prices(): # url = f"https://cdn-partners.rokky.com/partner-catalogs/{partner}_prices.json.gz.enc" url = f"https://rokky-cdn.azureedge.net/partner-catalogs/{user_name}_prices.json.gz.enc" response = requests.get(url) response.raise_for_status() with open("./files/prices.json.gz.enc", "wb") as f: f.write(response.content) print("Каталог цен скачан.") def create_order(sku, unit_price, partner_order_id): # try: conn = sqlite3.connect("./files/rokky.db") cursor = conn.cursor() url = f"{BASE_URL}/orders" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } payload = { "items": [ { "sku": int(sku), "quantity": 1, "unitPrice": float(unit_price) } ], "partnerOrderId": f"my-orders{partner_order_id}" } try: response = requests.post(url, json=payload, headers=headers, timeout=30) # 🔥 Самое важное: если статус не 2xx — печатаем детали ошибки if response.status_code >= 400: print(f"\n❌ Ошибка {response.status_code}") print(f"🔍 URL: {response.url}") print(f"📦 Тело запроса: {payload}") print(f"📄 Ответ сервера (raw): {response.text}") # Пробуем распарсить как JSON, если сервер возвращает структурированную ошибку try: error_data = response.json() print(f"🧩 Ответ сервера (json): {error_data}") except ValueError: pass # Ответ не JSON, уже напечатали raw выше response.raise_for_status() # Всё равно выбрасываем исключение r = response.json() order_id = r["orderId"] print(partner_order_id) print(order_id) cursor.execute(""" UPDATE orders SET orders_rokky = ? WHERE id_i = ? """, (order_id, partner_order_id)) conn.commit() conn.close() except requests.exceptions.RequestException as e: print(f"🌐 Сетевая ошибка: {e}") raise # print(response.json()) # return response.json() def get_orders(page=1, page_size=25): url = f"{BASE_URL}/orders" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } payload = { "page": page, "pageSize": page_size } response = requests.get(url, headers=headers, json=payload) response.raise_for_status() return response.json() def get_order_content(order_id): cursor = conn.cursor() url = f"{BASE_URL}/orders/{order_id}/content" headers = { "Authorization": f"Bearer {access_token}", "Content-Type": "application/json" } response = requests.get(url, headers=headers) response.raise_for_status() data = response.json() con = data['orderContentItems'] for c in con: content = c['content'] cursor.execute(""" UPDATE orders SET key = ? WHERE orders_rokky = ? """, (content, order_id)) conn.commit() conn.close() return content # content = get_order_content(5388720) # print(content) # orders = get_orders() # print(orders) # order = create_order(22785, 22.63, "my-test-order-122w3") # print(order) # download_prices(partner) # download_products(user_name)