fyyyn1210/kursbi
Composer 安装命令:
composer require fyyyn1210/kursbi
包简介
Laravel package sederhana untuk mengambil data kurs mata uang Bank Indonesia secara dinamis dengan fitur filter tanggal, jumlah konversi, dan limit hasil.
README 文档
README
Paket PHP untuk mengambil data kurs mata uang dari Bank Indonesia (BI) untuk PHP & Laravel.
📋 Deskripsi
KursBI adalah library PHP yang memudahkan pengambilan data kurs mata uang dari API resmi Bank Indonesia. Paket ini mendukung:
- ✅ Pengambilan kurs untuk satu atau beberapa mata uang sekaligus
- ✅ Penentuan rentang tanggal data kurs
- ✅ Pembatasan jumlah data hasil (limit)
- ✅ Konversi jumlah nominal berdasarkan kurs beli dan jual
- ✅ Caching data agar efisien dan mengurangi request berulang
- ✅ User-Agent dinamis untuk request yang lebih natural
- ✅ Support untuk Laravel Cache
🚀 Instalasi
Install via Composer:
composer require fyyyn1210/kursbi
💡 Penggunaan
Import Class
use Fyyyn1210\KursBI;
Inisialisasi
$kursBI = new KursBI();
📖 Contoh Penggunaan
1. Mendapatkan Kurs USD Hari Ini
use Fyyyn1210\KursBI; $kursBI = new KursBI(); $result = $kursBI->getKurs('USD'); print_r($result);
Return Value:
Array ( [success] => 1 [mata_uang_count] => 1 [data] => Array ( [0] => Array ( [mata_uang] => USD [periode] => Array ( [start] => 2025-08-02 [end] => 2025-08-02 ) [jumlah_input] => [jumlah_data] => 1 [rata_rata] => Array ( [beli] => 15485.50 [jual] => 15561.50 ) [total_konversi] => [data] => Array ( [0] => Array ( [tanggal] => 2025-08-02 [nilai] => 1 [beli] => 15485.50 [jual] => 15561.50 ) ) ) ) )
2. Mendapatkan Kurs Beberapa Mata Uang
$result = $kursBI->getKurs('USD,EUR,JPY'); print_r($result);
Return Value:
Array ( [success] => 1 [mata_uang_count] => 3 [data] => Array ( [0] => Array ( [mata_uang] => USD [periode] => Array ( [start] => 2025-08-02 [end] => 2025-08-02 ) [jumlah_input] => [jumlah_data] => 1 [rata_rata] => Array ( [beli] => 15485.50 [jual] => 15561.50 ) [total_konversi] => [data] => Array ( [0] => Array ( [tanggal] => 2025-08-02 [nilai] => 1 [beli] => 15485.50 [jual] => 15561.50 ) ) ) [1] => Array ( [mata_uang] => EUR [periode] => Array ( [start] => 2025-08-02 [end] => 2025-08-02 ) [jumlah_input] => [jumlah_data] => 1 [rata_rata] => Array ( [beli] => 16850.25 [jual] => 16927.75 ) [total_konversi] => [data] => Array ( [0] => Array ( [tanggal] => 2025-08-02 [nilai] => 1 [beli] => 16850.25 [jual] => 16927.75 ) ) ) [2] => Array ( [mata_uang] => JPY [periode] => Array ( [start] => 2025-08-02 [end] => 2025-08-02 ) [jumlah_input] => [jumlah_data] => 1 [rata_rata] => Array ( [beli] => 103.45 [jual] => 103.89 ) [total_konversi] => [data] => Array ( [0] => Array ( [tanggal] => 2025-08-02 [nilai] => 100 [beli] => 103.45 [jual] => 103.89 ) ) ) ) )
3. Mendapatkan Kurs dengan Rentang Tanggal
$result = $kursBI->getKurs( 'USD', '2025-08-01', '2025-08-02' ); print_r($result);
Return Value:
Array ( [success] => 1 [mata_uang_count] => 1 [data] => Array ( [0] => Array ( [mata_uang] => USD [periode] => Array ( [start] => 2025-08-01 [end] => 2025-08-02 ) [jumlah_input] => [jumlah_data] => 2 [rata_rata] => Array ( [beli] => 15480.25 [jual] => 15556.25 ) [total_konversi] => [data] => Array ( [0] => Array ( [tanggal] => 2025-08-01 [nilai] => 1 [beli] => 15475.00 [jual] => 15551.00 ) [1] => Array ( [tanggal] => 2025-08-02 [nilai] => 1 [beli] => 15485.50 [jual] => 15561.50 ) ) ) ) )
4. Mendapatkan Kurs dengan Limit Data
$result = $kursBI->getKurs( 'USD', '2025-07-28', '2025-08-02', 2 // limit hanya 2 data ); print_r($result);
Return Value:
Array ( [success] => 1 [mata_uang_count] => 1 [data] => Array ( [0] => Array ( [mata_uang] => USD [periode] => Array ( [start] => 2025-07-28 [end] => 2025-08-02 ) [jumlah_input] => [jumlah_data] => 2 [rata_rata] => Array ( [beli] => 15478.25 [jual] => 15554.25 ) [total_konversi] => [data] => Array ( [0] => Array ( [tanggal] => 2025-07-28 [nilai] => 1 [beli] => 15471.00 [jual] => 15547.00 ) [1] => Array ( [tanggal] => 2025-07-29 [nilai] => 1 [beli] => 15485.50 [jual] => 15561.50 ) ) ) ) )
5. Konversi Mata Uang dengan Jumlah Tertentu
$result = $kursBI->getKurs( 'USD', null, // tanggal hari ini null, // tanggal hari ini null, // tanpa limit 1000 // konversi $1000 ); print_r($result);
Return Value:
Array ( [success] => 1 [mata_uang_count] => 1 [data] => Array ( [0] => Array ( [mata_uang] => USD [periode] => Array ( [start] => 2025-08-02 [end] => 2025-08-02 ) [jumlah_input] => 1000 [jumlah_data] => 1 [rata_rata] => Array ( [beli] => 15485.50 [jual] => 15561.50 ) [total_konversi] => Array ( [beli] => 15485500 [jual] => 15561500 ) [data] => Array ( [0] => Array ( [tanggal] => 2025-08-02 [nilai] => 1 [beli] => 15485.50 [jual] => 15561.50 [konversi_beli] => 15485500 [konversi_jual] => 15561500 ) ) ) ) )
6. Penggunaan Kompleks - Multiple Currency dengan Konversi
$result = $kursBI->getKurs( 'USD,EUR,SGD', '2025-08-01', '2025-08-02', 1, // limit 1 data per mata uang 500 // konversi 500 unit mata uang ); print_r($result);
📚 API Reference
Method getKurs()
public function getKurs( string $mataUang = 'USD', string $startDate = null, string $endDate = null, int $limit = null, float $jumlah = null ): array
Parameters
| Parameter | Type | Default | Deskripsi |
|---|---|---|---|
$mataUang |
string |
'USD' |
Kode mata uang (bisa multiple, dipisah koma). Contoh: 'USD' atau 'USD,EUR,JPY' |
$startDate |
string|null |
null |
Tanggal mulai (format: Y-m-d). Jika null, akan menggunakan tanggal hari ini |
$endDate |
string|null |
null |
Tanggal akhir (format: Y-m-d). Jika null, akan menggunakan tanggal hari ini |
$limit |
int|null |
null |
Batas jumlah data yang dikembalikan per mata uang |
$jumlah |
float|null |
null |
Jumlah nominal untuk konversi mata uang |
Return Value
Method ini mengembalikan array dengan struktur:
[
'success' => bool, // Status keberhasilan request
'mata_uang_count' => int, // Jumlah mata uang yang diminta
'data' => [ // Array data kurs per mata uang
[
'mata_uang' => string, // Kode mata uang
'periode' => [
'start' => string, // Tanggal mulai
'end' => string // Tanggal akhir
],
'jumlah_input' => float|null, // Jumlah input untuk konversi
'jumlah_data' => int, // Jumlah data kurs
'rata_rata' => [
'beli' => float, // Rata-rata kurs beli
'jual' => float // Rata-rata kurs jual
],
'total_konversi' => [ // Hanya ada jika $jumlah tidak null
'beli' => float, // Total konversi kurs beli
'jual' => float // Total konversi kurs jual
] | null,
'data' => [ // Array detail kurs per tanggal
[
'tanggal' => string, // Tanggal kurs
'nilai' => float, // Nilai nominal
'beli' => float, // Kurs beli
'jual' => float, // Kurs jual
'konversi_beli' => float, // Hasil konversi beli (jika ada)
'konversi_jual' => float // Hasil konversi jual (jika ada)
]
]
]
]
]
⚙️ Fitur
Caching
Library ini menggunakan Laravel Cache untuk menyimpan hasil request selama 6 jam. Cache key menggunakan format: kursbi_{kode_mata_uang}_{start_date}_{end_date}.
User-Agent Dinamis
Setiap request menggunakan User-Agent yang digenerate secara random dari kombinasi OS dan browser populer untuk menghindari blocking.
Error Handling
Jika terjadi error saat mengambil data dari BI, method akan mengembalikan array kosong dan error akan di-report menggunakan fungsi report() Laravel.
🎯 Mata Uang yang Didukung
Library ini mendukung semua mata uang yang tersedia di API Bank Indonesia, termasuk namun tidak terbatas pada:
- USD (US Dollar)
- EUR (Euro)
- JPY (Japanese Yen)
- GBP (British Pound)
- SGD (Singapore Dollar)
- AUD (Australian Dollar)
- CHF (Swiss Franc)
- CAD (Canadian Dollar)
- HKD (Hong Kong Dollar)
- CNY (Chinese Yuan)
- Dan mata uang lainnya yang didukung BI
📋 Requirements
- PHP >= 7.4
- Laravel >= 8.0
- GuzzleHttp/Guzzle
- Laravel Cache
🤝 Contributing
Kontribusi selalu diterima! Silakan buat pull request atau buka issue untuk bug report dan feature request.
📄 License
Library ini menggunakan lisensi MIT. Lihat file LICENSE untuk detail lengkap.
🐛 Bug Reports
Jika Anda menemukan bug, silakan buat issue di GitHub Issues dengan informasi:
- Versi PHP yang digunakan
- Versi Laravel yang digunakan
- Code snippet yang menyebabkan error
- Pesan error yang muncul
📞 Support
Jika Anda butuh bantuan atau memiliki pertanyaan, silakan:
- Buka issue di GitHub
- Email: [riosraskaa@gmail.com]
🎉 Credits
- Data kurs dari Bank Indonesia
- Terima kasih kepada semua kontributor
⭐ Jangan lupa berikan star jika library ini membantu Anda!
fyyyn1210/kursbi 适用场景与选型建议
fyyyn1210/kursbi 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 0 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 08 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「currency」 「laravel」 「currency converter」 「exchange rate」 「indonesia」 「BI」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 fyyyn1210/kursbi 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 fyyyn1210/kursbi 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 fyyyn1210/kursbi 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Tools to convert between .NET and PHP date formats
Encode integer IDs using a preset or customized symbol set
Fixer.io data provider for Peso
TCMB Currenct Converter
Immutable PHP currency converter that's data-agnostic.
Alfabank REST API integration
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 23
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-08-01