Example #1
0
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;
            #-------------------------------------------------------------------------------
Example #2
0
    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));
#-------------------------------------------------------------------------------