demo /www/protected/modules/shop/controllers/OrderController.php

Language PHP Lines 108
MD5 Hash 7507d248b2235e2b83a1eaca14b19fba Estimated Cost $1,606 (why?)
Repository https://bitbucket.org/badenkov/demo View Raw File View Project SPDX
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
<?php

class OrderController extends Controller
{
    /**
     * Перенаправляет пользователя на страницу в соответствии с выбранным 
     * способом оплаты.
     */
    public function actionIndex($id)
    {
        $order = Yii::app()->identityMap->loadModel('Order', $id);

        $paymentProccessMethod = 'proccess'.ucwords($order->payment_type);
        if (method_exists($this, $paymentProccessMethod)) {
            $this->{$paymentProccessMethod}($order);
        } else {
            $this->redirect(array('view', 'id' => $order->id));
        }
    }

    /**
     * Отображает пользователю что все прошло успешно.
     */
    public function actionView($id)
    {
        //if (!Yii::app()->user->hasFlash('order')) {
            //throw new CHttpException(403);
        //}
        
        $this->pageTitle = 'Заказ №'.$id.' '.Yii::app()->name;
        $this->description = 'Заказ №'.$id.' '.Yii::app()->name;
        $this->keywords = 'Заказ №'.$id.' '.Yii::app()->name;

        $order = Yii::app()->identityMap->loadModel('Order', $id);

        $this->render('view', array(
            'order' => $order,
        ));
    }

    // Yandex.Деньги
    protected function proccessYandex($order)
    {
        $this->render('/proccess/yandex', array(
            'order' => $order,
        ));
    }

    // Через банковский перевод
    protected function proccessBank($order)
    {
        $this->render('proccess/bank', array(
            'order' => $order,
        ));
    }

    public function actionViewBankBill($id)
    {
        $order = Yii::app()->identityMap->loadModel('Order', $id);

        $this->renderPartial('_order', array(
            'order' => $order
        ));
    }

    // АльфаБанк
    protected function proccessAlfabank($order)
    {
        $this->render('proccess/alfabank', array(
            'order' => $order,
        ));
    }

    // WebMoney
    protected function proccessWebmoney($order)
    {
        $action = 'https://merchant.webmoney.ru/lmi/payment.asp';
        $options = array(
            // Стоимость заказа
            'LMI_PAYMENT_AMOUNT' => number_format($order->getCost(), 2, '.', ''),
            // Текстовое описание заказа
            'LMI_PAYMENT_DESC_BASE64' => base64_encode(Yii::app()->name . ' - Заказ №' . $order->id),
            // Номер заказа
            'LMI_PAYMENT_NO' => $order->id,
            // Номер кошелька продавца
            'LMI_PAYEE_PURSE' => Yii::app()->config->get('WebmoneyConfig_LMI_PAYEE_PURSE'),
            // URL страницы, на которую покупатель попадает, после оплаты в системе WebMoney в случае успешной операции
            'LMI_SUCCESS_URL' => $this->createAbsoluteUrl('/shop/webmoney/success', array('id' => $order->id)),
            // Метод вызова LMI_SUCCESS_URL (Варианты: 0 - GET, 1 - POST, 2 - LINK)
            'LMI_SUCCESS_METHOD' => 'post',
            // URL страницы, на которую покупатель попадает в случае ошибки оплаты в системе WebMoney или если покупатель просто отказался от оплаты
            'LMI_FAIL_URL' => $this->createAbsoluteUrl('/shop/webmoney/fail'),
            // Метод вызова LMI_FAIL_URL (Варианты: 0 - GET, 1 - POST, 2 - LINK)
            'LMI_FAIL_METHOD' => 'post',
            // Урл, по которому сервис WebMoney изместит сайт об удачной покупке
            'LMI_RESULT_URL' => $this->createAbsoluteUrl('/shop/webmoney/result'),
        );

        Yii::app()->user->setState('to_success_order_id', $order->id);
        
        $this->render('proccess/webmoney', array(
            'action' => $action,
            'options' => $options,
        ));
    }
}
Back to Top