Исправление работы GameCMS + ЮМани после 18.05.2026

Refresh

Скриптер
Участник
Сообщения
49
Реакции
10
Баллы
8
Здравствуйте! В раздел веб не дает выложить, может кому-то будет полезно.

Проблема: перестали зачисляться платежи на счета пользователей GameCMS.

1779722259775.png


Я пофиксил для ЮМани. Во вложении сам файл (index.php), его нужно заменить по адресу /modules/purse/.

Сами изменения (с 99 строки):

Изменения:
++if(empty($_POST["amount"]) || empty($_POST["operation_id"]) || empty($_POST["label"]) || empty($_POST["sign"]) || empty($_POST["unaccepted"])) {
--if(empty($_POST["amount"]) || empty($_POST["operation_id"]) || empty($_POST["label"]) || empty($_POST["sha1_hash"]) || empty($_POST["unaccepted"])) {
        $Pm->paymentLog($payMethod, "empty data", pdo(), 0, 2);
        exit('Error: [empty data]');
    }

$amount    = clean($_POST['withdraw_amount'], 'float');
$payNumber = clean($_POST["label"], 'int');
$userId    = (int)clean(substr($payNumber, 0, 7), 'int');
++
++   $notificationParams = $_POST;
++   $sign = $notificationParams['sign'];
++    unset($notificationParams['sign']);
++    ksort($notificationParams, SORT_STRING);
++
++    $dataString = '';
++    foreach ($notificationParams as $key => $value) {
++        $encodedValue = rawurlencode($value);
++        if (strlen($dataString)) {
++            $dataString .= '&';
++        }
++        $dataString .= $key . '=' . $encodedValue;
++    }

++    $calculatedSign = hash_hmac('sha256', $dataString, $merchantsSettings->ya_key);

    if(
++        $sign != $calculatedSign

--        //sha1(
--        //    $_POST['notification_type']
--        //    . '&' . $_POST['operation_id']
--        //    . '&' . $_POST['amount']
--        //    . '&' . $_POST['currency']
--        //    . '&' . $_POST['datetime']
--        //    . '&' . $_POST['sender']
--        //    . '&' . $_POST['codepro']
--        //    . '&' . $merchantsSettings->ya_key
--        //    . '&' . $_POST["label"]
--        //) != $_POST['sign']
--
    ) {
 

Вложения

Последнее редактирование:
Здравствуйте! В раздел веб не дает выложить, может кому-то будет полезно.

Проблема: перестали зачисляться платежи на счета пользователей GameCMS.

Посмотреть вложение 1554

Я пофиксил для ЮМани. Во вложении сам файл (index.php), его нужно заменить по адресу /modules/purse/.

Сами изменения (с 99 строки):

Изменения:
++if(empty($_POST["amount"]) || empty($_POST["operation_id"]) || empty($_POST["label"]) || empty($_POST["sign"]) || empty($_POST["unaccepted"])) {
--if(empty($_POST["amount"]) || empty($_POST["operation_id"]) || empty($_POST["label"]) || empty($_POST["sha1_hash"]) || empty($_POST["unaccepted"])) {
        $Pm->paymentLog($payMethod, "empty data", pdo(), 0, 2);
        exit('Error: [empty data]');
    }

$amount    = clean($_POST['withdraw_amount'], 'float');
$payNumber = clean($_POST["label"], 'int');
$userId    = (int)clean(substr($payNumber, 0, 7), 'int');
++
++   $notificationParams = $_POST;
++   $sign = $notificationParams['sign'];
++    unset($notificationParams['sign']);
++    ksort($notificationParams, SORT_STRING);
++
++    $dataString = '';
++    foreach ($notificationParams as $key => $value) {
++        $encodedValue = rawurlencode($value);
++        if (strlen($dataString)) {
++            $dataString .= '&';
++        }
++        $dataString .= $key . '=' . $encodedValue;
++    }

++    $calculatedSign = hash_hmac('sha256', $dataString, $merchantsSettings->ya_key);

    if(
++        $sign != $calculatedSign

--        //sha1(
--        //    $_POST['notification_type']
--        //    . '&' . $_POST['operation_id']
--        //    . '&' . $_POST['amount']
--        //    . '&' . $_POST['currency']
--        //    . '&' . $_POST['datetime']
--        //    . '&' . $_POST['sender']
--        //    . '&' . $_POST['codepro']
--        //    . '&' . $merchantsSettings->ya_key
--        //    . '&' . $_POST["label"]
--        //) != $_POST['sign']
--
    ) {
спасибо (y)
 

Кто просматривает тему

  • Назад
    Верх