PHPackages                             duitku/laravel - 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. [Payment Processing](/categories/payments)
4. /
5. duitku/laravel

ActiveLibrary[Payment Processing](/categories/payments)

duitku/laravel
==============

Duitku Payment Gateway for Laravel

v2.0.0(2mo ago)25MITPHPPHP ^8.2CI passing

Since Jan 27Pushed 2mo agoCompare

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

READMEChangelogDependencies (9)Versions (9)Used By (0)

Duitku Laravel SDK
==================

[](#duitku-laravel-sdk)

[![Tests](https://github.com/HasanH47/duitku-laravel/actions/workflows/tests.yml/badge.svg)](https://github.com/HasanH47/duitku-laravel/actions/workflows/tests.yml)[![Static Analysis](https://github.com/HasanH47/duitku-laravel/actions/workflows/static-analysis.yml/badge.svg)](https://github.com/HasanH47/duitku-laravel/actions/workflows/static-analysis.yml)[![PHP Version](https://camo.githubusercontent.com/c9f64f714c636ba27a3bba6dfd52f98426832db1262747efa54b212d16943651/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545382e322d626c7565)](https://camo.githubusercontent.com/c9f64f714c636ba27a3bba6dfd52f98426832db1262747efa54b212d16943651/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d253545382e322d626c7565)[![Laravel Version](https://camo.githubusercontent.com/eb1b645c7c97d45a4eefdfe8b711797b9cc783a811c6b1122fd716ea1f666630/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d31302e7825323025374325323031312e7825323025374325323031322e782d726564)](https://camo.githubusercontent.com/eb1b645c7c97d45a4eefdfe8b711797b9cc783a811c6b1122fd716ea1f666630/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c61726176656c2d31302e7825323025374325323031312e7825323025374325323031322e782d726564)

SDK Laravel **resmi komunitas** untuk [Duitku Payment Gateway](https://www.duitku.com/) — Modern, Typed, dan Production-Ready.

> **Apa itu SDK ini?**SDK ini adalah "jembatan" antara aplikasi Laravel kamu dan Duitku. Tanpa SDK ini, kamu harus menulis kode HTTP request manual, menghitung signature sendiri, dan mengurus banyak hal teknis. Dengan SDK ini, semua itu sudah diurus — kamu tinggal panggil method-nya saja.

---

✨ Fitur Utama
-------------

[](#-fitur-utama)

FiturPenjelasan🔒 **Typed DTOs**Semua request &amp; response pakai object, bukan array mentah. IDE auto-complete jalan, typo ketahuan saat coding.🛡️ **Auto Signature**Signature MD5/SHA256 digenerate &amp; divalidasi otomatis. Tidak perlu hitung hash manual.🚀 **Parallel Check**Cek status 50+ transaksi dalam &lt;1 detik pakai `Http::pool`.📢 **Event-Driven**Handle callback pakai Laravel Events — kode lebih bersih, gampang di-test.💸 **Disbursement**Transfer dana, cek saldo, verifikasi rekening — semua dari satu SDK.⚡ **Duitku POP**Integrasi popup pembayaran tanpa redirect halaman.🧪 **Testable**Mudah di-mock pakai `Http::fake()`, dibuat dengan Pest PHP.📝 **33 Payment Methods**Semua metode pembayaran Duitku tersedia sebagai PHP Enum.---

🚀 Quick Start (5 Menit)
-----------------------

[](#-quick-start-5-menit)

### Langkah 1: Install

[](#langkah-1-install)

```
composer require duitku/laravel
```

### Langkah 2: Publish Config

[](#langkah-2-publish-config)

```
php artisan vendor:publish --tag=duitku-config
```

> Perintah ini akan membuat file `config/duitku.php` di project kamu. File ini berisi semua pengaturan yang bisa kamu ubah.

### Langkah 3: Setup `.env`

[](#langkah-3-setup-env)

Tambahkan kredensial Duitku kamu. Kredensial ini didapat dari [Dashboard Duitku](https://passport.duitku.com/merchant/Project).

```
# Wajib
DUITKU_MERCHANT_CODE=DXXX            # Merchant Code dari dashboard Duitku
DUITKU_API_KEY=xxx...xxx              # API Key dari dashboard Duitku
DUITKU_SANDBOX_MODE=true              # true = testing, false = production

# Opsional (untuk Disbursement / Transfer Dana)
DUITKU_USER_ID=your-user-id
DUITKU_EMAIL=your-email@example.com

# Opsional (untuk HTTP & Logging)
DUITKU_TIMEOUT=30                     # Timeout request dalam detik
DUITKU_RETRY_TIMES=0                  # Jumlah retry jika gagal
DUITKU_LOG_CHANNEL=                   # Channel log Laravel (kosongkan = tidak log)
```

### Langkah 4: Buat Pembayaran Pertamamu! 🎉

[](#langkah-4-buat-pembayaran-pertamamu-)

```
use Duitku\Laravel\Facades\Duitku;
use Duitku\Laravel\Data\PaymentRequest;

// 1. Buat request pembayaran
$request = new PaymentRequest(
    amount: 50000,                              // Nominal pembayaran (dalam Rupiah)
    merchantOrderId: 'INV-' . time(),           // ID unik untuk order ini
    productDetails: 'Topup 50 Diamonds',        // Deskripsi produk
    email: 'pelanggan@example.com',             // Email pelanggan
    paymentMethod: 'VC'                         // Metode bayar (opsional)
);

// 2. Kirim ke Duitku → dapat URL pembayaran
$response = Duitku::checkout($request);

// 3. Arahkan pelanggan ke halaman pembayaran Duitku
return redirect($response->paymentUrl);
```

> **Apa yang terjadi?**Duitku akan membuat "invoice" pembayaran dan memberikan URL. Pelanggan kamu akan diarahkan ke URL tersebut untuk menyelesaikan pembayaran (transfer VA, scan QRIS, dll).

---

📋 Contoh Fitur Lainnya
----------------------

[](#-contoh-fitur-lainnya)

### Cek Status Transaksi

[](#cek-status-transaksi)

```
use Duitku\Laravel\Support\PaymentCode;

$status = Duitku::checkStatus('INV-123');

if ($status->statusCode === PaymentCode::SUCCESS) {
    echo "✅ Sudah dibayar!";
}
```

### Cek Banyak Transaksi Sekaligus (Parallel) 🚀

[](#cek-banyak-transaksi-sekaligus-parallel-)

```
// Cek 100 transaksi dalam < 1 detik!
$statuses = Duitku::checkStatuses(['INV-001', 'INV-002', 'INV-003']);

foreach ($statuses as $status) {
    echo "{$status->merchantOrderId}: {$status->statusCode}";
}
```

### Handle Callback (Webhook) dengan Events

[](#handle-callback-webhook-dengan-events)

```
// Di Controller — cukup 1 baris!
public function callback(Request $request)
{
    Duitku::handleCallback($request->all()); // Auto validasi + dispatch event
    return response('OK');
}

// Di Listener — tangkap event pembayaran sukses
class UpdateOrderPaid
{
    public function handle(DuitkuPaymentReceived $event)
    {
        $order = Order::where('id', $event->callback->merchantOrderId)->first();
        $order->update(['status' => 'paid']);
    }
}
```

### Duitku POP (Pembayaran Popup)

[](#duitku-pop-pembayaran-popup)

```
// Backend: dapatkan reference token
$response = Duitku::pop()->createTransaction($request);

// Frontend: tampilkan popup dengan Blade Component
```

```

```

### Disbursement (Transfer Dana)

[](#disbursement-transfer-dana)

```
// 1. Verifikasi rekening tujuan
$inquiry = Duitku::disbursement()->bankInquiry($info);
echo "Nama: " . $inquiry->accountName;

// 2. Eksekusi transfer
$transfer = Duitku::disbursement()->transfer(...);
```

---

🗺️ Kapan Pakai API vs POP?
--------------------------

[](#️-kapan-pakai-api-vs-pop)

**API (Redirect)****POP (Popup)****Cara Kerja**Pelanggan diarahkan ke halaman DuitkuPopup muncul di halaman kamu**Metode Bayar**Bisa pilih satu metode spesifikPelanggan pilih sendiri di popup**Cocok Untuk**E-commerce, checkout standarSaaS, top-up, donasi**User Experience**Redirect → bayar → kembaliBayar langsung tanpa pindah halaman---

📖 Dokumentasi Lengkap
---------------------

[](#-dokumentasi-lengkap)

Dokumentasi detail tersedia di [VitePress Docs](./docs/guide/introduction.md):

1. [Introduction](./docs/guide/introduction.md) — Kenapa pakai SDK ini
2. [Installation](./docs/guide/installation.md) — Instalasi step-by-step
3. [Configuration](./docs/guide/configuration.md) — Semua opsi konfigurasi
4. [Payments](./docs/guide/usage-payments.md) — Buat pembayaran dengan typed DTOs
5. [Duitku POP](./docs/guide/usage-pop.md) — Integrasi popup
6. [Callback System](./docs/guide/callback-system.md) — Handle webhook
7. [Error Handling](./docs/guide/error-handling.md) — Exception &amp; error codes
8. [Disbursement](./docs/guide/usage-disbursement.md) — Transfer dana
9. [Blade Components](./docs/guide/blade-components.md) — UI components

---

🧪 Testing
---------

[](#-testing)

```
# Jalankan semua test
composer test

# Static analysis
./vendor/bin/phpstan analyse
```

🤝 Contributing
--------------

[](#-contributing)

Contributions are welcome! Silakan buka Issue atau Pull Request.

📄 Lisensi
---------

[](#-lisensi)

MIT License — lihat file [LICENSE](LICENSE) untuk detail.

###  Health Score

40

—

FairBetter than 88% of packages

Maintenance86

Actively maintained with recent releases

Popularity7

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity52

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

Total

8

Last Release

68d ago

Major Versions

v1.3.2 → v2.0.02026-03-05

### Community

Maintainers

![](https://www.gravatar.com/avatar/f6aa05e6470dca6109a8a90f7cc76ea10186bd385cfef748863c03934591df6e?d=identicon)[HasanH47](/maintainers/HasanH47)

---

Top Contributors

[![HasanH47](https://avatars.githubusercontent.com/u/112043708?v=4)](https://github.com/HasanH47 "HasanH47 (41 commits)")

---

Tags

duitkularavelpayment-gatewaysdk

###  Code Quality

TestsPest

Static AnalysisPHPStan

Code StyleLaravel Pint

Type Coverage Yes

### Embed Badge

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

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

###  Alternatives

[laraveldaily/laravel-invoices

Missing invoices for Laravel

1.5k1.3M4](/packages/laraveldaily-laravel-invoices)[aedart/athenaeum

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

255.2k](/packages/aedart-athenaeum)[sebdesign/laravel-viva-payments

A Laravel package for integrating the Viva Payments gateway

4845.9k](/packages/sebdesign-laravel-viva-payments)[musahmusah/laravel-multipayment-gateways

A Laravel Package that makes implementation of multiple payment Gateways endpoints and webhooks seamless

852.2k1](/packages/musahmusah-laravel-multipayment-gateways)[karson/mpesa-php-sdk

172.2k](/packages/karson-mpesa-php-sdk)[henryejemuta/laravel-monnify

A laravel package to seamlessly integrate monnify api within your laravel application

132.1k](/packages/henryejemuta-laravel-monnify)

PHPackages © 2026

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