Вход Регистрация
Файл: online_kkbkz.php
Строк: 153
<?
$full_home_path 
dirname(__FILE__);
require_once(
$full_home_path."/_rootload.php");

if (
getenv("REQUEST_METHOD") != "POST") { 
    
mconnect();

    
$manager_email=GetSetting('manager_email');

    
$msg "С IP-адреса $ip произошло обращение к скрипту online_kkbkz.php по GET-протоколу.nnБудьте внимательны, т.к. возможно кто-то пытается взломать систему.nn--nRootPanel";
    
$subject "Возможная попытка взлома билинга [Казкоммерцбанк]";

    
$admEmails=GetAdminEmailsWhereTrueParam("senderror");
    if (
count($admEmails) > 0) {
        
WriteMailLog($subject,$msg);
    }
    while (list(
$i,$em) = @each($admEmails)) {
        
sendmail($em,'',$manager_email,$subject,$msg);
    }

    
mclose();
    exit; 
}

$response stripslashes(htmlDecode($response));

if (
$response) {
    
mconnect();
    
EnableLanguages();

    
$xml_parser = new KKBxml();
    
$result $xml_parser->parse($response);

    
$bill GetBillById(intval($result['ORDER_ORDER_ID']));
    
$payy GetPaymentSystemById($bill->paymentSystemId);

    
$kkbkz_public_key=$payy->text5;
    
$kkbkz_test=$payy->check1;
    
$kkbkz_merchant_certificate_id=$payy->text4;
    
$kkbkz_merchant_id=$payy->text2;
    
$kkbkz_merchant_name=$payy->text1;
    
$kkbkz_private_key=$payy->text6;
    
$kkbkz_private_key_pass=decodePwd($payy->pass1);
    
$kkbkz_shop_id=$payy->text3;

    if (
in_array("ERROR",$result)) {
        if (
$result["ERROR_TYPE"] == "ERROR") {
            
$error_msg "Ошибка системы: ".$result["ERROR"];
        } else if (
$result["ERROR_TYPE"] == "system") {
            
$error_msg "Ошибка системы банка > Code: '".$result["ERROR_CODE"]."' Text: '".$result["ERROR_CHARDATA"]."' Time: '".$result["ERROR_TIME"]."' Order_ID: '".$result["RESPONSE_ORDER_ID"]."'";
        } else if (
$result["ERROR_TYPE"] == "auth") {
            
$error_msg "Ошибка аутентификации в системе банка > Code: '".$result["ERROR_CODE"]."' Text: '".$result["ERROR_CHARDATA"]."' Time: '".$result["ERROR_TIME"]."' Order_ID: '".$result["RESPONSE_ORDER_ID"]."'";
        }
    }
    else if (
in_array("DOCUMENT",$result)) {
        
$kkb = new KKBSign();
        
$kkb->invert();
        
$data kkb_split_sign($response,"BANK");
        
$check $kkb->check_sign64($data['LETTER'], $data['RAWSIGN'], $kkbkz_public_key);

        if (
$check == 1) {

            
###
            
$merchantCurrency "KZT"
            
$bill->merchantmoney = ($bill->money_host+$bill->money_domain+$bill->money_addons+$bill->money_shop+$bill->money) * GetCurrencyKoeficientByCode($merchantCurrency);
            
$bill->merchantmoney $bill->merchantmoney + ($bill->merchantmoney/100)*$payy->small1$bill->merchantmoney round($bill->merchantmoney);
            
###

            
if (!$result['ORDER_ORDER_ID']) { $error_msg "Отсутствует номер счета биллинг-системы."; }
            else if (!
$bill->id) { $error_msg "Счет # ".$result['ORDER_ORDER_ID']." не найден."; }
            else if (
intval($result['PAYMENT_AMOUNT']) < intval($bill->merchantmoney)) { $error_msg "Неправильная сумма оплаты. Сумма счета в биллинге $bill->merchantmoney."; }
            else if (
$kkbkz_test) { $error_msg "Тестовый режим работы."; }
            else if (
$result['PAYMENT_RESPONSE_CODE'] != "00") { $error_msg "Неправильный код результата авторизации (".$result['PAYMENT_RESPONSE_CODE'].")."; }
            else {
                print 
"0";

                
$kkb = new KKBSign();
                
$kkb->invert();
                
$kkb->load_private_key($kkbkz_private_key$kkbkz_private_key_pass);
                
$merchant '<merchant id="'.$kkbkz_merchant_id.'"><command type="complete"/><payment reference="'.$result['PAYMENT_REFERENCE'].'" approval_code="'.$result['PAYMENT_APPROVAL_CODE'].'" orderid="'.$result['ORDER_ORDER_ID'].'" amount="'.$result['PAYMENT_AMOUNT'].'" currency_code="'.$result['ORDER_CURRENCY'].'"/></merchant>';
                
$merchant_sign '<merchant_sign type="RSA" cert_id="'.$kkbkz_merchant_certificate_id.'">'.$kkb->sign64($merchant).'</merchant_sign>';
                
$xml "<document>".$merchant.$merchant_sign."</document>";

                
$curlOut "XML:n$xml";

                if (
$kkbkz_test) { $url "http://3dsecure.kkb.kz/jsp/remote/control.jsp"; } else { $url "https://epay.kkb.kz/jsp/remote/control.jsp"; }

                
$fp curl_init(); 
                
curl_setopt($fpCURLOPT_URL$url."?".urlencode($xml));
                
curl_setopt($fpCURL_HTTP_VERSION_1_01);
                
curl_setopt($fpCURLOPT_POST0);
                
curl_setopt($fpCURLOPT_SSL_VERIFYPEER0);
                
curl_setopt($fpCURLOPT_SSL_VERIFYHOST0);
                
curl_setopt($fpCURLOPT_RETURNTRANSFER,1);
                
curl_setopt($fpCURLOPT_TIMEOUT120);
                
$curl_result curl_exec($fp);

                
$curl_result = @preg_replace("/^[^<]+/","",$curl_result);

                if (@
curl_errno($fp)) {
                    
$error_msg "cURL Error ".@curl_errno($fp).": ".@curl_error($fp);
                } else {
                    
$xml_parser = new KKBxml();
                    
$result2 $xml_parser->parse($curl_result);

                    if (
in_array("ERROR",$result2)) {
                        if (
$result2["ERROR_TYPE"] == "ERROR") {
                            
$error_msg "Level 2. Ошибка системы: ".$result2["ERROR"];
                        } else if (
$result2["ERROR_TYPE"] == "system") {
                            
$error_msg "Level 2. Ошибка системы банка > Code: '".$result2["ERROR_CODE"]."' Text: '".$result2["ERROR_CHARDATA"]."' Time: '".$result2["ERROR_TIME"]."' Order_ID: '".$result2["RESPONSE_ORDER_ID"]."'";
                        } else if (
$result2["ERROR_TYPE"] == "auth") {
                            
$error_msg "Level 2. Ошибка аутентификации в системе банка > Code: '".$result2["ERROR_CODE"]."' Text: '".$result2["ERROR_CHARDATA"]."' Time: '".$result2["ERROR_TIME"]."' Order_ID: '".$result2["RESPONSE_ORDER_ID"]."'";
                        }
                    }
                    else if (
in_array("DOCUMENT",$result2)) {
                        if (
$result2['RESPONSE_CODE'] != "00") { $error_msg "Level 2. Неправильный код результата авторизации (".$result2['RESPONSE_CODE'].")."; }
                        else {
                            
MakeBillPayed($bill->id,1,"Казкоммерцбанк (".$result['CUSTOMER_NAME'].", reference ".$result['PAYMENT_REFERENCE'].")");
                            
mclose();
                            exit;
                        }
                    } else {
                        
$error_msg "Level 2. Неизвестный тип XML документа.";
                    }
                }

            }


        } else if (
$check == 0) {
            
$error_msg "Неправильная подпись.";
        } else {
                
$error_msg "Ошибка проверки подписи: ".$kkb->estatus;
        }
    } else {
        
$error_msg "Неизвестный тип XML документа.";
    }

    
ob_start();
    
var_export($response);
    
$dump_response ob_get_clean();

    
ob_start();
    
var_export($result);
    
$dump_result ob_get_clean();

    
ob_start();
    
var_export($result2);
    
$dump_result2 ob_get_clean();

    
$manager_email=GetSetting('manager_email');

    
$msg "Автоматическая оплата через Казкоммерцбанк отклонена биллинг-системой по причине:nn$error_msgnnRESPONSE:n$dump_responsennRESULT:n$dump_resultnn$curlOutnnCURL_RESULT:n$curl_resultnnRESULT2:n$dump_result2nnIP$ipnn--nRootPanel";
    
$subject "Ошибка автоматической оплаты [Казкоммерцбанк]";

    
$admEmails=GetAdminEmailsWhereTrueParam("senderror");
    if (
count($admEmails) > 0) {
        
WriteMailLog($subject,$msg);
    }
    while (list(
$i,$em) = @each($admEmails)) {
        
sendmail($em,'',$manager_email,$subject,$msg);
    }
    
mclose();

    print 
"0";
}

?>
Онлайн: 1
Реклама