Как настроить оплату через Яндекс-Кассу в Yii2


Онлайн-оплата сегодня является неотъемлемой частью многих веб-приложений. Одним из популярных вариантов платежных систем является Яндекс Касса. Если вы разрабатываете веб-приложение на фреймворке Yii2 и хотите интегрировать возможность проведения онлайн-платежей, то этот материал для вас.

Для начала необходимо зарегистрироваться в Яндекс Кассе, получить идентификатор магазина и секретный ключ. Затем, устанавливаем расширение yii2-merchant, которое позволяет работать с платежными системами, включая Яндекс Кассу. После этого, необходимо выполнить несколько простых шагов, чтобы настроить оплату через Яндекс Кассу в вашем приложении.

В первую очередь необходимо создать модель Payment, в которой будут храниться данные о платеже. Затем, добавляем методы в контроллер, которые будут отвечать за формирование ссылки для оплаты и обработку уведомлений от Яндекс Кассы о статусе платежа. В методе обработки уведомлений необходимо проверить подпись запроса, чтобы убедиться, что запрос действительно отправлен от Яндекс Кассы.

Основные шаги

Для настройки оплаты через Яндекс Кассу в Yii2 вам потребуется выполнить следующие шаги:

1.

Зарегистрироваться в системе Яндекс Касса и получить доступные для использования параметры (идентификатор магазина, секретный ключ и другие).

2.

Установить и настроить пакет платежной системы Яндекс Касса для Yii2, используя Composer.

3.

Добавить в вашу конфигурацию приложения Yii2 необходимые настройки для подключения к Яндекс Кассе (идентификаторы магазина, секретные ключи и т.д.).

4.

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

5.

Добавить обработчик для страницы, которая будет получать уведомления от Яндекс Кассы о состоянии платежа. В этом обработчике вы можете обновлять статус заказа в вашей базе данных.

6.

Проверить работу оплаты через Яндекс Кассу, проведя тестовый платеж и проверив обновление статуса заказа на вашем сайте.

Настройка в файле конфигурации

Для настройки оплаты через Яндекс Кассу в Yii2 необходимо внести соответствующие изменения в файл конфигурации приложения. Для этого откройте файл config/main.php и найдите раздел ‘components’.

Внутри раздела ‘components’ добавьте новую конфигурацию для компонента yandexMoney. Для этого воспользуйтесь следующим кодом:

'components' => [...'yandexMoney' => ['class' => 'common\components\YandexMoney','shopId' => 'ваш_shop_id','secretKey' => 'ваш_secret_key',],...],

Замените ‘ваш_shop_id’ на реальный идентификатор магазина, который можно получить после регистрации в Яндекс Кассе. Затем замените ‘ваш_secret_key’ на секретный ключ магазина.

После внесения изменений сохраните файл конфигурации.

Настраиваем маршруты

Чтобы настроить оплату через Яндекс Кассу в Yii2, вам необходимо настроить соответствующие маршруты в вашем приложении. Маршруты определяют, какие действия будут связаны с оплатой и каким образом пользователь будет перенаправлен на страницу оплаты.

Для начала, вам нужно создать контроллер, в котором будут определены все действия, связанные с оплатой через Яндекс Кассу. Например, вы можете создать контроллер с именем PaymentController.

В контроллере PaymentController определите два действия: actionPay и actionSuccess. В действии actionPay будет реализована логика отправки данных о заказе на сервер Яндекс Кассы и редирект пользователя на страницу оплаты. В действии actionSuccess будет обработана успешная оплата и выполнены необходимые действия на вашем сайте после успешной оплаты.

Далее, вам нужно настроить маршруты для этих действий в файле конфигурации вашего приложения, например, в файле web.php. Добавьте следующий код в массив rules:

'payment/pay' => 'payment/pay','payment/success' => 'payment/success',

Теперь, по адресу /payment/pay будет доступно действие actionPay контроллера PaymentController, а по адресу /payment/success будет доступно действие actionSuccess.

Для проверки работоспособности маршрутов, попробуйте открыть эти URL в браузере и убедитесь, что соответствующие действия выполняются без ошибок.

Таким образом, настройка маршрутов позволяет определить, какие действия будут связаны с оплатой через Яндекс Кассу и каким образом пользователь будет перенаправлен на страницу оплаты.

Создание контроллера

Для настройки оплаты через Яндекс Кассу в Yii2 необходимо создать контроллер, который будет обрабатывать запросы на оплату и получать информацию о статусе платежей.

Прежде всего, создадим новый контроллер с именем PaymentController:

