PHPackages                             vergatan10/laravel-wallet - 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. vergatan10/laravel-wallet

ActiveLibrary

vergatan10/laravel-wallet
=========================

Wallet module for Laravel with deposit, withdraw, and transfer features

v1.0.1(11mo ago)13MITPHPPHP ^8.1

Since May 29Pushed 11mo agoCompare

[ Source](https://github.com/vergatan10/laravel-wallet)[ Packagist](https://packagist.org/packages/vergatan10/laravel-wallet)[ RSS](/packages/vergatan10-laravel-wallet/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (1)Versions (4)Used By (0)

Laravel Wallet Package
======================

[](#laravel-wallet-package)

**\**Supported Laravel versions: 10.x, 11.x, 12.x***

Sebuah package Laravel untuk mengelola sistem wallet digital, termasuk fitur:

- Deposit
- Withdraw
- Transfer antar wallet
- Refund
- Pending transfer
- Lock / unlock wallet
- Transaction log
- Auto-create wallet saat user register

---

📦 Instalasi
-----------

[](#-instalasi)

Install via composer:

```
composer require vergatan10/laravel-wallet:1.0.1
```

Publish config &amp; migration:

```
php artisan vendor:publish --provider="vendor\vergatan10\laravel-wallet\WalletServiceProvider" --tag=wallet-config
php artisan migrate
```

Tambahkan kode ini di model User

```
// App/Models/User.php
use Vergatan10\Wallet\Models\Wallet;

// relasi ke wallet
public function wallet()
{
    return $this->hasOne(Wallet::class);
}
```

---

⚙️ Konfigurasi
--------------

[](#️-konfigurasi)

Tambahkan ke .env jika ingin memberikan saldo awal otomatis saat user dibuat:

```
// .env
WALLET_DEFAULT_BALANCE=10000
```

---

🧬 Fitur Otomatis
----------------

[](#-fitur-otomatis)

***Khusus Laravel Breeze/Jetstream***Wallet akan dibuat otomatis saat user mendaftar:

- Auto-create saat event Registered di-trigger
- Saldo awal mengikuti config wallet.default\_balance

\*Jika kamu create user secara manual ikuti langkah ini:

Tambahkan kode ini untuk menjalankan event setelah create user

```
// UserController.php
use Illuminate\Auth\Events\Registered;
use Illuminate\Support\Facades\Event;

// create user
$user = User::create([...]);
// tambahkan kode ini untuk menjalankan event
event(new Registered($user));
```

---

📥 API Endpoints
---------------

[](#-api-endpoints)

Semua route menggunakan prefix `/api/wallet` dan middleware `auth:sanctum`.

MethodEndpointKeteranganBody ContohGET/api/wallet/{wallet\_id}Get wallet balance-GET/api/wallet/{wallet\_id}/transactionsRiwayat transaksi-POST/api/wallet/{wallet\_id}/depositDeposit ke wallet```
{ "amount": 10000, "description": "Top up"}
```

POST/api/wallet/{wallet\_id}/withdrawWithdraw dari wallet```
{ "amount": 5000, "description": "Beli pulsa", "meta": { "ref": "REF123456" }}
```

POST/api/wallet/{wallet\_id}/transferTransfer ke wallet lain```
{ "to_wallet_id": 2, "amount": 2500, "description": "Bayar utang", "meta": { "ref": "REF123456" }}
```

POST/api/wallet/{wallet\_id}/transactions/{tx\_id}/refundRefund transaksi-**Contoh Body Request:**

- **Deposit**

    ```
    {
      "amount": 10000,
      "description": "Top up"
    }
    ```
- **Withdraw**

    ```
    {
      "amount": 5000,
      "description": "Beli pulsa",
      "meta": {
        "ref": "REF123456",
        ...
      }
    }
    ```
- **Transfer**

    ```
    {
      "to_wallet_id": 2,
      "amount": 2500,
      "description": "Bayar utang",
      "meta": {
        "ref": "REF123456",
        ...
      }
    }
    ```

📌 Semua endpoint kecuali create hanya bisa diakses oleh pemilik wallet (dengan middleware wallet.owner)

---

💡 Penggunaan via Facade
-----------------------

[](#-penggunaan-via-facade)

Gunakan facade Wallet untuk mengakses fitur:

```
use Vergatan10\Wallet\Facades\Wallet;
use Vergatan10\Wallet\Models\Wallet as WalletModel;

$wallet = WalletModel::find(1);

// Deposit
Wallet::deposit($wallet, 10000, 'Topup manual');

// Withdraw
Wallet::withdraw($wallet, 5000, 'Penarikan');

// Transfer
Wallet::transfer($fromWallet, $toWallet, 2500, 'Transfer antar user');

// Refund transaksi
Wallet::refund($transaction);

// Lock / Unlock
$wallet->update(['is_locked' => true]);
```

---

🥪 Testing
---------

[](#-testing)

Kamu bisa menambahkan unit test dengan Laravel built-in test tools.

Contoh:

```
public function test_user_can_deposit()
{
    $wallet = Wallet::factory()->create();
    Wallet::deposit($wallet, 10000, 'Test deposit');

    $this->assertEquals(10000, $wallet->fresh()->balance);
}
```

---

📂 Struktur File Package
-----------------------

[](#-struktur-file-package)

```
packages/Vergatan10/Wallet/
├── src/
│   ├── config/
│   │   └── wallet.php
│   ├── Contracts/
│   ├── database/
│   │   └── migrations/
│   ├── Facades/
│   ├── Http/
│   │   ├── Controllers/
│   │   └── Middleware/
│   ├── Listeners/
│   ├── Models/
│   ├── routes/
│   ├── Services/
│   └── WalletServiceProvider.php
└── composer.json

```

---

🔐 Security
----------

[](#-security)

- Semua transaksi diperiksa apakah wallet sedang dikunci
- Transaksi tidak dapat dilakukan dari atau ke wallet yang locked
- Transfer bisa menggunakan pending state → butuh konfirmasi manual

---

✅ Todo &amp; Rencana
--------------------

[](#-todo--rencana)

- Deposit / Withdraw / Transfer
- Refund
- Lock / Unlock
- Konfirmasi transfer
- Limit transaksi harian
- Event listener / notifikasi

---

🧑‍💻 Kontribusi
--------------

[](#‍-kontribusi)

Pull request &amp; issue sangat diterima!
Silakan fork repo dan kirim PR.

###  Health Score

29

—

LowBetter than 60% of packages

Maintenance51

Moderate activity, may be stable

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

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 ~0 days

Total

2

Last Release

348d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/018d05970867dba75cd11a6e06381a8cd002402ef3afac2b041305948d64381e?d=identicon)[vergatan10](/maintainers/vergatan10)

---

Top Contributors

[![vergatan10](https://avatars.githubusercontent.com/u/64019419?v=4)](https://github.com/vergatan10 "vergatan10 (20 commits)")

### Embed Badge

![Health badge](/badges/vergatan10-laravel-wallet/health.svg)

```
[![Health](https://phpackages.com/badges/vergatan10-laravel-wallet/health.svg)](https://phpackages.com/packages/vergatan10-laravel-wallet)
```

###  Alternatives

[fumeapp/modeltyper

Generate TypeScript interfaces from Laravel Models

196277.9k](/packages/fumeapp-modeltyper)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

255.2k](/packages/aedart-athenaeum)

PHPackages © 2026

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