PHPackages                             palpalych/payments-plugin - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. palpalych/payments-plugin

ActiveOctober-plugin[Payment Processing](/categories/payments)

palpalych/payments-plugin
=========================

No description provided yet...

v2.0.12(2mo ago)256PHP

Since Sep 14Pushed 2mo agoCompare

[ Source](https://github.com/Pasha234/oc-payments-plugin)[ Packagist](https://packagist.org/packages/palpalych/payments-plugin)[ RSS](/packages/palpalych-payments-plugin/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependencies (6)Versions (13)Used By (0)

Плагин "Payments" для OctoberCMS
--------------------------------

[](#плагин-payments-для-octobercms)

Этот плагин предоставляет интеграцию с платежным шлюзом [ЮKassa](https://yookassa.ru/) для обработки платежей, управления сохраненными способами оплаты и обработки веб-хуков в OctoberCMS.

### Основные возможности

[](#основные-возможности)

- Создание разовых платежей.
- Создание платежей с использованием сохраненных банковских карт.
- Управление способами оплаты (добавление/удаление).
- Автоматическая проверка статуса платежа после возврата со страницы оплаты.
- Обработка веб-хуков от ЮKassa для обновления статусов платежей и карт.
- Интеграция с моделью `RainLab.User`.

### Установка и настройка

[](#установка-и-настройка)

1. **Установка**: Установите плагин стандартным для OctoberCMS способом. Убедитесь, что плагин `RainLab.User` также установлен.
2. **Настройка**:

    - Перейдите в "Настройки" -&gt; "Платежи".
    - Введите ваш `shop_id` и `secret_key` от ЮKassa. Эти данные можно найти в личном кабинете ЮKassa.
    - Сохраните настройки.
3. **Настройка веб-хуков в ЮKassa**:

    - В личном кабинете ЮKassa перейдите в раздел "Интеграция" -&gt; "HTTP-уведомления".
    - В качестве URL для уведомлений укажите: `https://ваш-сайт.ru/yookassa-webhook`.
    - Выберите все события, связанные с платежами (`payment.*`) и способами оплаты (`payment_method.*`).

### Использование

[](#использование)

Плагин предоставляет несколько компонентов для использования на страницах вашего сайта.

#### 1. Компонент `PaymentCheck`

[](#1-компонент-paymentcheck)

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

**Как использовать:**Добавьте компонент на вашу страницу:

```
[PaymentCheck]
```

Компонент будет активирован, если в URL-адресе есть параметры `payment_id` или `payment_method_id`.

#### 2. Компонент `paymentMethods`

[](#2-компонент-paymentmethods)

Отображает список сохраненных способов оплаты пользователя и позволяет добавлять новые или удалять существующие.

**Пример использования на странице профиля:**

```
[paymentMethods]
---

    Мои способы оплаты
    {% component 'paymentMethods' %}

```

Компонент имеет встроенную логику для добавления и удаления карт через AJAX-запросы.

#### 3. Реализация `PayableInterface` (Оплачиваемая сущность)

[](#3-реализация-payableinterface-оплачиваемая-сущность)

Чтобы система могла работать с вашими товарами, услугами или любыми другими сущностями, за которые можно заплатить, ваша Eloquent-модель должна реализовывать интерфейс `PayableInterface`.

Это "контракт", который сообщает платежной системе, как получить необходимую информацию для создания платежа.

**Шаг 1: Создайте вашу модель и миграцию**

Например, создадим модель `Diploma` (Диплом), которую можно купить.

**Шаг 2: Реализуйте интерфейс**

В вашей модели (например, `plugins/myauthor/myplugin/models/Diploma.php`) добавьте `implements PayableInterface` и реализуйте его методы.

```
use PalPalych\Payments\Classes\Domain\Contract\PayableInterface;
use October\Rain\Database\Model;

class Diploma extends Model implements PayableInterface
{
    // ... ваш код модели

    public function getPayableId(): string
    {
        return (string) $this->id;
    }

    public function getPayableType(): string
    {
        return self::class;
    }

    /**
     * Возвращает сумму к оплате в копейках.
     */
    public function getPayableAmount(): int
    {
        return 15000; // 150.00 рублей
    }

    /**
     * Возвращает описание, которое увидит пользователь в ЮKassa.
     */
    public function getPayableDescription(): string
    {
        return "Покупка диплома №{$this->id}";
    }

    /**
     * Этот метод будет вызван после успешной оплаты.
     * Здесь вы можете обновить статус вашей модели.
     */
    public function markAsPaid(): void
    {
        $this->is_purchased = true;
        $this->save();
    }

    public function getReceiptItems(): ReceiptItems
    {
        $receiptItems = new ReceiptItems();
        $receiptItems->addItem(new ReceiptItem(
            'Диплом',
            new ReceiptItemAmount(
                $this->getPayableAmount(),
                ReceiptItemCurrency::rub,
            ),
            VatCode::without_vat,
            1
        ));
        return $receiptItems;
    }

}
```

**Шаг 3: Используйте вашу модель при создании платежа**

Теперь вы можете использовать эту модель для инициации платежа, как показано в сценариях ниже. Платежная система будет автоматически вызывать методы `getPayableAmount()` и `getPayableDescription()` у вашего объекта `$diploma`.

#### 4. Программное создание платежей

[](#4-программное-создание-платежей)

Для инициации платежа необходимо использовать соответствующие UseCase'ы из вашего кода (например, в компоненте или контроллере).

##### Сценарий 1: Оплата без сохраненной карты

[](#сценарий-1-оплата-без-сохраненной-карты)

В этом случае пользователь будет перенаправлен на сайт ЮKassa для выбора способа оплаты.

```
use PalPalych\Payments\Classes\Application\Usecase\Payment\CreatePaymentUseCase;
use PalPalych\Payments\Classes\Application\Dto\Request\CreatePaymentRequest;

// $payable - это ваша модель, которая реализует PayableInterface
// $user - текущий пользователь

/** @var CreatePaymentUseCase $useCase */
$useCase = app(CreatePaymentUseCase::class);

$request = new CreatePaymentRequest(
    userId: $user->id,
    payableId: $payable->id,
    payableType: get_class($payable),
    success_url: 'https://ваш-сайт.ru/payment/success', // URL для возврата после оплаты
    client_email: $user->email,
);

$response = $useCase($request);

return \Redirect::to($response->confirmation_url); // Перенаправляем пользователя на оплату
```

##### Сценарий 2: Оплата с использованием сохраненной карты

[](#сценарий-2-оплата-с-использованием-сохраненной-карты)

Этот сценарий используется для рекуррентных платежей или быстрой оплаты без перехода на сайт платежной системы.

```
use PalPalych\Payments\Classes\Application\Usecase\Payment\CreatePaymentWithPaymentMethodUseCase;
use PalPalych\Payments\Classes\Application\Dto\Request\CreatePaymentWithPaymentMethodRequest;

// $payable - ваша модель, реализующая PayableInterface
// $user - текущий пользователь
// $paymentMethodId - ID сохраненного способа оплаты

/** @var CreatePaymentWithPaymentMethodUseCase $useCase */
$useCase = app(CreatePaymentWithPaymentMethodUseCase::class);

$request = new CreatePaymentWithPaymentMethodRequest(
    userId: $user->id,
    payableId: $payable->id,
    payableType: get_class($payable),
    paymentMethodId: $paymentMethodId,
    client_email: $user->email,
);

$response = $useCase($request); // Платеж будет выполнен автоматически

// Здесь можно обработать результат и показать пользователю сообщение
```

###  Health Score

39

—

LowBetter than 85% of packages

Maintenance88

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~20 days

Recently: every ~54 days

Total

12

Last Release

61d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/74814679?v=4)[Pavel Matkin](/maintainers/Pasha234)[@Pasha234](https://github.com/Pasha234)

---

Top Contributors

[![Pasha234](https://avatars.githubusercontent.com/u/74814679?v=4)](https://github.com/Pasha234 "Pasha234 (12 commits)")

### Embed Badge

![Health badge](/badges/palpalych-payments-plugin/health.svg)

```
[![Health](https://phpackages.com/badges/palpalych-payments-plugin/health.svg)](https://phpackages.com/packages/palpalych-payments-plugin)
```

###  Alternatives

[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.3k10](/packages/helsingborg-stad-municipio)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45344.0k1](/packages/pressbooks-pressbooks)[wp-pay-extensions/gravityforms

Gravity Forms driver for the WordPress payment processing library.

1134.0k4](/packages/wp-pay-extensions-gravityforms)[pressbooks/pressbooks-book

This theme is named after Canadian media theorist Marshall McLuhan, who coined the phrase “the medium is the message.” It is designed for academic writing and is also suitable for fiction. Headings are set in Cormorant Garamond, and body type is set in Lora.

206.7k](/packages/pressbooks-pressbooks-book)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