class PaymentController extends Controller{public function actionIndex(){// Основная логика обработки платежа}public function actionSuccess(){// Обработка успешного платежа}public function actionFail(){// Обработка неуспешного платежа}}

В методе actionIndex будет основная логика обработки платежа. Здесь мы будем отправлять запрос на сервер Яндекс Кассы для создания платежа и получать уникальный идентификатор платежа, который будет передан пользователю для оплаты.

Метод actionSuccess будет вызван после успешного платежа. Здесь мы должны проверить статус платежа и выполнить необходимые действия, например, обновить статус заказа в базе данных.

Метод actionFail будет вызван в случае неуспешного платежа. Здесь мы также можем выполнить необходимые действия, например, отправить уведомление администратору о неуспешной оплате.

Теперь мы создали основу для обработки платежей через Яндекс Кассу. Далее мы настроим маршруты для этих методов и запустим процесс оплаты.

Создание представления

Для настройки оплаты через Яндекс Кассу в Yii2 необходимо создать представление, в котором будет отображаться форма оплаты и обработка ответа от платежной системы.

Вначале создадим файл представления в директории views/site с названием payment.php. В этом файле будет содержаться HTML-код для отображения формы оплаты.

Ниже приведен пример кода для файла payment.php:

Сумма к оплате:$model->sum
Описание платежа:$model->description

В данном примере форма содержит поля для ввода необходимых параметров, таких как сумма к оплате, описание платежа и идентификатор клиента. Также присутствуют скрытые поля с параметрами платежа, которые передаются в запросе к платежной системе.

После заполнения всех необходимых полей и нажатия кнопки «Оплатить», произойдет перенаправление на страницу оплаты, где пользователь сможет ввести необходимые данные для оплаты заказа.

Настройка оплаты

Шаг 1: Создание аккаунта на Яндекс Кассе

Первым шагом необходимо зарегистрироваться на Яндекс Кассе и создать аккаунт для вашего магазина. Для этого перейдите на сайт Яндекс Кассы и следуйте инструкциям для создания аккаунта.

Шаг 2: Получение тестовых данных

После создания аккаунта, вы сможете получить тестовые данные для настройки оплаты на своем сайте. Эти данные будут использоваться во время разработки и тестирования системы оплаты.

Шаг 3: Подключение Яндекс Кассы в Yii2

Для подключения Яндекс Кассы в ваш проект на Yii2, вам необходимо добавить соответствующий компонент в ваш файл конфигурации приложения. Вы можете назвать его, например, «payment». Затем в разделе «components» добавьте следующий код:

‘payment’ => [

‘class’ => ‘yii\payment\YandexPayment’,

‘shopId’ => ‘Ваш ID магазина’,

‘secretKey’ => ‘Ваш секретный ключ’,

],

Шаг 4: Создание формы оплаты

Для создания формы оплаты вам необходимо воспользоваться встроенными методами компонента «payment». Например, вы можете использовать метод «generatePaymentForm», чтобы получить HTML-код формы оплаты. Далее вы можете добавить этот код на страницу, где должна быть размещена форма оплаты.

Шаг 5: Обработка ответа от Яндекс Кассы

После процедуры оплаты Яндекс Касса будет отправлять POST-запрос на ваш сайт с данными об оплате. Вы можете добавить метод обработки этого запроса в контроллер, например, с именем «payment-result». В этом методе вы можете получить данные из запроса и обработать их, например, проверить статус платежа и выполнить необходимые действия.

Шаг 6: Проверка и прием платежей на продакшн

После успешного тестирования и настройки оплаты вам необходимо активировать ваш аккаунт на Яндекс Кассе для принятия реальных платежей на продакшн. Для этого вам необходимо связаться с поддержкой Яндекс Кассы и пройти необходимые процедуры активации и верификации.

Теперь вы можете успешно настроить оплату через Яндекс Кассу в вашем проекте на Yii2. Следуйте указанным шагам и в случае возникновения проблем не стесняйтесь обращаться к документации Яндекс Кассы и форумам разработчиков Yii2 для получения дополнительной помощи.

Пример кода

Для настройки оплаты через Яндекс Кассу в Yii2 вам потребуется установить необходимую зависимость, а также настроить несколько компонентов и контроллеров в вашем приложении.

Первым шагом установите зависимость через Composer:

"require": {"yiisoft/yii2-yii" : "*","bottelet/yii2-toastr" : "~1.0"}

После установки зависимости вы можете настроить контроллер для обработки оплаты:

namespace app\controllers;use Yii;use yii\web\Controller;use yii\web\Response;use YandexCheckout\Client;use YandexCheckout\Model\Payment;use YandexCheckout\Request\Payments\CreatePaymentRequest;class PaymentController extends Controller{public $enableCsrfValidation = false;public function actionCreate(){$client = new Client();$client->setAuth('your_shop_id', 'your_shop_secret_key');$amount = 1000; // сумма заказа в рублях$description = 'Оплата заказа';$payment = new Payment();$payment->setAmount($amount);$payment->setDescription($description);$createPaymentRequest = new CreatePaymentRequest();$createPaymentRequest->setPayment($payment);$response = $client->createPayment($createPaymentRequest);$confirmationUrl = $response->getConfirmation()->getConfirmationUrl();return $this->redirect($confirmationUrl);}public function actionCallback(){Yii::$app->response->format = Response::FORMAT_JSON;$client = new Client();$client->setAuth('your_shop_id', 'your_shop_secret_key');$client->setIdempotenceKey(Yii::$app->request->headers['Idempotence-Key']);$notification = $client->parseNotification(Yii::$app->request->getBodyParams());$payment = $notification->getObject();if ($payment->getStatus() === 'succeeded') {// обработка успешной оплатыreturn ['status' => 'success'];} else {// обработка неуспешной оплатыreturn ['status' => 'failure'];}}}

В методе actionCreate() мы создаем платеж и получаем URL для подтверждения платежа, Redirect на который инициирует переход покупателя на страницу Яндекс Кассы для совершения оплаты. В методе actionCallback() мы обрабатываем уведомление об изменении статуса платежа, который может быть успешным или неуспешным.

Теперь вы можете использовать свой контроллер для настройки оплаты через Яндекс Кассу в вашем приложении на Yii2.

Добавить комментарий

Вам также может понравиться