За последние 24 часа нас посетили 36503 программиста и 7751 робот. Сейчас ищут 1868 программистов ...

Что делает эта функция ?

Тема в разделе "PHP для новичков", создана пользователем adept77, 19 окт 2022.

  1. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    Добрый день
    Вопрос к специалистам.
    Есть функция, вроде как формирует подпись. Поскольку в яваскрипте я почти ноль, прошу пояснить на пальцах, как она работает, дабы написать ее в пхп.
    HTML:
    1.     function calcSign() {
    2.         // эта часть должна выполняться на сервере! Секретный ключ SHARED_SECRET должен быть только на сервере!
    3.         if (!document.getElementById("NONCE").value) {
    4.             document.getElementById("NONCE").value = vCurDate.getTime();
    5.         }
    6.    
    7.         var vS = "";
    8.         vS = vS + document.getElementById("ORDER").value + ";";
    9.         vS = vS + document.getElementById("AMOUNT").value + ";";
    10.         vS = vS + document.getElementById("CURRENCY").value + ";";
    11.         vS = vS + document.getElementById("MERCHANT").value + ";";
    12.         vS = vS + document.getElementById("TERMINAL").value + ";";
    13.         vS = vS + document.getElementById("NONCE").value + ";";
    14.         vS = vS + document.getElementById("CLIENT_ID").value + ";";
    15.         vS = vS + document.getElementById("DESC").value.replace(/\n|\r/g,"") + ";";
    16.         vS = vS + document.getElementById("DESC_ORDER").value.replace(/\n|\r/g,"") + ";";
    17.         vS = vS + document.getElementById("EMAIL").value + ";";
    18.         vS = vS + document.getElementById("BACKREF").value + ";";
    19.         vS = vS + document.getElementById("Ucaf_Flag").value + ";";
    20.         vS = vS + document.getElementById("Ucaf_Authentication_Data").value + ";";
    21.         vKey = document.getElementById("SHARED_SECRET").value;
    22.         vSign = sha512(vKey+vS);
    23.         document.getElementById("SIGN_DATA").innerHTML = vS;
    24.         document.getElementById("P_SIGN").value = vSign;
    25.         return false;
    26.     }
    27.  
    28.     var vCurDate = new Date();
    29.     document.getElementById("NONCE").value = vCurDate.getTime();
    30.     document.getElementById("ORDER").value = (""+vCurDate.getTime()).substr(4);
    31.  
    32.  
    Если есть желающие проконсультировать, отдельно буду благодарен )
     
    #1 adept77, 19 окт 2022
    Последнее редактирование модератором: 19 окт 2022
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну легко же разобрать. Склеивает значения из кучи полей ввода, и пропускает их через sha512
     
  3. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    откуда берет она эти значение ?
    я точно знаю, что полее ввода одно, оттуда берется значение AMOUNT
    ORDER, насколько я понимаю, уникальное значение. Если в этой функции нет его расчета, скорее всего берется по рандому
    CURRENCY, MERCHANT, TERMINAL - эти три значения вообще не меняются, это идентификатора плательщика
    vKey = document.getElementById("SHARED_SECRET") - этот вообще не должен попадать на сторону клиента, почему тогда js ?

    Вот в этом куске кода ORDER не высчитывается ?
    1. var vCurDate = new Date();
    2. document.getElementById("NONCE").value = vCurDate.getTime();
    3. document.getElementById("ORDER").value = (""+vCurDate.getTime()).substr(4);
     
    #3 adept77, 19 окт 2022
    Последнее редактирование: 19 окт 2022
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну из приведённого кода видно, что полей дохрена. Может часть скрытые, я не телепат
     
  5. adept77

    adept77 Новичок

    С нами с:
    19 окт 2022
    Сообщения:
    61
    Симпатии:
    0
    Вот в этом куске кода ORDER не высчитывается ?
    1. var vCurDate = new Date();
    2. document.getElementById("NONCE").value = vCurDate.getTime();
    3. document.getElementById("ORDER").value = (""+vCurDate.getTime()).substr(4);
     
  6. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Тут высчитывается, да. Текущаяя дата в миллисекундах, чать её строкового представления