/** * функция проверяет параметры полученные от сервера intellectmoney в оповещении о платеже ($_POST) * Проверяется наличие всех необходимых полей, услуга и ее стоимость * @param (array) $arrData - массив параметров ($_POST от сервера intellectmoney) * @param (array) $arrTariffs - тарифная сетка intellectmoney * @return bool */ static function checkResultParams(&$arrData, &$arrTariffs) { // проверяем порциями, чтобы было читабельнее if (empty($arrData['LMI_PAYEE_PURSE']) || $arrData['LMI_PAYEE_PURSE'] != INTELLECTMONEY_CONF_PAYEE_PURSE) { return false; } if (empty($arrData['LMI_PAYMENT_AMOUNT']) || empty($arrData['LMI_PAYMENT_NO'])) { return false; } if (empty($arrData['LMI_SYS_INVS_NO']) || empty($arrData['LMI_SYS_TRANS_NO'])) { return false; } if (empty($arrData['LMI_HASH']) || empty($arrData['LMI_SYS_TRANS_DATE'])) { return false; } if (empty($arrData['SERVICE'])) { return false; } // проверяем подпись if (self::refSign($arrData) != strtoupper($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; }
/** * функция проверяет параметры полученные от сервера 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; }