承接 yii-cms/yii2-robokassa 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

yii-cms/yii2-robokassa

最新稳定版本:1.3.1

Composer 安装命令:

composer require yii-cms/yii2-robokassa

包简介

Robokassa payment extension.

README 文档

README

Latest Stable Version Build Status Coverage Status codecov

Total Downloads Monthly Downloads Daily Downloads

Установка с помощью 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

<?php /* @var $this yii\web\View */ /* @var $merchant \robokassa\Merchant */ /* @var $model \app\models\Invoice */ ?> <?php $form = ActiveForm::begin(); ?> <?= $form->field($model, 'sum')->textInput() ?> <?= Html::submitButton('Pay', ['class' => 'btn btn-success']) ?> <?php ActiveForm::end(); ?>

统计信息

  • 总下载量: 62.83k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 43
  • 点击次数: 5
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 42
  • Watchers: 4
  • Forks: 31
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2026-01-04

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固