Update app.py
Browse files
app.py
CHANGED
@@ -996,7 +996,7 @@ def get_order_monitop():
|
|
996 |
logging.error(f"An error occurred: {str(e)}")
|
997 |
return json.dumps({"error": str(e)}), 500
|
998 |
|
999 |
-
# Функция для валидации подписи ВК приложения
|
1000 |
def is_valid(*, query: dict, secret: str) -> bool:
|
1001 |
"""Check VK Apps signature"""
|
1002 |
vk_subset = OrderedDict(sorted(x for x in query.items() if x[0][:3] == "vk_"))
|
@@ -1004,7 +1004,7 @@ def is_valid(*, query: dict, secret: str) -> bool:
|
|
1004 |
decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
|
1005 |
return query.get("sign") == decoded_hash_code
|
1006 |
|
1007 |
-
# Функция для для Чтение ордера для приложения
|
1008 |
@app.route('/get_order', methods=['POST'])
|
1009 |
def get_order():
|
1010 |
try:
|
@@ -1013,9 +1013,20 @@ def get_order():
|
|
1013 |
# Читаем параметры из POST-запроса
|
1014 |
vkid = request.form.get('vk_id', '')
|
1015 |
order = request.form.get('order', '')
|
1016 |
-
|
1017 |
-
|
1018 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1019 |
|
1020 |
if not vkid or not order:
|
1021 |
logging.error("VK ID and order are required")
|
|
|
996 |
logging.error(f"An error occurred: {str(e)}")
|
997 |
return json.dumps({"error": str(e)}), 500
|
998 |
|
999 |
+
# Функция для валидации подписи ВК приложения
|
1000 |
def is_valid(*, query: dict, secret: str) -> bool:
|
1001 |
"""Check VK Apps signature"""
|
1002 |
vk_subset = OrderedDict(sorted(x for x in query.items() if x[0][:3] == "vk_"))
|
|
|
1004 |
decoded_hash_code = hash_code.decode('utf-8')[:-1].replace('+', '-').replace('/', '_')
|
1005 |
return query.get("sign") == decoded_hash_code
|
1006 |
|
1007 |
+
# Функция для для Чтение ордера для приложения
|
1008 |
@app.route('/get_order', methods=['POST'])
|
1009 |
def get_order():
|
1010 |
try:
|
|
|
1013 |
# Читаем параметры из POST-запроса
|
1014 |
vkid = request.form.get('vk_id', '')
|
1015 |
order = request.form.get('order', '')
|
1016 |
+
apps_id = request.form.get('apps_id', '') # Сюда придёт ИД ВК приложения, значение будет ключем для поиска Защищённого ключа в переменной 'api_key_apps_vk'
|
1017 |
+
sign = request.form.get('sign', '') # Значение sign полученное при запуске приложения
|
1018 |
|
1019 |
+
# Проверка подлинности подписи
|
1020 |
+
if apps_id not in api_key_apps_vk:
|
1021 |
+
logging.error(f"Invalid apps_id: {apps_id}")
|
1022 |
+
return jsonify({order: 'not'}), 200
|
1023 |
+
|
1024 |
+
secret = api_key_apps_vk[apps_id]
|
1025 |
+
query_params = request.form.to_dict()
|
1026 |
+
|
1027 |
+
if not is_valid(query=query_params, secret=secret):
|
1028 |
+
logging.error("Invalid signature")
|
1029 |
+
return jsonify({order: 'not'}), 200
|
1030 |
|
1031 |
if not vkid or not order:
|
1032 |
logging.error("VK ID and order are required")
|