DmitrMakeev commited on
Commit
ddf3d6a
·
verified ·
1 Parent(s): af4eca3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +17 -2
app.py CHANGED
@@ -1018,9 +1018,12 @@ def get_order_monitop():
1018
  # Функция для валидации подписи ВК приложения
1019
  def is_valid(*, query: dict, secret: str) -> bool:
1020
  """Check VK Apps signature"""
 
1021
  vk_subset = OrderedDict(sorted(x for x in query.items() if x[0][:3] == "vk_"))
 
1022
  hash_code = b64encode(HMAC(secret.encode(), urlencode(vk_subset, doseq=True).encode(), sha256).digest())
1023
  decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
 
1024
  return query.get("sign") == decoded_hash_code
1025
 
1026
  # Чтение ордера по ключу и ВК ИД для приложения
@@ -1035,6 +1038,8 @@ def get_order():
1035
  apps_id = request.form.get('apps_id', '') # Сюда придёт ИД ВК приложения
1036
  sign = request.form.get('sign', '') # Подпись приложения
1037
 
 
 
1038
  # Проверяем наличие обязательных параметров
1039
  if not vkid or not order:
1040
  logging.error("VK ID and order are required")
@@ -1046,20 +1051,24 @@ def get_order():
1046
  return json.dumps({"error": "Invalid apps_id"}), 400
1047
 
1048
  secret = api_key_apps_vk[apps_id]
 
1049
 
1050
  # Проверяем подпись
1051
  query_params = request.form.to_dict()
 
1052
  if not is_valid(query=query_params, secret=secret):
1053
  logging.error("Invalid signature")
1054
  return json.dumps({"error": "Invalid signature"}), 400
1055
 
1056
  # Подключаемся к базе данных
 
1057
  conn = sqlite3.connect(DATABASE_NEW)
1058
  cursor = conn.cursor()
1059
 
1060
  # Ищем запись по vk_id
1061
  cursor.execute("SELECT orders FROM contacts WHERE vk_id = ?", (vkid,))
1062
  result = cursor.fetchone()
 
1063
 
1064
  # Если запись по vk_id не найдена, возвращаем значение "not" для ордера
1065
  if not result:
@@ -1069,11 +1078,17 @@ def get_order():
1069
 
1070
  # Извлекаем данные из результата
1071
  shop_st = result[0] if result[0] else '{}'
1072
- shop_st_data = json.loads(shop_st)
1073
- logging.debug(f"Existing record found. Loaded JSON: {shop_st_data}")
 
 
 
 
 
1074
 
1075
  # Ищем значение по ключу order
1076
  value = shop_st_data.get(order, 'not')
 
1077
 
1078
  # Возвращаем данные из столбца
1079
  response = {order: value}
 
1018
  # Функция для валидации подписи ВК приложения
1019
  def is_valid(*, query: dict, secret: str) -> bool:
1020
  """Check VK Apps signature"""
1021
+ logging.debug(f"Checking signature for query: {query}")
1022
  vk_subset = OrderedDict(sorted(x for x in query.items() if x[0][:3] == "vk_"))
1023
+ logging.debug(f"Filtered VK params: {vk_subset}")
1024
  hash_code = b64encode(HMAC(secret.encode(), urlencode(vk_subset, doseq=True).encode(), sha256).digest())
1025
  decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
1026
+ logging.debug(f"Calculated signature: {decoded_hash_code}")
1027
  return query.get("sign") == decoded_hash_code
1028
 
1029
  # Чтение ордера по ключу и ВК ИД для приложения
 
1038
  apps_id = request.form.get('apps_id', '') # Сюда придёт ИД ВК приложения
1039
  sign = request.form.get('sign', '') # Подпись приложения
1040
 
1041
+ logging.debug(f"Received data: vk_id={vkid}, order={order}, apps_id={apps_id}, sign={sign}")
1042
+
1043
  # Проверяем наличие обязательных параметров
1044
  if not vkid or not order:
1045
  logging.error("VK ID and order are required")
 
1051
  return json.dumps({"error": "Invalid apps_id"}), 400
1052
 
1053
  secret = api_key_apps_vk[apps_id]
1054
+ logging.debug(f"Using secret: {secret}")
1055
 
1056
  # Проверяем подпись
1057
  query_params = request.form.to_dict()
1058
+ logging.debug(f"Query params for signature check: {query_params}")
1059
  if not is_valid(query=query_params, secret=secret):
1060
  logging.error("Invalid signature")
1061
  return json.dumps({"error": "Invalid signature"}), 400
1062
 
1063
  # Подключаемся к базе данных
1064
+ logging.debug(f"Connecting to database {DATABASE_NEW}")
1065
  conn = sqlite3.connect(DATABASE_NEW)
1066
  cursor = conn.cursor()
1067
 
1068
  # Ищем запись по vk_id
1069
  cursor.execute("SELECT orders FROM contacts WHERE vk_id = ?", (vkid,))
1070
  result = cursor.fetchone()
1071
+ logging.debug(f"Database query result: {result}")
1072
 
1073
  # Если запись по vk_id не найдена, возвращаем значение "not" для ордера
1074
  if not result:
 
1078
 
1079
  # Извлекаем данные из результата
1080
  shop_st = result[0] if result[0] else '{}'
1081
+ logging.debug(f"Raw shop_st data: {shop_st}")
1082
+ try:
1083
+ shop_st_data = json.loads(shop_st)
1084
+ logging.debug(f"Parsed shop_st data: {shop_st_data}")
1085
+ except json.JSONDecodeError as e:
1086
+ logging.error(f"Error parsing JSON: {e}")
1087
+ return json.dumps({"error": "Error parsing JSON"}), 500
1088
 
1089
  # Ищем значение по ключу order
1090
  value = shop_st_data.get(order, 'not')
1091
+ logging.debug(f"Order value: {value}")
1092
 
1093
  # Возвращаем данные из столбца
1094
  response = {order: value}