Как работать с интеграцией с 2Checkout в Yii2


2Checkout является одним из самых популярных платежных шлюзов, которые предоставляют возможность проводить онлайн-платежи со всего мира. Если вы разрабатываете веб-приложение на Yii2 и хотите интегрировать возможность принимать платежи через 2Checkout, то вы попали по адресу.

Yii2 — один из самых мощных и популярных фреймворков для разработки веб-приложений на PHP. Он предлагает множество инструментов и функций, которые помогут вам создать мощное и безопасное приложение. Интеграция 2Checkout в Yii2 не только обеспечивает ваше приложение возможностью проводить платежи, но и дает вам контроль над всем процессом: от создания заказа до обработки платежа.

В этой статье мы рассмотрим, как легко и быстро интегрировать 2Checkout в ваше приложение на Yii2. Мы покажем вам простой способ создания кнопки оплаты, обработки уведомлений о платеже и сохранения информации о заказе. Не важно, создаете ли вы интернет-магазин или сервис подписки, интеграция 2Checkout поможет вам упростить процесс получения платежей от ваших клиентов.

Содержание
  1. Что такое 2Checkout и как она интегрируется в Yii2?
  2. Преимущества использования 2Checkout и Yii2 для обработки платежей
  3. Шаг 1: Установка и настройка 2Checkout в Yii2
  4. Шаг 2: Создание модели для работы с 2Checkout платежами
  5. Шаг 3: Проверка статуса платежа с помощью 2Checkout API
  6. Шаг 4: Обработка успешных платежей в Yii2
  7. Шаг 5: Обработка неуспешных платежей в Yii2
  8. Шаг 6: Отображение списка платежей на сайте с помощью Yii2 GridView
  9. Шаг 7: Добавление возможности отмены платежей в Yii2
  10. Шаг 8: Добавление возможности возврата платежей в Yii2
  11. Шаг 9: Тестирование и отладка интеграции 2Checkout в Yii2

Что такое 2Checkout и как она интегрируется в Yii2?

В Yii2 интеграция 2Checkout может быть достигнута с помощью расширения yii2-2checkout. Это расширение предоставляет удобный инструментарий для настройки и обработки платежей через 2Checkout на вашем сайте Yii2.

Для начала работы с интеграцией 2Checkout в Yii2, вам необходимо установить расширение yii2-2checkout через Composer, добавив его в зависимости вашего проекта. Затем вы должны настроить параметры вашего мерчанта в файле конфигурации приложения Yii2.

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

Интеграция 2Checkout в Yii2 позволяет вам легко управлять платежами на вашем сайте, обеспечивая безопасность и удобство для ваших клиентов. Благодаря простоте установки и использования расширения yii2-2checkout, вы сможете быстро начать принимать платежи через 2Checkout на вашем сайте Yii2.

Преимущества использования 2Checkout и Yii2 для обработки платежей

Первое преимущество — простота в использовании. 2Checkout предоставляет гибкий и интуитивно понятный интерфейс для создания и управления платежами. С его помощью вы сможете легко настраивать различные типы платежей, устанавливать цены и налоги, а также просматривать статистику и отчёты. Все операции с платежами можно выполнять в одном месте, что значительно упрощает работу.

Второе преимущество — глубокая интеграция с Yii2. Фреймворк Yii2 предоставляет мощный набор инструментов для разработки веб-приложений. Благодаря интеграции с 2Checkout, вы сможете легко обрабатывать платежи, проверять их статусы, управлять подписками и многое другое. У вас будет полный контроль над всеми этими операциями, и вы сможете интегрировать их в своё приложение без лишних усилий.

Третье преимущество — безопасность и надёжность. 2Checkout обеспечивает высокий уровень защиты ваших платежей и конфиденциальности данных. Они используют передовые технологии шифрования и соответствуют международным стандартам безопасности. Кроме того, они предоставляют высококачественную поддержку клиентов, готовых помочь вам в любых вопросах, связанных с платежами.

Объединение возможностей 2Checkout и Yii2 позволяет сделать процесс обработки платежей быстрым, удобным и безопасным. Это поможет вам привлечь больше клиентов, повысить уровень продаж и построить успешный онлайн-бизнес.

Шаг 1: Установка и настройка 2Checkout в Yii2

1. Установка библиотеки

Первым шагом необходимо установить библиотеку 2Checkout для Yii2. Выполните следующую команду через терминал:

composer require 2checkout/2checkout-php

Данная команда автоматически загрузит и установит необходимые файлы.

2. Создание аккаунта 2Checkout

Перед использованием 2Checkout в Yii2, необходимо создать аккаунт на официальном сайте 2Checkout. Зарегистрируйтесь и получите доступ к инструментам.

3. Получение API-ключей

