PHPackages                             yii-cms/yii2-robokassa - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. yii-cms/yii2-robokassa

ActiveYii2-extension[Payment Processing](/categories/payments)

yii-cms/yii2-robokassa
======================

Robokassa payment extension.

1.3.1(6y ago)4364.6k↓41%31[1 issues](https://github.com/yii-cms/yii2-robokassa/issues)1BSD-3-ClausePHPCI failing

Since Apr 5Pushed 1y ago4 watchersCompare

[ Source](https://github.com/yii-cms/yii2-robokassa)[ Packagist](https://packagist.org/packages/yii-cms/yii2-robokassa)[ RSS](/packages/yii-cms-yii2-robokassa/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (7)Dependencies (2)Versions (10)Used By (1)

yii2-robokassa
==============

[](#yii2-robokassa)

[![Latest Stable Version](https://camo.githubusercontent.com/e51774d4fc114c12e6603ee993e389731fe9a13957c74eff0db825d029e8a7f0/68747470733a2f2f706f7365722e707567782e6f72672f7969692d636d732f796969322d726f626f6b617373612f76)](https://packagist.org/packages/yii-cms/yii2-robokassa)[![Build Status](https://camo.githubusercontent.com/8357765f735d0358abc4fb59bc60a9f0984e29a69afcbbc7e4b3caa208173296/68747470733a2f2f7472617669732d63692e6f72672f7969692d636d732f796969322d726f626f6b617373612e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/yii-cms/yii2-robokassa)[![Coverage Status](https://camo.githubusercontent.com/6a902e98cc9a6b3d396dc31ca631cea908175623ee0c2fa7953d9e6256b6c626/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f7969692d636d732f796969322d726f626f6b617373612f62616467652e737667)](https://coveralls.io/github/yii-cms/yii2-robokassa)[![codecov](https://camo.githubusercontent.com/7297a86e387aef223a7165e28735ae27be0678d6a371ef8b3e991dba28fed89b/68747470733a2f2f636f6465636f762e696f2f67682f7969692d636d732f796969322d726f626f6b617373612f6272616e63682f6d61737465722f67726170682f62616467652e737667)](https://codecov.io/gh/yii-cms/yii2-robokassa)

[![Total Downloads](https://camo.githubusercontent.com/41965232f871e7a7eac7cf4920960fe47543e94bb0922bdfbf4ac51695df3cc7/68747470733a2f2f706f7365722e707567782e6f72672f7969692d636d732f796969322d726f626f6b617373612f646f776e6c6f616473)](https://packagist.org/packages/yii-cms/yii2-robokassa)[![Monthly Downloads](https://camo.githubusercontent.com/7dc69dbb71b66f58f92431c150c9cd0cd4599038be4067773777b7f7244a1a96/68747470733a2f2f706f7365722e707567782e6f72672f7969692d636d732f796969322d726f626f6b617373612f642f6d6f6e74686c79)](https://packagist.org/packages/yii-cms/yii2-robokassa)[![Daily Downloads](https://camo.githubusercontent.com/379724a92b397d81e95dc2323f89ff37322c5339f8b8b75ccc5020ef8ebc3d1d/68747470733a2f2f706f7365722e707567782e6f72672f7969692d636d732f796969322d726f626f6b617373612f642f6461696c79)](https://packagist.org/packages/yii-cms/yii2-robokassa)

Установка с помощью Composer
----------------------------

[](#установка-с-помощью-composer)

```
composer require yii-cms/yii2-robokassa:dev-master*

```

Подключение компонента
----------------------

[](#подключение-компонента)

```
[
    'components' => [
        'robokassa' => [
            'class' => '\robokassa\Merchant',
            'baseUrl' => 'https://auth.robokassa.ru/Merchant/Index.aspx',
            'storeId' => '',
            'password1' => '',
            'password2' => '',
            'isTest' => !YII_ENV_PROD,
        ],
        // ...
    ],
];
```

Методы
------

[](#методы)

```
/**
 * Перенаправление на страницу оплаты с заданными параметрами.
 *
 * @param \robokassa\PaymentOptions $options
 * @return \yii\web\Response
 */
\robokassa\Merchant::payment($options);
```

```
/**
 * Получение ссылки на оплату с заданными параметрами.
 *
 * @param \robokassa\PaymentOptions $options
 * @return string
 */
\robokassa\Merchant::getPaymentUrl($options);
```

```
/**
 * Отправляет SMS через ROBOKASSA
 *
 * @param string $phone строка, содержащая номер телефона в международном формате без символа «+» (79051234567)
 * @param string $message строка в кодировке UTF-8 длиной до 128 символов, содержащая текст отправляемого SMS.
 * @return \yii\httpclient\Response
 */
\robokassa\Merchant::sendSMS($phone, $message);
```

Примеры
-------

[](#примеры)

### Пример работы с компонентом

[](#пример-работы-с-компонентом)

```
/**
 * @property integer $id
 * @property float $sum
 * @property integer $status
 */
class Invoice extends \yii\db\ActiveRecord
{
    const STATUS_PENDING = 0;
    const STATUS_FAIL = 1;
    const STATUS_ACCEPTED = 9;
    const STATUS_SUCCESS = 10;
}

class PaymentController extends \yii\web\Controller
{
    public function actionInvoice()
    {
        $model = new Invoice();
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            /** @var \robokassa\Merchant $merchant */
            $merchant = Yii::$app->get('robokassa');
            return $merchant->payment(new \robokassa\PaymentOptions([
                'outSum' => 100,
                'description' => 'Пополнение счета',
                // 'incCurrLabel' => '',
                'invId' => $model->id,
                'culture' => 'ru',
                'encoding' => Yii::$app->charset,
                'email' => Yii::$app->user->identity->email,
                // 'expirationDate' => '', // ISO 8601 (YYYY-MM-DDThh:mm:ss.fffffffZZZZZ)
                // 'outSumCurrency' => 'USD',
                'userIP' => Yii::$app->request->userIP,
                // Дополнительные пользовательские параметры (shp_)
                'params' => [
                    'user_id' => 1,
                    'login' => 'user1',
                ],
            ]));
        } else {
            return $this->render('invoice', [
                'model' => $model,
            ]);
        }
    }

    /**
     * @inheritdoc
     */
    public function actions()
    {
        return [
            'result' => [
                'class' => '\robokassa\ResultAction',
                'callback' => [$this, 'resultCallback'],
            ],
            'success' => [
                'class' => '\robokassa\SuccessAction',
                'callback' => [$this, 'successCallback'],
            ],
            'fail' => [
                'class' => '\robokassa\FailAction',
                'callback' => [$this, 'failCallback'],
            ],
        ];
    }

   /**
     * Переадресация пользователя при успешной оплате на SuccessURL.
     * Переход пользователя по данному адресу означает, что оплата Вашего заказа успешно выполнена.
     * Однако для дополнительной защиты желательно, чтобы факт оплаты проверялся скриптом, исполняемым при переходе на ResultURL
     * @param \robokassa\Merchant $merchant merchant.
     * @param \robokassa\actions\SuccessOptions $options
     * @return mixed
     */
    public function successCallback($merchant, $options)
    {
        $model = $this->loadModel($options->invId);

        if (in_array($model->status, [Invoice::STATUS_ACCEPTED, Invoice::STATUS_SUCCESS])) {
            return $this->goBack();
        }

        $model->updateAttributes(['status' => Invoice::STATUS_ACCEPTED]);

        // ...
    }

   /**
     * Оповещение об оплате на ResultURL
     * ResultURL предназначен для получения Вашим сайтом оповещения об успешном платеже в автоматическом режиме.
     * В случае успешного проведения оплаты ROBOKASSA делает запрос на ResultURL
     * Ваш скрипт работает правильно и повторное уведомление с нашей стороны не требуется.
     * Результат должен содержать  текст OK и параметр InvId.
     * Например, для номера счёта 5 должен быть возвращён вот такой ответ: OK5.
     * @param \robokassa\Merchant $merchant merchant.
     * @param \robokassa\actions\ResultOptions $options
     * @return mixed
     */
    public function resultCallback($merchant, $options)
    {
        $model = $this->loadModel($options->invId);
        $model->updateAttributes(['status' => Invoice::STATUS_SUCCESS]);
        return 'OK' . $options->invId;
    }

   /**
     * Переадресация пользователя при отказе от оплаты на FailURL
     * В случае отказа от исполнения платежа Покупатель перенаправляется по данному адресу.
     * Необходимо для того, чтобы Продавец мог, например, разблокировать заказанный товар на складе.
     * Переход пользователя по данному адресу, строго говоря, не означает окончательного отказа
     * Покупателя от оплаты, нажав кнопку «Back» в браузере он может вернуться на страницы ROBOKASSA.
     * @param \robokassa\Merchant $merchant merchant.
     * @param \robokassa\actions\FailAction $options
     * @return mixed
     */
    public function failCallback($merchant, $nInvId, $nOutSum, $shp)
    {
        $model = $this->loadModel($nInvId);
        if ($model->status == Invoice::STATUS_PENDING) {
            $model->updateAttributes(['status' => Invoice::STATUS_FAIL]);
        }
        // ...
    }

    /**
     * @param integer $id
     * @return Invoice
     * @throws \yii\web\BadRequestHttpException
     */
    protected function loadModel($id) {
        $model = Invoice::findOne($id);
        if ($model === null) {
            throw new \yii\web\BadRequestHttpException();
        }
        return $model;
    }
}
```

### Пример работы для фискализации

[](#пример-работы-для-фискализации)

*Для фискализации `receipt` лучше передавать **POST** запросом, в **GET** запрос данные могут не поместиться*

**PaymentIFrame::widget()** - виджет для передачи формы через **IFrame** ROBOKASSA

```
class PaymentController extends \yii\web\Controller
{
    public function actionInvoice()
    {
        $model = new Invoice();
        $model->status = Invoice::STATUS_PENDING;

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            /** @var \robokassa\Merchant $merchant */
            $merchant = Yii::$app->get('merchant');
            return $this->renderContent(PaymentIFrame::widget([
                'merchant' => $merchant,
                'paymentOptions' => new PaymentOptions([
                    'outSum' => $model->sum,
                    'invId' => $model->id,
                    'description' => 'Description',
                    'culture' => 'en',
                    'receipt' => [
                        'sno' => 'osn',
                        'items' => [
                            [
                                'name' => 'Название товара 1',
                                'quantity' => 1,
                                'sum' => 100,
                                'payment_method' => 'full_payment',
                                'payment_object' => 'commodity',
                                'tax' => 'vat10'
                            ],
                            [
                                'name' => 'Название товара 2',
                                'quantity' => 3,
                                'sum' => 450,
                                'payment_method' => 'full_prepayment',
                                'payment_object' => 'excise',
                                'tax' => 'vat120',
                                'nomenclature_code' => '04620034587217'
                            ],
                        ],
                    ],
                ]),
            ]));
        }

        return $this->render('invoice', [
            'merchant' => Yii::$app->get('merchant'),
            'model' => $model,
        ]);
    }
}
```

Представление `invoice.php`

```
