public function TaskEnd() { //обновим запись по заданию и укажем файл результата по ней $sql = 'UPDATE ' . Tasks::tableName() . ' SET status=:status, file_result=:file, complete_at=:complete_at WHERE id=:id'; $query = \Yii::$app->db->createCommand($sql); //спишим с баланса юзера сумма за выборку $query->bindValues([':status' => Tasks::STATUS_COMPLETE, ':id' => $this->task->id, ':file' => $this->task->link . '.txt', ':complete_at' => time()]); $query->execute(); //запишим операцию списания денег в лог фин. операций $financy = new Financy(); $financy->sum_operation = \Yii::$app->params['task.cost']; $financy->type_operation = Financy::TYPE_OPERATION_MINUS; $financy->user_id = $this->task->user_id; $financy->balance_user_after_operation = (int) ($this->task->user->balance - \Yii::$app->params['task.cost']); if ($financy->validate()) { $financy->save(); //обновим баланс юзера User::minusBalance($financy->user_id); } else { print_r($financy->errors) . PHP_EOL; $this->log('error'); } \Yii::$app->get('mutex')->release($this->tasks_mutex_name); }
public function actionIndex() { $model = new Financy(); $model->type_pay_system = Financy::TYPE_PAY_SYSTEM_ROBOKASSA; //тип пополнения Робокасса $model->type_operation = Financy::TYPE_OPERATION_PLUS; //операция пополнения if ($model->load(Yii::$app->request->post()) && $model->save()) { $merchant = Yii::$app->get('robokassa'); //формируем ссылку на оплату+ делаем редирект return $merchant->payment($model->sum_operation, $model->id, 'Пополнение счета', null, Yii::$app->user->identity->email); } else { return $this->render('_form', ['model' => $model]); } }