После создания аккаунта вам необходимо получить API-ключи для работы с 2Checkout. API-ключи позволяют вам обрабатывать платежи с помощью 2Checkout API.

4. Настройка компонента в Yii2

Чтобы начать использовать 2Checkout в Yii2, вам нужно настроить компонент для работы с API-ключами. Откройте файл config/web.php в вашем проекте и добавьте следующий блок кода:

...'components' => [...'TwoCheckout' => ['class' => 'app\components\TwoCheckoutApi','sellerId' => 'YOUR_SELLER_ID','privateKey' => 'YOUR_PRIVATE_KEY','sandbox' => true, // Используйте true для тестового окружения],...],...

Помните, что вы должны заменить YOUR_SELLER_ID и YOUR_PRIVATE_KEY на ваши собственные API-ключи.

5. Создание компонента TwoCheckoutApi

Чтобы использовать настройки, созданные в предыдущем шаге, создайте компонент TwoCheckoutApi в папке components вашего проекта Yii2. Вам понадобятся два файла:

TwoCheckoutApi.php

<?phpnamespace app\components;use Yii;use yii\base\Component;class TwoCheckoutApi extends Component{public $sellerId;public $privateKey;public $sandbox;private $apiUrl = 'https://api.2checkout.com/rest/6.0/';...// Методы для обработки платежей и других операций...}

TwoCheckoutApiInterface.php

<?phpnamespace app\components;use Yii;interface TwoCheckoutApiInterface{// Декларация методов для обработки платежей и других операций}

Ваши API-ключи будут доступны как свойства этого компонента и будут передаваться в запросы к API 2Checkout.

Это был первый шаг установки и настройки 2Checkout в Yii2. В следующих шагах мы рассмотрим, как обрабатывать платежи и другие операции с 2Checkout API.

Шаг 2: Создание модели для работы с 2Checkout платежами

Чтобы обрабатывать платежи через 2Checkout в Yii2, мы создадим модель Payment, которая будет использоваться для взаимодействия с API 2Checkout и выполнения необходимых операций.

Сначала мы создадим модель Payment, используя генератор кода Gii:

php yii gii/model --tableName=payment

После выполнения команды, в папке models будет создан файл Payment.php с заготовкой модели.

Теперь давайте добавим необходимые свойства и методы в модель Payment:

<?phpnamespace app\models;use yii\base\Model;class Payment extends Model{public $paymentMethod;public $amount;public $currency;public $token;public function rules(){return [[['paymentMethod', 'amount', 'currency', 'token'], 'required'],[['amount'], 'number'],[['paymentMethod', 'currency'], 'string', 'max' => 255],[['token'], 'string', 'max' => 512],];}public function attributeLabels(){return ['paymentMethod' => 'Способ оплаты','amount' => 'Сумма','currency' => 'Валюта','token' => 'Токен',];}}

В данной модели мы объявляем свойства, соответствующие полям формы оплаты: paymentMethod, amount, currency и token. Затем мы определяем правила валидации для этих свойств, а также метки для отображения пользовательского интерфейса.

Теперь модель Payment готова для работы с 2Checkout платежами. В следующем шаге мы реализуем контроллер для обработки платежей.

Шаг 3: Проверка статуса платежа с помощью 2Checkout API

После того, как пользователь успешно произвел платеж через 2Checkout, мы должны проверить статус этого платежа с помощью 2Checkout API. Это важно, так как платеж может быть отклонен или отменен, и мы должны соответствующим образом обработать такую ситуацию.

Для проверки статуса платежа мы будем использовать метод retrieve() API-класса TwoCheckout. В параметры метода мы передаем идентификатор заказа, который мы получили после успешного платежа.

$orderId = 123; // Идентификатор заказа$checkout = new TwoCheckout();$response = $checkout->retrieve($orderId);if ($response->code === 'SUCCESS') {// Платеж прошел успешно, обрабатываем его} else {// Платеж отклонен или отменен, выполняем необходимые действия}

Мы проверяем свойство $response->code возвращаемого объекта и, если его значение равно ‘SUCCESS’, это означает, что платеж прошел успешно. В этом случае мы можем выполнять необходимые действия и обрабатывать заказ.

Если же значение свойства $response->code отличается от ‘SUCCESS’, это означает, что платеж был отклонен или отменен. В таком случае мы также должны выполнить соответствующие действия, например, отменить заказ или уведомить пользователя о проблеме.

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

Шаг 4: Обработка успешных платежей в Yii2

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

1. В контроллере, отвечающем за обработку платежей, необходимо добавить следующий метод:


public function actionSuccess() {
// Получаем данные о платеже из 2Checkout
$params = Yii::$app->request->post();
// Получаем уникальный идентификатор заказа
$order_id = $params['vendor_order_id'];
// Обновляем статус заказа в базе данных
$order = Order::findOne(['id' => $order_id]);
$order->status = Order::STATUS_SUCCESS;
$order->save();
// Выполняем необходимые действия после успешного платежа
// Редиректим пользователя на страницу успешного платежа
return $this->redirect(['site/success']);
}

2. Добавим необходимые маршруты в файле конфигурации.


'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
'payment/success' => 'payment/success',
],
],

Теперь при успешном платеже, пользователь будет перенаправлен на страницу успешного платежа, а статус заказа будет обновлен.

Шаг 5: Обработка неуспешных платежей в Yii2

В случае, если платеж не прошел успешно, необходимо предусмотреть обработку этой ситуации в Yii2.

Для этого можно использовать функцию callback, которую предоставляет платежная система 2Checkout.

Сначала необходимо настроить callback URL в настройках вашей учетной записи на сайте 2Checkout. Это должно быть URL вашего приложения в Yii2, куда будут отправляться уведомления о неуспешных платежах.

Затем в контроллере вам нужно создать действие, которое будет обрабатывать callback-запросы.

  1. Создайте действие в вашем контроллере, например, actionCallback:
    public function actionCallback(){// код обработки callback-запроса}
  2. Внутри действия получите данные из callback-запроса:
    $params = Yii::$app->request->post();
  3. Проверьте статус платежа и выполните соответствующие действия:
    if ($params['message_type'] == 'ORDER_STATUS_CHANGED' && $params['new_status'] == 'F') {// обработка неуспешного платежа}
  4. Выполните необходимые действия при неуспешном платеже, например, отображение сообщения об ошибке:
    Yii::$app->session->setFlash('error', 'Платеж не прошел успешно. Попробуйте еще раз или обратитесь в службу поддержки.');

Шаг 6: Отображение списка платежей на сайте с помощью Yii2 GridView

Теперь, когда мы реализовали функционал обработки платежей с использованием 2Checkout, давайте создадим страницу, на которой пользователи смогут видеть список всех своих платежей.

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

Перед тем, как начать использовать GridView, вам необходимо установить расширение для Yii2, которое позволит нам работать с GridView. В файле composer.json добавьте следующую зависимость:

"require": {..."kartik-v/yii2-grid": "@stable"},

Затем выполните команду composer update для установки расширения.

После установки расширения откройте контроллер, который будет отвечать за отображение списка платежей. Внутри действия, которое будет вызываться при обращении к странице со списком платежей, добавьте следующий код:

public function actionPayments(){$dataProvider = new ActiveDataProvider(['query' => Payment::find()->where(['user_id' => Yii::$app->user->id]),]);return $this->render('payments', ['dataProvider' => $dataProvider,]);}

Предполагается, что модель платежа называется Payment. Если у вас другое название модели, замените соответствующую часть кода.

Теперь создайте файл payments.php в папке views/контроллер и добавьте в него следующий код:

<?phpuse yii\grid\GridView;/* @var $dataProvider yii\data\ActiveDataProvider */$this->title = 'Платежи';$this->params['breadcrumbs'][] = $this->title;?><h1><?= $this->title ?></h1><?= GridView::widget(['dataProvider' => $dataProvider,'columns' => [['class' => 'yii\grid\SerialColumn'],'id','amount','status','created_at',['class' => 'yii\grid\ActionColumn'],],]); ?>

На этом шаге мы создали страницу, на которой пользователи могут видеть список всех своих платежей. GridView автоматически создает таблицу, в которой каждая строка соответствует одному платежу, и отображает столбцы, указанные в массиве ‘columns’.

Шаг 7: Добавление возможности отмены платежей в Yii2

  1. В начале, нам понадобится создать действие в контроллере, которое будет обрабатывать отмену платежа. Добавьте следующий код в контроллер PaymentController:
    public function actionCancelPayment($id){// Получаем информацию о платеже по его идентификатору$payment = Payment::findOne($id);if ($payment) {// Выполняем отмену платежа, вызывая соответствующий метод у 2Checkout API$response = Yii::$app->twoco->cancelPayment($payment->payment_id);if ($response->response_code == 'OK') {// В случае успешной отмены, обновляем статус платежа и сохраняем изменения$payment->status = Payment::STATUS_CANCELLED;$payment->save();Yii::$app->session->setFlash('success', 'Платеж успешно отменен!');} else {Yii::$app->session->setFlash('error', 'Ошибка отмены платежа: ' . $response->response_message);}} else {Yii::$app->session->setFlash('error', 'Платеж не найден!');}// Перенаправляем пользователя на страницу с информацией о платежеreturn $this->redirect(['payment/view', 'id' => $id]);}
  2. После создания действия для отмены платежа, вам необходимо добавить соответствующую ссылку или кнопку на страницу с информацией о платеже (например, на страницу payment/view). Добавьте следующий код в файл представления views/payment/view.php:
    <?phpuse yii\helpers\Html;use yii\widgets\DetailView;// ...echo DetailView::widget(['model' => $model,'attributes' => [// ...['label' => 'Статус','value' => function ($model) {return Html::encode($model->getStatusText());},],// ...],]);if ($model->status == \app\models\Payment::STATUS_PENDING) {echo Html::a('Отменить платеж', ['cancel-payment', 'id' => $model->id], ['class' => 'btn btn-danger']);}?>
  3. Теперь, когда вы добавили ссылку или кнопку для отмены платежа, вам нужно будет проверить, что при переходе по этой ссылке вызывается нужное действие в контроллере. Перейдите на страницу с информацией о платеже и убедитесь, что при нажатии на ссылку открывается страница подтверждения отмены платежа.
  4. Для того, чтобы упростить процесс отмены платежа, вы можете добавить возможность отмены платежа напрямую из списка платежей на странице администрирования. Добавьте следующий код в файл представления views/payment/admin.php:
    <?phpuse yii\helpers\Html;use yii\grid\GridView;// ...echo GridView::widget(['dataProvider' => $dataProvider,'columns' => [// ...['class' => 'yii\grid\ActionColumn','template' => '{view} {cancel}','buttons' => ['cancel' => function ($url, $model) {if ($model->status == \app\models\Payment::STATUS_PENDING) {return Html::a('Отменить', ['cancel-payment', 'id' => $model->id], ['class' => 'btn btn-danger', 'data-confirm' => 'Вы действительно хотите отменить платеж?']);} else {return '';}},],],],]); ?>
  5. Теперь, при просмотре списка платежей на странице администрирования, вы увидите кнопку «Отменить» для платежей со статусом «В ожидании». При нажатии на кнопку откроется страница подтверждения отмены платежа.

Теперь вы знаете, как добавить возможность отмены платежей в Yii2 с использованием интеграции 2Checkout. Удачной работы!

Шаг 8: Добавление возможности возврата платежей в Yii2

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

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


public function actionRefund()
{
$orderId = Yii::$app->request->post('order_id');
// Получить информацию о заказе из базы данных
// ...
// Подтвердить возврат платежа с помощью 2Checkout API
$api = new TwoCheckoutApi();
$api->refundPayment($orderId);
// Обновить статус заказа в базе данных
// ...
// Отправить уведомление пользователю об успешном возврате платежа
// ...
return $this->redirect(['view', 'id' => $orderId]);
}

2. В представлении для просмотра деталей заказа (view.php) добавьте ссылку на экшн возврата платежа:

3. Добавьте необходимые правила маршрутизации в конфигурационный файл (main.php) для обработки запросов на возврат платежей:


'urlManager' => [
'rules' => [
'order//refund' => 'order/refund',
],
],

Теперь, когда пользователь переходит по ссылке «Вернуть платеж», он будет направлен на экшн возврата платежа, который подтверждает возврат платежа с помощью 2Checkout API, обновляет статус заказа в базе данных и отправляет уведомление пользователю об успешном возврате.

Шаг 9: Тестирование и отладка интеграции 2Checkout в Yii2

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

Вот несколько полезных советов, которые помогут вам протестировать и отладить вашу интеграцию 2Checkout в Yii2:

  1. Убедитесь, что вы установили специфичные настройки 2Checkout, такие как ваш номер аккаунта, секретный ключ и валюта. Эти данные должны быть корректными, чтобы обеспечить успешное соединение с платежным шлюзом.
  2. Создайте тестовый заказ в панели управления 2Checkout и попробуйте его оплатить. Убедитесь, что процесс платежа работает корректно и что ваши клиенты могут без проблем произвести оплату.
  3. Проверьте, что все возвращаемые ответы и уведомления от 2Checkout обрабатываются правильно в вашем приложении Yii2. Это включает в себя проверку правильности проверки цифровой подписи, обновление статуса заказа и отображение соответствующей информации на странице заказа.
  4. Проведите тестовые платежи с использованием различных платежных карт и убедитесь, что они успешно проходят через платежный шлюз 2Checkout.

Более тщательное тестирование интеграции вам поможет найти и исправить любые проблемы, такие как неправильная обработка платежей или ошибки в логике заказа. Помните, что тщательное тестирование — это неотъемлемая часть разработки любого платежного функционала.

Если вы столкнетесь с какими-либо проблемами при тестировании и отладке вашей интеграции 2Checkout в Yii2, обратитесь за помощью к документации 2Checkout или к сообществу разработчиков Yii2. В любом случае, это поможет вам найти решение проблемы и обеспечить бесперебойную работу вашего платежного функционала.

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

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