Вход Регистрация
Файл: mg-core/controllers/payment.php
Строк: 143
<?php

class Controllers_Payment extends BaseController {

  public 
$msg " Наши менеджеры свяжутся с Вами!";

  function 
__construct() {
    
$this->msg " Наши менеджеры свяжутся с Вами!";
    
$paymentID URL::getQueryParametr('id');
    
$paymentStatus URL::getQueryParametr('pay');
    
$_POST['url'] = URL::getUrl();
    
$modelOrder = new Models_Order();

    switch (
$paymentID) {
      case 
1//webmoney
        
$msg $this->webmoney($paymentID$paymentStatus);
        break;
      case 
5//robokassa
        
$msg $this->robokassa($paymentID$paymentStatus);
        break;
      case 
6//qiwi
        
$msg $this->qiwi($paymentID$paymentStatus);
        break;
      case 
8//interkassa
        
$msg $this->interkassa($paymentID$paymentStatus);
        break;
      case 
2//ЯндексДеньги      
          
$msg $this->yandex($paymentID$paymentStatus);
        break;
    }

    
$this->data = array(
      
'payment' => $paymentID//id способа оплаты
      
'status' => $paymentStatus//статус ответа платежной системы (result, success, fail)
      
'message' => $msg//статус ответа платежной системы (result, success, fail)
    
);
  }

  
/**
   * Действие при оплате заказа
   * Обновляет статус заказа на Оплачен, отправляет письма оповещения, генерирует хук.
   */
  
public function actionWhenPayment($args) { 
    
$result true;
    
ob_start();
    
    
$order = new Models_Order();    
    if(
method_exists($order,'updateOrder')){
      
$order->updateOrder(array('id' => $args['paymentOrderId'], 'status_id' => 2));
    }
    if(
method_exists($order,'sendMailOfPayed')){
      
$order->sendMailOfPayed($args['paymentOrderId'], $args['paymentAmount'], $args['paymentID']);
    }
    if(
method_exists($order,'sendLinkForElectro')){
      
$order->sendLinkForElectro($args['paymentOrderId']);
    }  
    
    
$content ob_get_contents();
    
ob_end_clean();
    
    
// если в ходе работы метода допущен вывод контента, то записать в лог ошибку.
    
if(!empty($content)){
      
MG::loger('ERROR PAYMENT: '.$content);    
    }    
    
    return 
MG::createHook(__CLASS__."_".__FUNCTION__$result$args);
  }



  
/**
   * проверка платежа через WebMoney
   */
  
public function webmoney($paymentID$paymentStatus) {
    
$msg 'Оплата не удалась'
    return 
$msg;
  }

  
/**
   * проверка платежа через ROBOKASSA
   */
  
public function robokassa($paymentID$paymentStatus) {
      
$msg 'Оплата не удалась';
  }

  
/**
   * проверка платежа через QIWI
   */
  
public function qiwi($paymentID$paymentStatus) {


    if (
'success' == $paymentStatus) {
      
$msg 'Вы успешно оплатили заказ №'.$_GET['order'];
      
$msg .= $this->msg;
    } elseif (
'result' == $paymentStatus && isset($_POST)) {
      
$i file_get_contents('php://input');

      
$l = array('/<login>(.*)?</login>/''/<password>(.*)?</password>/');
      
$s = array('/<txn>(.*)?</txn>/''/<status>(.*)?</status>/');

      
preg_match($l[0], $i$m1);
      
preg_match($l[1], $i$m2);

      
preg_match($s[0], $i$m3);
      
preg_match($s[1], $i$m4);

      
$order = new Models_Order();
      
$paymentOrderId $m3[1];

      
$statusQiwi $m4[1];


      if (!empty(
$paymentOrderId)) {
        
$orderInfo $order->getOrder(" id = ".DB::quote($paymentOrderId1));
      } else {
        
$orderInfo NULL;
        echo 
"Ошибка обработки";
        exit();
      }


      
$paymentInfo $order->getParamArray($paymentID$paymentOrderId$orderInfo[$paymentOrderId]['summ']);
      
$password $paymentInfo[1]['value'];

      
$parseLog .=
        
' status='.$statusQiwi.
        
' paymentOrderId='.$paymentOrderId.
        
' paymentID='.$paymentID.
        
' summ='.$orderInfo[$paymentOrderId]['summ'];

      
// если заказа не существует то отправляем код 150
      
if (empty($orderInfo)) {
        
$resultCode 300;
      } else {

        
$hash strtoupper(md5($m3[1].strtoupper(md5($password))));

        if (
$hash !== $m2[1]) { //сравнение хешей
          
$resultCode 150;
        } else {
          if (
$statusQiwi == 60) {// заказ оплачен         
            
$this->actionWhenPayment(
              array(
                
'paymentOrderId' => $paymentOrderId,
                
'paymentAmount' => $orderInfo[$paymentOrderId]['summ'],
                
'paymentID' => $paymentID
              
)
            );
          }
          
$resultCode 0// все прошло успешно оправляем "0"
        
}
      }
      
header('content-type: text/xml; charset=UTF-8');
      echo 
'<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://client.ishop.mw.ru/"><SOAP-ENV:Body><ns1:updateBillResponse><updateBillResult>'.$resultCode.'</updateBillResult></ns1:updateBillResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>';
      exit;
    }

    return 
$msg;
  }

  
/**
   * проверка платежа через Interkassa
   */
  
public function interkassa($paymentID$paymentStatus) {
    
$msg 'Оплата не удалась';
    return 
$msg;
  }
  
  
/**
   * проверка платежа через Yandex
   */
  
public function yandex($paymentID$paymentStatus) {
    
$msg 'Оплата не удалась';
    return 
$msg;
  }

}
Онлайн: 0
Реклама