PHP code example of goldoni / laravel-virtual-wallet
1. Go to this page and download the library: Download goldoni/laravel-virtual-wallet library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
goldoni / laravel-virtual-wallet example snippets
Wallet::for($user)->label('main')->currency('EUR')->credit('100.00');
---
## ⚙️ Requirements
* PHP **8.2+**
* Laravel (provided by the host application)
* Any DB supported by Laravel that handles `decimal(20,8)`
---
## 🚀 Quick Start
1. **Install** (path repo)
return [
'allow_negative' => false,
'default_currency' => 'EUR',
'precision' => 8,
'table_prefix' => 'wallet_',
'models' => [
'wallet' => Goldoni\LaravelVirtualWallet\Models\Wallet::class,
'entry' => Goldoni\LaravelVirtualWallet\Models\Entry::class,
'transfer' => Goldoni\LaravelVirtualWallet\Models\Transfer::class,
],
'enums' => [
'entry_type' => Goldoni\LaravelVirtualWallet\Enums\EntryType::class,
'entry_status' => Goldoni\LaravelVirtualWallet\Enums\EntryStatus::class,
'transfer_status' => Goldoni\LaravelVirtualWallet\Enums\TransferStatus::class,
],
];
use Goldoni\LaravelVirtualWallet\Traits\HasWallets;
class User extends Authenticatable
{
use HasWallets;
}
use Goldoni\LaravelVirtualWallet\Facades\Wallet;
Wallet::for($user)
->label('main')
->currency('EUR')
->credit('100.00', ['idempotency_key' => 'dep-100']);
Wallet::for($user)
->label('main')
->currency('EUR')
->debit('25.00', ['idempotency_key' => 'wd-25']);
Wallet::for($buyer)
->label('main')
->currency('EUR')
->transfer(
toOwner: $seller,
amount: '35.00',
options: ['idempotency_key' => 'order-500'],
fromLabel: 'main',
toLabel: 'revenue'
);
$entries = Wallet::for($user)->label('main')->currency('EUR')->history(50);
$balance = Wallet::for($user)->label('main')->currency('EUR')->balance();
$wallets = Wallet::for($user)->wallets();
$totals = Wallet::for($user)->totalBalanceByCurrency();
Wallet::for($user)
->label('main')
->currency('EUR')
->credit('100.00')
->debit('25.00')
->transfer($seller, '30.00', options: [], fromLabel: 'main', toLabel: 'revenue');
// Fund two wallets
Wallet::for($user)->label('main')->currency('EUR')->credit('200.00');
Wallet::for($user)->label('savings')->currency('EUR')->credit('50.00');
// Move funds from main to savings
Wallet::for($user)
->label('main')
->currency('EUR')
->transfer($user, '25.00', options: [], fromLabel: 'main', toLabel: 'savings');
// Read balances
$mainBalance = Wallet::for($user)->label('main')->currency('EUR')->balance();
$savingsBalance = Wallet::for($user)->label('savings')->currency('EUR')->balance();
Wallet::for(\Illuminate\Database\Eloquent\Model $owner): self
Wallet::label(string $label): self
Wallet::currency(string $currency): self
Wallet::credit(string $amount, array $options = [], ?string $label = null, ?string $currency = null): self
Wallet::debit(string $amount, array $options = [], ?string $label = null, ?string $currency = null): self
Wallet::transfer(\Illuminate\Database\Eloquent\Model $toOwner, string $amount, array $options = [], ?string $fromLabel = null, ?string $toLabel = 'main', ?string $currency = null): self
Wallet::history(int $limit = 50, ?string $label = null, ?string $currency = null): \Illuminate\Support\Collection
Wallet::historyBetween(string $from, string $to, ?string $label = null, ?string $currency = null): \Illuminate\Support\Collection
Wallet::paginateHistory(int $perPage = 50, ?string $label = null, ?string $currency = null): \Illuminate\Contracts\Pagination\LengthAwarePaginator
Wallet::cursorHistory(int $perPage = 50, ?string $label = null, ?string $currency = null): \Illuminate\Contracts\Pagination\CursorPaginator
Wallet::balance(?string $label = null, ?string $currency = null): string
Wallet::balances(): \Illuminate\Support\Collection
Wallet::totalBalanceByCurrency(): \Illuminate\Support\Collection
Wallet::wallets(): \Illuminate\Support\Collection
Wallet::ensureWallet(string $label, string $currency): \Illuminate\Database\Eloquent\Model
Goldoni\LaravelVirtualWallet\Enums\EntryType::CREDIT | DEBIT
Goldoni\LaravelVirtualWallet\Enums\EntryStatus::PENDING | COMPLETED | REVERSED
Goldoni\LaravelVirtualWallet\Enums\TransferStatus::PENDING | COMPLETED | FAILED
use Goldoni\LaravelVirtualWallet\Facades\Wallet;
class WalletController
{
public function deposit(Request $request)
{
$user = $request->user();
Wallet::for($user)
->label('main')
->currency('EUR')
->credit($request->input('amount'), [
'idempotency_key' => $request->header('Idempotency-Key')
]);
return response()->noContent();
}
}