Skip to content

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 SDKHasil nyata
paymentMethods(10000)Berhasil; 26 metode dikembalikan
checkout()Invoice Rp10.000 memakai channel BC berhasil; reference dan URL pembayaran terisi
checkStatus() untuk invoice APIBerhasil 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 diterbitkanHTTP 404
Konfirmasi BCA VA pada halaman POPNomor VA berhasil diterbitkan; lookup V2 kemudian menghasilkan 01 dengan reference sesuai
Pelunasan POP melalui simulator resmiLookup V2 menghasilkan 00 dengan reference sesuai
Callback HTTP asli untuk API dan POPSignature HMAC-SHA256 dan status provider lolos pemeriksaan; kedua order menjadi paid melalui contoh listener package
Pengiriman ulang callback API yang diterimaHTTP 200; paid_at tidak berubah
Nominal callback API diubah tanpa signature baruDitolak dengan InvalidSignatureException; order paid tidak berubah
checkStatuses() untuk kedua invoiceDua 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.

Released under the MIT License.