Вход Регистрация
Файл: pumpitapi/pumpit-class.php
Строк: 116
<?php

    
require_once 'pumpit-config.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 ( 
$res )
            {
                
$result = array();
                
$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['login']      = sprintf("%d"$res->{'login'});
                
$result['nick']       = sprintf("%s"$res->{'nick'});
                
$result['coin']       = sprintf("%s"$res->{'coin'});
            
            }
            
            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);
            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);
            }
        }
        
        
    }
    
    
$pumpit = new Pumpit($pumpit_params);

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