Два года не занимался программированием.
Есть свой сайт.
https://super-master.pro/
Решил вновь заниматься им.
Стала задача подключить платежную систему Робокасса.
Так как Робокасса работает с физическими лицами - подключаем именно ее.
Нашел дополение - https://github.com/y.../yii2-robokassa
Успешно установил ее через composer
Далее пытаюсь действовать по инструкции:
Добавил в файл config/web.php в массив components элемент robokassa со своими паролями и логином магазина.
Код: Выделить всё
'components' => [
'robokassa' => [
'class' => '\robokassa\Merchant',
'baseUrl' => 'https://auth.robokassa.ru/Merchant/Index.aspx',
'sMerchantLogin' => '',
'sMerchantPass1' => '',
'sMerchantPass2' => '',
'isTest' => !YII_ENV_PROD,
]
...
]
Далее создал контроллер controllers/PaymentController.php
В котором код:
Код: Выделить всё
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
class PaymentController extends 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($model->sum, $model->id, 'Пополнение счета', null, Yii::$app->user->identity->email);
} 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'],
],
];
}
/**
* Callback.
* @param \robokassa\Merchant $merchant merchant.
* @param integer $nInvId invoice ID.
* @param float $nOutSum sum.
* @param array $shp user attributes.
*/
public function successCallback($merchant, $nInvId, $nOutSum, $shp)
{
$this->loadModel($nInvId)->updateAttributes(['status' => Invoice::STATUS_ACCEPTED]);
return $this->goBack();
}
public function resultCallback($merchant, $nInvId, $nOutSum, $shp)
{
$this->loadModel($nInvId)->updateAttributes(['status' => Invoice::STATUS_SUCCESS]);
return 'OK' . $nInvId;
}
public function failCallback($merchant, $nInvId, $nOutSum, $shp)
{
$model = $this->loadModel($nInvId);
if ($model->status == Invoice::STATUS_PENDING) {
$model->updateAttributes(['status' => Invoice::STATUS_FAIL]);
return 'Ok';
} else {
return 'Status has not changed';
}
}
/**
* @param integer $id
* @return Invoice
* @throws \yii\web\BadRequestHttpException
*/
protected function loadModel($id) {
$model = Invoice::find($id);
if ($model === null) {
throw new BadRequestHttpException;
}
return $model;
}
}
Вообще нужно чтобы при оформлении заказа из корзины на страничке https://super-master.pro/cart/view
При нажатии на кнопку "оформить заказ" - заказ оформлялся (падал в базу данных и отправлялось письмо по e-mail что сейчас уже функционирует)
Но нужно доделать чтобы открывалась эта самая робокасса с возможностью оплаты товара.
p/s магазин в системе робокасса создан и активирован!
Заранее спасибо за ответы.