NepalPay adalah library pembayaran yang dikembangkan untuk mengintegrasikan layanan seperti Khalti dan Esewa dalam aplikasi berbasis Spring Boot di ekosistem Java. Versi v1.2.0 merupakan pembaruan signifikan yang menambahkan fitur metrik, indikator kesehatan, dan peningkatan reaktifitas, sekaligus menjawab kekurangan observabilitas yang aiemy
Sebelumnya, setelah NepalPay berhasil dipublikasikan di Maven Central dan menembus sejumlah versi stabil, pengembang masih menghadapi tantangan utama: bagaimana memantau performa gateway di produksi? Selama pengujian, keberhasilan hanya terukur dari sisi apakah payment berhasil, tanpa informasi tentang konfigurasi gateway, mode sandbox atau production, latensi API, frekuensi retry, atau kerusakan pada signature callback.
Dengan integrasi Micrometer yang otomatis aktif ketika spring‑boot‑starter‑actuator tersedia, setiap gateway kini merekam timer operasi secara mandiri. Metrik seperti nepalpay.khalti.payment.initiate.duration, nepalpay.esewa.status.check.duration, dan nepalpay.connectips.validate.duration ditag dengan nilai gateway dan mode (sandbox/production) serta status success atau error. Grafana dapat langsung menanyakan kuantil P99 latensi untuk payment initiation atau memantau frekuensi signature failure.
Retry counter juga menjadi terukur, misalnya nepalpay.khalti.retry.attempts, yang memungkinkan analisis of how many times a retry was triggered per operation. Bug yang ditemukan CodeRabbit pada awal pengembangan memperlihatkan bahwa counter retry awalnya dibagikan secara global, menyebabkan semua jalur (lookup, refund, initiate) mengincrement counter yang sama. Solusi yang diadopsi melibatkan pemuatan callback retry sebagai parameter, sehingga statistik menjadi akurat.
Keamanan menjadi top prioritas dengan mencatat kegagalan verifikasi signature pada callback Esewa dan Fonepay. Metrik nepalpay.esewa.callback.signature.failed dan nepalpay.fonepay.callback.signature.failed kini memicu alert Grafana berbasis rate, sehingga tim dapat mempercepat respons terhadap potensi serangan atau konfigurasi yang salah, yang sebelumnya hanya muncul sebagai kegagalan tak terduga.
Health indicator yang otomatis terdaftar untuk setiap gateway menghadirkan endpoint /actuator/health yang melaporkan status komponen seperti nepalpayKhalti dan nepalpayConnectIps, lengkap dengan detail mode sandbox atau status pfxLoaded. Pendekatan ini sengaja menghindari HTTP ping yang berpotensi terhalang oleh rate‑limit sandbox, fokusnya pada verifikasi konfigurasi internal.
Peningkatan starter reaktif pada v1.2.0 menempatkan semua validasi di dalam Mono.defer(), sehingga error dijalankan sebagai alur reaktif yang tidak memblokir. Pattern Timer.Sample yang dipakai menghindari blokade thread dan scheduler switching, memungkinkan pengukuran latensi yang akurat tanpa memengaruhi performa aplikasi yang berbasis Reactor.
Secara keseluruhan, CodeRabbit menemukan 19 masalah pada PR v1.2.0, dari bug perhitungan counter hingga keamanan signature, yang semuanya diperbaiki sebelum rilis. Implementasi metrik dan health indicator ini membuka jalan bagi pengembang untuk membangun sistem pembayaran yang lebih transparan, aman, dan siap skalakan di lingkungan produksi Indonesia.