PHPackages                             nazbav/yii2-account-balance - 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. nazbav/yii2-account-balance

ActiveYii2-extension

nazbav/yii2-account-balance
===========================

Расширение Yii2 для учёта баланса по модели дебет/кредит

2026.03.05-21(2mo ago)10BSD-3-ClausePHPPHP ^8.1CI passing

Since May 2Pushed 2mo agoCompare

[ Source](https://github.com/nazbav/yii2-account-balance)[ Packagist](https://packagist.org/packages/nazbav/yii2-account-balance)[ GitHub Sponsors](https://github.com/klimov-paul)[ Patreon](https://www.patreon.com/klimov_paul)[ RSS](/packages/nazbav-yii2-account-balance/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (12)Versions (24)Used By (0)

nazbav/yii2-account-balance
===========================

[](#nazbavyii2-account-balance)

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

Назначение
----------

[](#назначение)

Расширение предоставляет единый контракт операций:

- `increase()` — начисление;
- `decrease()` — списание;
- `transfer()` — перевод между счетами;
- `revert()` — откат транзакции;
- `calculateBalance()` — расчёт баланса по истории операций.

Поддерживаются два варианта хранения:

- `ManagerDb` — прямые SQL-операции через `yii\db\Connection` (рекомендуется для MySQL);
- `ManagerActiveRecord` — интеграция через `yii\db\ActiveRecord`.

Технические требования
----------------------

[](#технические-требования)

- PHP `^8.1` (тестируется в CI на `8.1` и `8.3`);
- Yii2 `~2.0.14`;
- для промышленного режима с `ManagerDb` рекомендуется MySQL `8.0+` (InnoDB).

Контур качества
---------------

[](#контур-качества)

- `phpunit` — полный набор unit/integration тестов библиотеки;
- `phpstan` — уровень строгости `8`;
- `psalm --taint-analysis` — контроль taint-потоков;
- `infection` — мутационное тестирование критического ядра (`Manager`, `ManagerDb`, `ManagerActiveRecord`) с требованием `MSI=100` и `Covered MSI=100`;
- GitHub Actions:
    - `.github/workflows/php.yml` — основной pipeline качества;
    - `.github/workflows/security.yml` — security-проверки репозитория.

Установка
---------

[](#установка)

```
composer require nazbav/yii2-account-balance --prefer-dist
```

Быстрый пример конфигурации
---------------------------

[](#быстрый-пример-конфигурации)

```
use nazbav\balance\ManagerDb;

return [
    'components' => [
        'balanceManager' => [
            'class' => ManagerDb::class,
            'db' => 'db',
            'accountTable' => '{{%balance_account}}',
            'transactionTable' => '{{%balance_transaction}}',
            'accountLinkAttribute' => 'accountId',
            'extraAccountLinkAttribute' => 'extraAccountId',
            'accountBalanceAttribute' => 'balance',
            'amountAttribute' => 'amount',
            'dateAttribute' => 'createdAt',
            'dataAttribute' => 'data',
            'autoCreateAccount' => true,

            // Рекомендуемый профиль безопасности.
            'requirePositiveAmount' => true,
            'forbidTransferToSameAccount' => true,
            'forbidNegativeBalance' => true,
            'forbidDuplicateOperationId' => true,
            'requireOperationId' => true,
            'operationIdAttribute' => 'operationId',
            'minimumAllowedBalance' => 0,
        ],
    ],
];
```

Быстрый пример операций
-----------------------

[](#быстрый-пример-операций)

```
$manager = Yii::$app->balanceManager;

$incomeTxId = $manager->increase(
    ['userId' => 101, 'walletType' => 'bonus_available'],
    300,
    [
        'operationId' => 'order:5001:bonus',
        'operationType' => 'purchase_bonus',
        'orderId' => 5001,
    ]
);

$expenseTxId = $manager->decrease(
    ['userId' => 101, 'walletType' => 'bonus_available'],
    120,
    [
        'operationId' => 'order:5001:redeem',
        'operationType' => 'order_redeem',
    ]
);

$manager->revert($expenseTxId, [
    'operationType' => 'manual_fix',
    'reason' => 'Корректировка по тикету поддержки',
]);
```

Что гарантирует библиотека
--------------------------

[](#что-гарантирует-библиотека)

- транзакционный контур для `increase()/transfer()/revert()`;
- транзакционный контур для `decrease()` в `ManagerDbTransaction`;
- проверка суммы на числовой тип и конечность;
- опциональный запрет суммы `Domain: Идемпотентность + лимиты + риск
    Domain->>Manager: increase/transfer/revert
    Manager->>DB: BEGIN
    Manager->>DB: INSERT balance_transaction
    Manager->>DB: UPDATE balance_account
    DB-->>Manager: COMMIT
    Manager-->>Domain: transactionId
    Domain-->>API: Результат
```

      Loading Полная документация
-------------------

[](#полная-документация)

- [Навигация по документации](docs/README.md)
- [Быстрый старт](docs/tutorial-quick-start.md)
- [Архитектура и потоки данных](docs/architecture-and-data-flow.md)
- [Справочник конфигурации и API](docs/reference-configuration.md)
- [Фактическая матрица поведения](docs/reference-behavior-matrix.md)
- [Практика: уровни лояльности](docs/howto-loyalty-levels.md)
- [Практика: реферальная программа](docs/howto-referral-program.md)
- [Сложные прикладные сценарии](docs/examples-advanced-scenarios.md)
- [Модель угроз и антифрод-контроли](docs/explanation-fraud-controls.md)
- [FAQ и диагностика](docs/faq-and-troubleshooting.md)

Лицензия
--------

[](#лицензия)

BSD-3-Clause. Подробности: [LICENSE.md](LICENSE.md).

###  Health Score

48

—

FairBetter than 94% of packages

Maintenance86

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity82

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 51.7% 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 ~163 days

Recently: every ~0 days

Total

23

Last Release

68d ago

Major Versions

1.0.3 → 2026.03.05-12026-03-05

### Community

Maintainers

![](https://www.gravatar.com/avatar/1fded4ca698f452b7f24f4f8175a46894794b0778d202676e8864b8a1aa37136?d=identicon)[nazbav](/maintainers/nazbav)

---

Top Contributors

[![nazbav](https://avatars.githubusercontent.com/u/21163205?v=4)](https://github.com/nazbav "nazbav (45 commits)")[![klimov-paul](https://avatars.githubusercontent.com/u/1482054?v=4)](https://github.com/klimov-paul "klimov-paul (42 commits)")

---

Tags

yii2Accountingbookkeepingcreditdebitbalance

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan, Psalm, Rector

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/nazbav-yii2-account-balance/health.svg)

```
[![Health](https://phpackages.com/badges/nazbav-yii2-account-balance/health.svg)](https://phpackages.com/packages/nazbav-yii2-account-balance)
```

###  Alternatives

[illuminatech/balance

Provides support for Balance accounting system based on debit and credit principle

16137.4k](/packages/illuminatech-balance)[freelancehunt/php-credit-card-validator

Validates popular debit and credit cards' numbers against regular expressions and Luhn algorithm. Also validates the CVC and the expiration date.

18620.4k2](/packages/freelancehunt-php-credit-card-validator)

PHPackages © 2026

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