Verifikasi sandbox — 22 Oktober 2026
Alur BCA VA untuk API dan POP berhasil diverifikasi sampai paid: provider menerima HMAC-SHA256, mengirim callback HTTP asli yang lolos SDK, dan listener memperbarui order sesuai status terverifikasi. Lookup POP yang semula 404 berhasil setelah VA diterbitkan melalui halaman checkout.
Pengujian memakai proyek sandbox yang diberikan pemilik repository. Kredensial, payload bertanda tangan, nomor VA, reference, dan URL pembayaran tidak disimpan dalam dokumen atau fixture repository. Semua request memakai host sandbox dengan timeout 15 detik dan retry dinonaktifkan.
| Operasi SDK | Hasil nyata |
|---|---|
paymentMethods(10000) | Berhasil; 26 metode dikembalikan |
checkout() | Invoice Rp10.000 memakai channel BC berhasil; reference dan URL pembayaran terisi |
checkStatus() untuk invoice API | Berhasil sebelum dan setelah pelunasan; status 01 lalu 00, reference cocok dengan invoice |
pop()->createTransaction() | Invoice Rp10.000 tanpa channel pilihan berhasil; reference dan URL pembayaran terisi |
| Lookup V2 sebelum VA POP diterbitkan | HTTP 404 |
| Konfirmasi BCA VA pada halaman POP | Nomor VA berhasil diterbitkan; lookup V2 kemudian menghasilkan 01 dengan reference sesuai |
| Pelunasan POP melalui simulator resmi | Lookup V2 menghasilkan 00 dengan reference sesuai |
| Callback HTTP asli untuk API dan POP | Signature HMAC-SHA256 dan status provider lolos pemeriksaan; kedua order menjadi paid melalui contoh listener package |
| Pengiriman ulang callback API yang diterima | HTTP 200; paid_at tidak berubah |
| Nominal callback API diubah tanpa signature baru | Ditolak dengan InvalidSignatureException; order paid tidak berubah |
checkStatuses() untuk kedua invoice | Dua hasil dipertahankan: satu sukses dan satu HTTP error, sesuai kontrak partial failure |
Pengujian awal memakai expiry 10 menit; invoice verifikasi lanjutan memakai expiry 60 menit dan data pelanggan sintetis. Pelunasan dilakukan pemilik repository melalui simulator resmi Duitku, tanpa transfer uang nyata. Tidak ada instruksi transfer dana atau request ke host production.
Callback verifikasi lanjutan diterima pada receiver sementara melalui tunnel HTTPS. Receiver memanggil handleCallback() dari source package dan memakai contoh IdempotentPaymentListener dengan database SQLite terisolasi. Pengiriman ulang menguji perubahan order berulang, bukan menjanjikan exactly-once delivery atau membuktikan semua efek bisnis aplikasi pengguna.
Instalasi pada aplikasi Laravel 13 baru juga lolos dari salinan source tracked tanpa dependency development project. Auto-discovery, duitku:doctor, publish asset, render Blade POP, dan callback sintetis lewat fake berhasil tanpa mendaftarkan provider secara manual.
Daftar metode masih memuat GQ pada akun ini, meskipun changelog mendokumentasikan pengurangan channel tersebut. Temuan ini tidak membuktikan invoice GQ masih didukung. SDK tetap menandainya deprecated dan menolak invoice baru GQ.
Batas kesimpulan
Hasil ini membuktikan penerimaan signature pada request yang berhasil di akun sandbox tersebut. Hasilnya tidak mencakup semua akun, channel, nominal, protokol legacy, atau production.
HTTP 404 dari lookup invoice POP tidak diubah menjadi pending, paid, atau failed. Pada alur BCA VA yang diuji, order tersedia di lookup V2 setelah pelanggan memilih channel dan mengonfirmasi pembayaran sampai nomor VA diterbitkan. Jangan menganggap setiap invoice POP baru dapat langsung dibaca, atau menggeneralisasikan hasil satu channel ke seluruh channel.
Belum diuji langsung terhadap provider: pembayaran gagal/canceled, channel selain BCA VA, tokenisasi kartu, disbursement, protokol legacy, dan akun production. Perilaku error/pending/failed serta konkurensi batch tetap diuji dengan fixture lokal; hasil itu dibedakan dari pengujian provider.
Acuan: API V2 dan POP. Catatan ini melengkapi audit awal.