Вход Регистрация
Файл: silawar.ru/protected/components/XBill.php
Строк: 82
<?php

class XBill {

    const 
USER 'silawar';
    const 
KEY 'hmONCD8TEa6SUeRd';
    const 
SID '22342';
    const 
API1 'http://api.x-bill.org/';
    const 
API2 'http://api.x-bill.ru/';

    
# Инициализации платежа

    
public static function mk_create_pay($phone$cost$desc$answer ""$arr = array()) {
        
$phone preg_replace('/[^0-9]/'''$phone);
        
$cost = (float) str_replace(",""."$cost);
        
$desc $desc;
        
$answer $answer;
        
$var "";
        if (isset(
$arr)) {
            
$keys array_keys($arr);
            for (
$i 0$i count($keys); $i++) {
                
$var .= "&{$keys[$i]}=" $arr[$keys[$i]];
            }
        }
        
$post "phone=".$phone."&cost=".$cost."&desc=".$desc."&answer=".$answer."&sign=" self::mk_create_sign($phone) . "&login=mland&sid=199".$var;

        
$result self::mk_send_data($postself::API1 "payment.php");
        if (
$result == 'error') {
            
$result self::mk_send_data($postself::API2 "payment.php");
        }
        if (
$result == 'error') {
            return 
"0";
        } else {
            
$result self::mk_parse_result($result);
            return 
$result;
        }
    }

    
# Узнаем статус платежа по ID

    
public static function mk_get_status($id) {
        
$post "id={$id}&sign=" self::mk_create_sign() . "&login={" self::USER "}&sid={" self::SID "}";
        
$result self::mk_send_data($postself::API1 "status.php");
        if (
$result == 'error') {
            
$result self::mk_send_data($postself::API2 "status.php");
        }
        if (
$result == 'error') {
            return 
"0";
        } else {
            
$result self::mk_parse_result($result);
            return 
$result;
        }
    }

    
# Запрашиваем баланс

    
public static function mk_get_balance($password ""$sid ""$dade_in ""$date_to "") {
        
$post "login={" self::USER "}&sid={$sid}&pass=" md5($password) . "&date_in={$dade_in}&date_to={$date_to}";
        
$result self::mk_send_data($postself::API1 "balance.php");
        if (
$result == 'error') {
            
$result self::mk_send_data($postself::API2 "balance.php");
        }
        if (
$result == 'error') {
            return 
"0";
        } else {
            
$result self::mk_parse_result($result);
            return 
$result;
        }
    }

    
# Формируем подпись

    
public static function mk_create_sign($phone "") {
        return 
md5(self::USER self::KEY self::SID $phone);
    }

    
# Разбираем ответ от скрипта

    
public static function mk_parse_result($result) {
        
$XML trim($result);
        
$returnVal $XML;
        
$emptyTag '<(.*)/>';
        
$fullTag '<\1></\1>';
        
$XML preg_replace("|$emptyTag|"$fullTag$XML);
        
$matches = array();
        if (
preg_match_all('|<(.*)>(.*)</\1>|Ums'trim($XML), $matches)) {
            if (
count($matches[1]) > 0)
                
$returnVal = array();
            foreach (
$matches[1] as $index => $outerXML) {
                
$attribute $outerXML;
                
$value self::mk_parse_result($matches[2][$index]);
                if (!isset(
$returnVal[$attribute]))
                    
$returnVal[$attribute] = array();
                
$returnVal[$attribute][] = $value;
            }
        }
        if (
is_array($returnVal))
            foreach (
$returnVal as $key => $value) {
                if (
is_array($value) && count($value) == && key($value) === 0) {
                    
$returnVal[$key] = $returnVal[$key][0];
                }
            }
        return 
$returnVal;
    }

    
# Отпраляем POST запрос

    
public static function mk_send_data($post$url) {
        
$ch curl_init();
        
curl_setopt($chCURLOPT_URL$url);
        
curl_setopt($chCURLOPT_FAILONERROR1);
        
curl_setopt($chCURLOPT_FOLLOWLOCATION1); # Разрешить переадресацию
        
curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
curl_setopt($chCURLOPT_TIMEOUT4); # Таймаут не менять! 
        
curl_setopt($chCURLOPT_CONNECTTIMEOUT60);
        
curl_setopt($chCURLOPT_POST1);
        
curl_setopt($chCURLOPT_POSTFIELDS$post);

        
$result curl_exec($ch);
        
$status curl_errno($ch);

        
curl_close($ch);
        if (
$status == && !empty($result)) {
            return 
$result;
        } else {
            return 
"error";
        }
    }

}

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