Как организовать рекуррентные платежи на Yii2 через робокассу?

Для организации рекуррентных платежей на Yii2 через Robokassa, вам понадобится следовать нескольким шагам:

1. Установите пакет "yiisoft/yii2-robokassa", введя следующую команду в терминале:

composer require yiisoft/yii2-robokassa

2. В файле конфигурации вашего приложения (common/config/main.php или frontend/config/main.php) добавьте компонент Robokassа:

'components' => [
    'robokassa' => [
        'class' => 'robokassaRobokassa',
        'baseUrl' => 'https://auth.robokassa.ru/Merchant/Index.aspx',
        'login' => 'ВАШ_ЛОГИН',
        'password1' => 'ВАШ ПАРОЛЬ1',
        'password2' => 'ВАШ ПАРОЛЬ2',
    ],
],

Замените ВАШ_ЛОГИН на ваш логин в системе Robokassa и ВАШ ПАРОЛЬ1 и ВАШ ПАРОЛЬ2 на ваши пароли.

3. Создайте модель для хранения информации о рекуррентных платежах. Например, в папке models создайте файл RecurrentPayment.php:

namespace appmodels;

use Yii;
use yiibaseModel;

class RecurrentPayment extends Model
{
    public $amount;
    public $description;
    public $email;
}

4. Создайте экшн в контроллере для обработки запроса на создание нового рекуррентного платежа. В вашем контроллере (например, SiteController) создайте следующий экшн:

public function actionCreateRecurrentPayment()
{
    $model = new RecurrentPayment();

    if ($model->load(Yii::$app->request->post()) && $model->validate()) {
        // Получаем экземпляр компонента Robokassa
        $robokassa = Yii::$app->robokassa;

        // Создаем новый платеж с помощью Robokassa API
        $payment = $robokassa->api->createRecurrentPayment($model->amount, $model->description, $model->email);

        if ($payment['Success']) {
            // Рекуррентный платеж успешно создан
            // Действия после успешного создания платежа
        } else {
            // Ошибка при создании платежа
            // Действия при возникновении ошибки
        }
    }

    return $this->render('createRecurrentPayment', [
        'model' => $model,
    ]);
}

Обратите внимание, что вам также потребуется создать соответствующий view - createRecurrentPayment.php.

5. Создайте форму в вашем view файле (createRecurrentPayment.php), чтобы пользователь мог указать необходимую информацию для создания рекуррентного платежа:

<?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'amount')->textInput() ?>

    <?= $form->field($model, 'description')->textInput() ?>

    <?= $form->field($model, 'email')->textInput() ?>

    <div class="form-group">
        <?= Html::submitButton('Submit', ['class' => 'btn btn-primary']) ?>
    </div>

<?php ActiveForm::end(); ?>

6. Наконец, добавьте ссылку на вашу форму в виде кнопки, так что пользователь сможет перейти к созданию рекуррентного платежа. Например, в вашем view файле (site/index.php):

<?= Html::a('Create Recurrent Payment', ['site/create-recurrent-payment'], ['class' => 'btn btn-success']) ?>

После выполнения всех этих шагов у вас будет создана форма, которая позволит пользователю указать необходимую информацию для создания рекуррентного платежа через Robokassa. После отправки формы данные будут переданы в экшн, где будет создан новый рекуррентный платеж с использованием API Robokassa. Вы можете выполнить дополнительные действия после успешного создания платежа или при возникновении ошибки, в зависимости от ваших потребностей.