DmitrMakeev commited on
Commit
262610b
·
verified ·
1 Parent(s): 409ccfa

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -4
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
- sign = request.form.get('sign', '')
1017
- apps_id = request.form.get('apps_id', '')
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")