Вход Регистрация
Файл: tankon.mobi/billing/lib/UnitPay.php
Строк: 103
<?php

class UnitPay
{
    private 
$event;

    public function 
__construct(UnitPayEvent $event)
    {
        
$this->event $event;
    }

    public function 
getResult()
    {
        
$request $_GET;

        if (empty(
$request['method'])
            || empty(
$request['params'])
            || !
is_array($request['params'])
        )
        {
            return 
$this->getResponseError('Invalid request');
        }

        
$method $request['method'];
        
$params $request['params'];

        if (
$params['sign'] != $this->getMd5Sign($paramsConfig::SECRET_KEY))
        {
            return 
$this->getResponseError('Incorrect digital signature');
        }

        
$unitPayModel UnitPayModel::getInstance();

        if (
$method == 'check')
        {
            if (
$unitPayModel->getPaymentByUnitpayId($params['unitpayId']))
            {
                
// Платеж уже существует
                
return $this->getResponseSuccess('Payment already exists');
            }

            
$itemsCount floor($params['sum'] / Config::ITEM_PRICE);

            if (
$itemsCount <= 0)
            {
                return 
$this->getResponseError('Суммы ' $params['sum'] . ' руб. не достаточно для оплаты товара ' .
                    
'стоимостью ' Config::ITEM_PRICE ' руб.');
            }

            if (!
$unitPayModel->createPayment(
                
$params['unitpayId'],
                
$params['account'],
                
$params['sum'],
                
$itemsCount
            
))
            {
                return 
$this->getResponseError('Unable to create payment database');
            }

            
$checkResult $this->event->check($params);
            if (
$checkResult !== true)
            {
                return 
$this->getResponseError($checkResult);
            }

            return 
$this->getResponseSuccess('CHECK is successful');
        }

        if (
$method == 'pay')
        {
            
$payment $unitPayModel->getPaymentByUnitpayId(
                
$params['unitpayId']
            );

            if (
$payment && $payment->status == 1)
            {
                return 
$this->getResponseSuccess('Payment has already been paid');
            }

            if (!
$unitPayModel->confirmPaymentByUnitpayId($params['unitpayId']))
            {
                return 
$this->getResponseError('Unable to confirm payment database');
            }

            
$this->event
                
->pay($params);

            return 
$this->getResponseSuccess('PAY is successful');
        }

    return 
$this->getResponseError($method.' not supported');
    }

    private function 
getResponseSuccess($message)
    {
        return 
json_encode(array(
            
"jsonrpc" => "2.0",
            
"result" => array(
                
"message" => $message
            
),
            
'id' => 1,
        ));
    }

    private function 
getResponseError($message)
    {
        return 
json_encode(array(
            
"jsonrpc" => "2.0",
            
"error" => array(
                
"code" => -32000,
                
"message" => $message
            
),
            
'id' => 1
        
));
    }

    private function 
getMd5Sign($params$secretKey)
    {
        
ksort($params);
        unset(
$params['sign']);
        return 
md5(join(null$params).$secretKey);
    }
}
Онлайн: 0
Реклама