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

class Pumpit {

    var 
$param;
    var 
$app_id;
    var 
$key_api;
    var 
$key_billing;

    
// Конструктор
    
function Pumpit($param) {
        
$this->param $param;

        
$this->app_id $this->param['APP_ID'];
        
$this->key_api $this->param['KEY_API'];
        
$this->key_billing $this->param['KEY_BILLING'];

        
$this->param['CONTEXT'] = array(
            
'http' => array(
                
'method' => 'GET',
                
'request_fulluri' => true,
                
'timeout' => 10
            
)
        );
    }

    
// Запрос виджетов
    
function getWidgets($p_sid '') {
        
$result false;
        
$res $this->sendRequest($p_sid'GetWidgets''');
        if (!empty(
$res)) {
            
$result = array();
            
$result['status'] = sprintf("%d"$res->{'status'});
            
$result['err_info'] = sprintf("%s"$res->{'err_info'});
            
$result['header'] = sprintf("%s"$res->{'header'});
            
$result['footer'] = sprintf("%s"$res->{'footer'});
        }

        return 
$result;
    }

    
// Запрос профиля пользователя
    
function getMyProfile($p_sid '') {
        
$result false;
        
$res $this->sendRequest($p_sid'GetMyProfile''');
        if (
$res) {
            
$result = array();

            
$result['status'] = sprintf("%d"$res->{'status'});
            
$result['err_info'] = sprintf("%s"$res->{'err_info'});
            
$result['reg_time'] = sprintf("%s"$res->{'reg_time'});
            
$result['login'] = sprintf("%d"$res->{'login'});
            
$result['nick'] = sprintf("%s"$res->{'nick'});
            
$result['sex'] = sprintf("%d"$res->{'sex'});
            
$result['coin'] = sprintf("%s"$res->{'coin'});
            if (isset(
$res->{'avatar'})) {
                
$result['avatar'] = sprintf("%s"$res->{'avatar'});
            }
        }

        return 
$result;
    }

    
// Запрос на перевод денег со счета абонента в приложение
    
function doIncAppAccount($p_sid ''$coin ''$params = array(), $burl '') {
        
$query = array();
        
$query['app_id'] = $this->app_id;
        
$query['action'] = 'DoIncAppAccount';
        
$query['p_sid'] = $p_sid;
        
$query['coin'] = $coin;
        
$query['burl'] = $burl;

        
// Если есть необязательные параметры такие как desc, app_tid, app_uid
        
if (!empty($params)) {
            foreach (
$params as $key => $value) {
                
$query[$key] = $value;
            }
        }

        
// Формируем подпись запроса
        
$sig $this->getSig($querytrue);

        
$url $this->param['API_HOST'];
        
// Собираем URL с сортировкой по ключам
        
ksort($query);
        foreach (
$query as $key => $value) {
            
// Исключаем параметр sig
            
if (strtolower($key) != 'sig') {
                
$url .= urlencode($key) . "=" urlencode($value) . "&";
            }
        }
        
$url .= "sig=" $sig;

        return 
$url;
    }

    
// Запрос на авторизацию пользователя
    
function doPumpitLogin($p_sid ''$burl '') {
        
$query = array();
        
$query['app_id'] = $this->app_id;
        
$query['action'] = 'DoPumpitLogin';
        
$query['p_sid'] = $p_sid;
        
$query['burl'] = $burl;

        
// Формируем подпись запроса
        
$sig $this->getSig($query);

        
$url $this->param['API_HOST'];
        
// Собираем URL с сортировкой по ключам
        
ksort($query);
        foreach (
$query as $key => $value) {
            
// Исключаем параметр sig
            
if (strtolower($key) != 'sig') {
                
$url .= urlencode($key) . "=" urlencode($value) . "&";
            }
        }
        
$url .= "sig=" $sig;
        return 
$url;
    }

    
// Запрос на доступ к кошельку Pumpit
    
function doPumpitPayment($p_sid ''$burl '') {
        
$query = array();
        
$query['app_id'] = $this->app_id;
        
$query['action'] = 'DoPumpitPayment';
        
$query['p_sid'] = $p_sid;
        
$query['burl'] = $burl;

        
// Формируем подпись запроса
        
$sig $this->getSig($query);

        
$url $this->param['API_HOST'];
        
// Собираем URL с сортировкой по ключам
        
ksort($query);
        foreach (
$query as $key => $value) {
            
// Исключаем параметр sig
            
if (strtolower($key) != 'sig') {
                
$url .= urlencode($key) . "=" urlencode($value) . "&";
            }
        }
        
$url .= "sig=" $sig;

        return 
$url;
    }

    
// Запрос на возврат абонента в Pumpit
    
function doPumpitBack($p_sid '') {
        
$query = array();
        
$query['app_id'] = $this->app_id;
        
$query['action'] = 'DoPumpitBack';
        
$query['p_sid'] = $p_sid;

        
// Формируем подпись запроса
        
$sig $this->getSig($query);

        
$url $this->param['API_HOST'];
        
// Собираем URL с сортировкой по ключам
        
ksort($query);
        foreach (
$query as $key => $value) {
            
// Исключаем параметр sig
            
if (strtolower($key) != 'sig') {
                
$url .= urlencode($key) . "=" urlencode($value) . "&";
            }
        }
        
$url .= "sig=" $sig;

        return 
$url;
    }

    
// Функция формирования подписи
    
function getSig($query$billing false) {
        
$str "";
        
// Собираем строку для подписи с сортировкой по ключам
        
ksort($query);
        foreach (
$query as $key => $value) {
            
// Исключаем параметр sig
            
if (strtolower($key) != 'sig') {
                
$str .= $key "=" $value;
            }
        }
        
$appkey = ($billing) ? $this->key_billing $this->key_api;

        return 
md5($str $appkey);
    }

    
// Отправить запрос
    
function sendRequest($p_sid$action$param$billing false) {
        
$query = array();
        
$query['app_id'] = $this->app_id;
        
$query['action'] = $action;
        
$query['p_sid'] = $p_sid;

        
// Формируем подпись запроса
        
$sig $this->getSig($query$billing);

        
$url $this->param['API_HOST'];
        
// Собираем URL с сортировкой по ключам
        
ksort($query);
        foreach (
$query as $key => $value) {
            
// Исключаем параметр sig
            
if (strtolower($key) != 'sig') {
                
$url .= urlencode($key) . "=" urlencode($value) . "&";
            }
        }
        
$url .= "sig=" $sig;

        
$connection stream_context_create($this->param['CONTEXT']);
        
$data file_get_contents($urlfalse$connection);
        if (
$data) {
            
$json json_decode($data);
            if (
$json) {
                return 
$json;
            } else {
                
$this->logError("Unexpected response for request" "n" $data);
            }
        } else {
            
$this->logError("Unable to send request" "n" "P_SID=" $p_sid " ACTION=" $action " PARAM=" $param " BILLING=" $billing);
        }

        return 
false;
    }

    
// Функция проверки валидности запросов от pumpit
    
function checkRequest($query_string$billing false) {
        
$result false;
        
        
parse_str($query_string$query);
        
//пусть пока так
        
unset($query['pumpitapi/'], $query['pumpitapi']);
        if (
$query['sig'] == $this->getSig($query$billing)) {
            
$result true;
        }

        return 
$result;
    }

    
// Логирование ошибок
    
function logError($txt) {
        if (isset(
$this->param['LOG']) && $this->param['LOG'] && ($handle fopen($this->param['LOG'], 'a'))) {
            
$tmp "[" date('Y-m-d H:i:s') . "]n";
            
$tmp .= "Error. " $txt "n";
            
fwrite($handle$tmp);
            
fclose($handle);
        }
    }

}

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