Download the PHP package elgibor-solution/laravel-payment-bni without Composer
On this page you can find all versions of the php package elgibor-solution/laravel-payment-bni. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download elgibor-solution/laravel-payment-bni
More information about elgibor-solution/laravel-payment-bni
Files in elgibor-solution/laravel-payment-bni
Package laravel-payment-bni
Short Description Laravel package for BNI eCollection (VA) & QRIS with auditing, granular errors, tests & Postman.
License Apache-2.0
Informations about the package laravel-payment-bni
elgibor-solution/laravel-payment-bni
Namespace: ESolution\BNIPayment
Laravel package to integrate BNI Virtual Account / eCollection and BNI QRIS SNAP BI (MPM) with:
- ✅ VA: create, update, inquiry
- ✅ QRIS SNAP BI (Dynamic QR MPM + Inquiry)
- ✅ Access Token B2B (SNAP)
- ✅ X-SIGNATURE (HMAC / RSA)
- ✅ Webhook payment notification
- ✅ Audit trail ke DB (request/response)
- ✅ Error handling granular (kode BNI)
- ✅ DB Config (override config file)
- ✅ Mirror billing + reconcile (scheduler)
- ✅ Events:
BniPaymentReceived,BniBillingPaid,BniBillingExpired - ✅ Unit tests (Orchestra), Postman collection
📦 Installation
Publish config & migration:
⚙️ Configuration
File utama konfigurasi: config/bni.php
ENV minimal
Potongan config/bni.php (versi baru)
⚠️ Catatan: Untuk VA / eCollection masih memakai mekanisme lama (BniEnc). SNAP BI khusus untuk channel
qris.
🧱 Arsitektur Singkat
| Class | Fungsi |
|---|---|
BaseClient |
HTTP client, logger, routing ke host BNI (VA / SNAP) |
BniVaClient |
Integrasi BNI Virtual Account / eCollection |
BniQrisClient |
Integrasi BNI QRIS SNAP BI (generate QR & inquiry) |
BniSnapAuth |
Access Token B2B, X-SIGNATURE (HMAC / RSA) |
BniEnc |
Enkripsi / dekripsi payload BNI VA |
BniPaymentLog |
Audit trail request/response |
BniBilling |
Mirror data billing VA di DB |
Event BniPaymentReceived |
Dikirim saat ada webhook payment |
Event BniBillingPaid |
Dikirim saat VA sukses dibayar |
Event BniBillingExpired |
Dikirim saat VA kedaluwarsa |
🧾 Penggunaan BNI VA / eCollection
1. Persiapan data kredensial
Untuk VA, kamu akan menerima dari BNI:
client_idsecret_key(kadang disebutclient_secretatauapi_keydi dokumen lama)- Prefix billing (optional, tergantung setup)
Saran: simpan di .env kamu sendiri:
Dan di config/services.php (opsional):
2. Membuat VA (Create Billing)
Paket ini akan otomatis:
- Meng-enkripsi payload
- Memanggil endpoint BNI eCollection
- Menyimpan / mengupdate data ke tabel
bni_billingsvia modelBniBilling:trx_idvirtual_accounttrx_amountcustomer_name/customer_email/customer_phonebilling_typedescriptionexpired_at
3. Update VA (Update Billing)
4. Inquiry VA (Cek Status Billing)
🔔 Webhook Payment Notification (VA)
Paket ini menyediakan route webhook default untuk notifikasi pembayaran BNI VA.
1. Route
Setelah publish config, route default:
Route ini:
- Memverifikasi dan mendekripsi payload
- Menyimpan log ke
bni_payment_logs - Mengupdate status
BniBilling - Mem-broadcast event
BniPaymentReceived
2. Contoh Listener
Daftarkan listener di EventServiceProvider:
Contoh listener sederhana:
🕒 Scheduler & Reconcile
Aktifkan scheduler di .env:
Tambahkan ke app/Console/Kernel.php:
Jalankan manual:
💳 Penggunaan BNI QRIS SNAP BI (MPM)
1. Inisialisasi Client
2. Generate Dynamic QR (MPM)
3. Inquiry Payment (MPM Query Payment)
BniQrisClient::createDynamic()danBniQrisClient::inquiryStatus()masih ada sebagai alias untuk kompatibilitas mundur, namun disarankan pindah kegenerateQr()danqueryPayment().
🔑 Access Token B2B SNAP
Access Token (../{version}/access-token/b2b) diambil otomatis oleh BaseClient ketika:
- Channel =
qris signature_type = 1(Symmetric Signature with Get Token)
Token disimpan di Laravel Cache.
Jika ingin ambil manual:
🔐 X-SIGNATURE (HMAC / RSA)
Implementasi mengikuti dokumen MPM – BNI QR ACQUIRING MERCHANT API SNAP BI v1.5.5.
Signature Type 1 – Symmetric (HMAC SHA512)
Header:
X-SIGNATURE = HMAC_SHA512(clientSecret, stringToSign)Authorization: Bearer {accessToken}
Signature Type 2 – Asymmetric (RSA SHA256)
Header:
X-SIGNATURE = base64(RSA-SHA256(privateKey, stringToSign))
Paket ini menangani detail tersebut secara otomatis lewat BniSnapAuth::buildRequestSignature() dan BaseClient::snapRequest().
🧪 Testing
Atau dari Tinker:
🤝 Contributing
Pull request dan issue sangat diterima.
- Fork repository
- Buat branch feature:
git checkout -b feature/nama-feature - Commit & push
- Buka Pull Request
📄 License
Apache 2.0
🧑💻 Maintainer
PT Elgibor Solusi Digital
https://elgibor-solution.com
All versions of laravel-payment-bni with dependencies
illuminate/support Version ^11 || ^12
illuminate/http Version ^11 || ^12
illuminate/contracts Version ^11 || ^12
guzzlehttp/guzzle Version ^7.9