Laravel Virtual Wallet — це легкий пакет для Laravel, створений Ніраджем Сайні, який дозволяє управляти віртуальними гаманцями, підтримує різні типи гаманців і веде облік транзакцій. Пакет легко інтегрується з будь-якою моделлю користувача Laravel. Хоча він не обробляє платежі, користувачі можуть відстежувати віртуальні кошти у своєму гаманці після завершення оплати через інший процесор або використовувати віртуальну валюту в іграх.
# Основні функції
- Підтримка кількох гаманців: Створюйте та керуйте кількома типами гаманців для кожного користувача.
- Управління транзакціями: Усі операції з гаманцем фіксуються для повної прозорості.
- Обробка платежів: Легко здійснюйте платежі між гаманцями або зовнішніми системами.
- Управління внесками: Приймайте та фіксуйте внески від користувачів або третіх осіб.
- Підтримка кількох валют: Легко управляйте балансами гаманців у різних валютах.
- Моніторинг статусу гаманців: Слідкуйте та оновлюйте статуси гаманців: активний, заморожений або закритий.
- Безпечно та надійно: Реалізовано на базі Eloquent Laravel, enum, morphs та з підтримкою політик.
- Висока конфігурованість: Налаштуйте моделі, назви таблиць та інше через конфігурацію.
- Проста інтеграція: Додайте трейт до вашої моделі, і все готово до використання.
- Управління балансом: Легкі API для кредитування, дебетування, переказів і перевірки балансу.
# Приклад використання
Встановіть пакет через Composer і запустіть міграції:
composer require haxneeraj/laravel-virtual-wallet
php artisan vendor:publish --provider="Haxneeraj\LaravelVirtualWallet\LaravelVirtualWalletServiceProvider"
php artisan migrate
Переконайтеся, що ваша модель User реалізує WalletInterface і використовує трейт HasVirtualWallet.
use Haxneeraj\LaravelVirtualWallet\Interfaces\WalletInterface;
use Haxneeraj\LaravelVirtualWallet\Traits\HasVirtualWallet;
class User extends Authenticatable implements WalletInterface
{
use HasVirtualWallet;
}
Тепер ви можете створити гаманець:
$user->wallets()->create([
'wallet_type' => 'main',
'currency' => 'usd',
'balance' => 0, // початковий баланс
'currency_type' => 'fiat_currency',
'status' => 'active'
]);
Нарешті, почніть робити внески або платежі у гаманець:
$paymentData = new PaymentData([
'owner_type' => User::class,
'owner_id' => $this->user->id,
'txid' => '306f086a-c7ab-4c89-94b8-209653934aaf',
'amount' => 150,
'description' => 'Перший переказ з зовнішнього рахунку',
'wallet_type' => 'main',
'method' => 'automatic',
'transaction_type' => 'deposit',
'status' => 'approved',
'currency' => 'usd',
'currency_type' => 'fiat_currency'
]);
$user->deposit($paymentData);
Для платежу створіть подібний об'єкт PaymentData, змініть transaction_type на withdraw, а потім використовуйте метод pay().
Ви можете перевірити баланс у своєму гаманці за допомогою $user->getBalance('main') та перевірити наявність достатніх коштів перед здійсненням платежу з $user->hasSufficientBalance(50, 'main').
Дізнайтеся більше про цей пакет та перегляньте вихідний код на GitHub.