Віртуальний гаманець у Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 01 липня, 2025
Віртуальний гаманець Laravel – це простий у використанні пакет, який дозволяє ефективно керувати віртуальними гаманцями в рамках вашого проекту на Laravel. Дізнайтеся, як реалізувати підтримку кількох гаманців та зручно відстежувати транзакції у цій статті!

Laravel Virtual Wallet — це легкий пакет для Laravel, створений Ніраджем Сайні, який дозволяє управляти віртуальними гаманцями, підтримує різні типи гаманців і веде облік транзакцій. Пакет легко інтегрується з будь-якою моделлю користувача Laravel. Хоча він не обробляє платежі, користувачі можуть відстежувати віртуальні кошти у своєму гаманці після завершення оплати через інший процесор або використовувати віртуальну валюту в іграх.

# Основні функції

# Приклад використання

Встановіть пакет через 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.