foreach ($Send as $name => $val) { #------------------------------------------------------------------------------- if (Is_Array($val)) { #------------------------------------------------------------------------------- USort($val, "strcasecmp"); #------------------------------------------------------------------------------- $Send[$name] = $val; #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- } #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- // Формирование сообщения, путем объединения значений формы, // отсортированных по именам ключей в порядке возрастания. UkSort($Send, "strcasecmp"); #------------------------------------------------------------------------------- $Hash = ""; #------------------------------------------------------------------------------- foreach ($Send as $value) { #------------------------------------------------------------------------------- if (is_array($value)) { #------------------------------------------------------------------------------- foreach ($value as $v) { #------------------------------------------------------------------------------- //Конвертация из текущей кодировки (UTF-8) //необходима только если кодировка магазина отлична от Windows-1251 $v = Iconv("utf-8", "windows-1251", $v); #------------------------------------------------------------------------------- $Hash .= $v; #-------------------------------------------------------------------------------
return "No args...\n"; } #------------------------------------------------------------------------------- $ArgsIDs = array('CSRF', 'WMI_AUTO_ACCEPT', 'WMI_COMMISSION_AMOUNT', 'WMI_CREATE_DATE', 'WMI_CURRENCY_ID', 'WMI_DESCRIPTION', 'WMI_EXPIRED_DATE', 'WMI_FAIL_URL', 'WMI_LAST_NOTIFY_DATE', 'WMI_MERCHANT_ID', 'WMI_NOTIFY_COUNT', 'WMI_ORDER_ID', 'WMI_ORDER_STATE', 'WMI_PAYMENT_AMOUNT', 'WMI_PAYMENT_NO', 'WMI_PAYMENT_TYPE', 'WMI_SUCCESS_URL', 'WMI_TO_USER_ID', 'WMI_UPDATE_DATE', 'WMI_SIGNATURE'); #------------------------------------------------------------------------------- foreach ($ArgsIDs as $ArgID) { $Args[$ArgID] = @$Args[$ArgID]; } #------------------------------------------------------------------------------- $OrderID = $Args['WMI_PAYMENT_NO']; #------------------------------------------------------------------------------- $Config = Config(); #------------------------------------------------------------------------------- $Settings = $Config['Invoices']['PaymentSystems']['W1']; #------------------------------------------------------------------------------- UkSort($Args, "strcasecmp"); #------------------------------------------------------------------------------- $Values = ""; #------------------------------------------------------------------------------- foreach ($Args as $Key => $Value) { if ($Key != "WMI_SIGNATURE") { $Values .= $Value; } } #------------------------------------------------------------------------------- if (Base64_Encode(Pack("H*", sha1($Values . $Settings['Hash']))) != $Args['WMI_SIGNATURE']) { return ERROR | @Trigger_Error('[comp/www/Merchant/W1]: проверка подлинности завершилась не удачей'); } #------------------------------------------------------------------------------- $Invoice = DB_Select('Invoices', array('ID', 'Summ'), array('UNIQ', 'ID' => $OrderID)); #-------------------------------------------------------------------------------