Update app.py
Browse files
app.py
CHANGED
@@ -1019,11 +1019,15 @@ def get_order_monitop():
|
|
1019 |
def is_valid(*, query: dict, secret: str) -> bool:
|
1020 |
"""Check VK Apps signature"""
|
1021 |
logging.debug(f"Checking signature for query: {query}")
|
1022 |
-
|
1023 |
-
|
1024 |
-
hash_code = b64encode(HMAC(secret.encode(), urlencode(
|
|
|
|
|
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 |
# Чтение ордера по ключу и ВК ИД для приложения
|
|
|
1019 |
def is_valid(*, query: dict, secret: str) -> bool:
|
1020 |
"""Check VK Apps signature"""
|
1021 |
logging.debug(f"Checking signature for query: {query}")
|
1022 |
+
|
1023 |
+
# Если у нас нет параметров, начинающихся с 'vk_', просто используем все параметры запроса
|
1024 |
+
hash_code = b64encode(HMAC(secret.encode(), urlencode(query, doseq=True).encode(), sha256).digest())
|
1025 |
+
|
1026 |
+
# Декодируем base64 и заменяем символы
|
1027 |
decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
|
1028 |
logging.debug(f"Calculated signature: {decoded_hash_code}")
|
1029 |
+
|
1030 |
+
# Сравниваем подпись из запроса с вычисленной
|
1031 |
return query.get("sign") == decoded_hash_code
|
1032 |
|
1033 |
# Чтение ордера по ключу и ВК ИД для приложения
|