Beispiel #1
0
            exit;
        }
    } elseif (isset($_POST['LMI_SYS_INVS_NO']) && $_POST['LMI_SYS_INVS_NO'] && isset($_POST['LMI_SYS_TRANS_NO']) && $_POST['LMI_SYS_TRANS_NO']) {
        if (webmoney::checkResultParams($_POST, $arrTariffs)) {
            // логируем ответ в файл
            $logData = logs::logPaymentData($_POST, 'SUCCESS', 'webmoney');
            // выполняем необходимые действия
            $ourData = $payments->explodeServiceString($_POST['SERVICE']);
            $payments->doAction($ourData[0], $ourData[1], webmoney::generateLogData($_POST, 'SUCCESS'), $_POST['LMI_PAYMENT_NO']);
            $payments->sendAdminEmail($logData, 'SUCCESS');
        } else {
            // логируем ответ в файл
            $logData = logs::logPaymentData($_POST, 'FAIL', 'webmoney');
            // выполняем необходимые действия
            $ourData = $payments->explodeServiceString($_POST['SERVICE']);
            $payments->doAction($ourData[0], $ourData[1], webmoney::generateLogData($_POST, 'FAIL'), $_POST['LMI_PAYMENT_NO']);
            $payments->sendAdminEmail($logData, 'FAIL');
        }
    } else {
        // если неверные параметры платежа
        // логируем ответ в файл
        logs::logPaymentData($_POST, 'WRONG PARAMS', 'webmoney');
    }
} elseif (isset($_GET['success']) && !empty($_POST)) {
    if (isset($_POST['SERVICE']) && $_POST['SERVICE']) {
        $ourData = $payments->explodeServiceString($_POST['SERVICE']);
        $payments->succesAnswer($ourData[0]);
    }
} elseif (isset($_GET['fail']) && !empty($_POST)) {
    if (isset($_POST['LMI_PAYMENT_NO']) && $_POST['LMI_PAYMENT_NO']) {
        $smarty->assignByRef('order_id', $_POST['LMI_PAYMENT_NO']);
 /**
  * функция проверяет параметры полученные от сервера webmoney в оповещении о платеже ($_POST)
  * Проверяется наличие всех необходимых полей, услуга и ее стоимость
  *
  * @param (array) $arrData - массив параметров ($_POST от сервера Webmoney)
  * @param (array) $arrTariffs - тарифная сетка Webmoney
  * 
  * @return bool
  */
 static function checkResultParams(&$arrData, &$arrTariffs)
 {
     // проверяем порциями, чтобы было читабельнее
     if (!isset($arrData['LMI_PAYEE_PURSE']) || !$arrData['LMI_PAYEE_PURSE'] || $arrData['LMI_PAYEE_PURSE'] !== WEBMONEY_CONF_PAYEE_PURSE) {
         return false;
     }
     if (!isset($arrData['LMI_PAYMENT_AMOUNT']) || !$arrData['LMI_PAYMENT_AMOUNT'] || !isset($arrData['LMI_PAYMENT_NO']) || !$arrData['LMI_PAYMENT_NO']) {
         return false;
     }
     if (!isset($arrData['LMI_SYS_INVS_NO']) || !$arrData['LMI_SYS_INVS_NO'] || !isset($arrData['LMI_SYS_TRANS_NO']) || !$arrData['LMI_SYS_TRANS_NO']) {
         return false;
     }
     if (!isset($arrData['LMI_MODE']) || !isset($arrData['LMI_PAYER_WM']) || !$arrData['LMI_PAYER_WM'] || !isset($arrData['LMI_PAYER_PURSE']) || !$arrData['LMI_PAYER_PURSE']) {
         return false;
     }
     if (!isset($arrData['LMI_HASH']) || !$arrData['LMI_HASH'] || !isset($arrData['LMI_SYS_TRANS_DATE']) || !$arrData['LMI_SYS_TRANS_DATE']) {
         return false;
     }
     if (!isset($arrData['LMI_PAYMENT_DESC']) || !$arrData['LMI_PAYMENT_DESC'] || !isset($arrData['SERVICE']) || !$arrData['SERVICE']) {
         return false;
     }
     // проверяем подпись
     if (webmoney::refSign($arrData) != $arrData['LMI_HASH']) {
         return false;
     }
     // проверяем услугу и ее цену в тарифной сетке
     $payments = new payments();
     $service = $payments->explodeServiceString($arrData['SERVICE']);
     if (!in_array($service[0], $arrTariffs) || $arrData['LMI_PAYMENT_AMOUNT'] != $arrTariffs[$service[0]]) {
         return false;
     }
     return true;
 }