Notification-based Payment Gateway
PayNotif
Webhook Server
Sistem payment gateway berbasis notifikasi Android. Deploy webhook.js di VPS/server kamu sendiri sebagai webhook endpoint yang menerima notifikasi dari PayNotif. Aplikasi atau bot kamu tinggal polling /pending untuk mendeteksi dan mengkonfirmasi pembayaran sesuai nominal unik.
Fitur Utama
Notifikasi Real-time
Notifikasi pembayaran dari aplikasi e-wallet atau bank langsung diteruskan ke server dalam hitungan detik via PayNotif.
Auto Konfirmasi
Polling endpoint /pending secara berkala untuk mendeteksi pembayaran masuk dan konfirmasi otomatis sesuai nominal unik.
Unique Amount
Tambahkan nominal unik (Rp 100–200) ke setiap transaksi agar pembayaran dapat diidentifikasi secara akurat tanpa konflik.
Android Gateway
Cukup satu HP Android dengan PayNotif terpasang sebagai gateway. Tidak perlu API bank atau integrasi e-wallet yang rumit.
Download Aplikasi Android
Install PayNotif di HP Android yang akan digunakan sebagai gateway pembayaran. Pastikan HP selalu terhubung internet dan izin notifikasi sudah diberikan.
PayNotif
Aplikasi Android untuk meneruskan notifikasi pembayaran dari e-wallet/bank ke webhook server secara otomatis.
Download APK
Panduan Setup PayNotif
Setup Server
Jalankan webhook.js di VPS/server kamu. File ini adalah inti dari PayNotif — bertugas menerima notifikasi dari PayNotif dan menyimpannya di queue untuk dikonfirmasi. Sesuaikan PORT sebelum dijalankan.
webhook.js — Webhook Server
Cara Kerja Sistem
1
Pembeli melakukan pembayaran
Pembeli transfer/bayar via e-wallet (DANA, GoPay, OVO, dll) atau bank. Notifikasi muncul di HP gateway.
2
PayNotif mendeteksi notifikasi
Aplikasi PayNotif membaca notifikasi masuk, mengekstrak nominal Rupiah, lalu POST ke webhook server kamu.
3
webhook.js menyimpan data
Server menerima data notifikasi di endpoint
/notif dan menyimpannya di queue pending selama 5 menit.4
Aplikasi polling konfirmasi
Aplikasi/bot kamu polling ke
/pending setiap beberapa detik, mencocokkan nominal unik, lalu hapus via DELETE /pending/:amount setelah terkonfirmasi.
POST /notif
Endpoint ini dipanggil otomatis oleh PayNotif saat ada notifikasi pembayaran masuk. Kamu juga bisa memanggil manual untuk testing via cURL.
Request Body
| Field | Type | Deskripsi |
|---|---|---|
text | string | Teks notifikasi lengkap (harus mengandung nominal Rp) |
pkg | string | Package name aplikasi sumber notifikasi |
Response
| Field | Type | Deskripsi |
|---|---|---|
status | boolean | true jika berhasil disimpan |
amount | number | Nominal yang berhasil di-parse (integer) |
pkg | string | Package name sumber |
raw | string | Teks notifikasi asli |
GET /pending
Ambil semua notifikasi yang masuk dalam 5 menit terakhir. Notifikasi yang sudah expired otomatis dibersihkan saat endpoint ini dipanggil.
DELETE /pending/:amount
Hapus notifikasi dari queue setelah transaksi dikonfirmasi. Panggil endpoint ini segera setelah pembayaran terdeteksi agar tidak terjadi double-confirm.
Contoh Client
Contoh implementasi client polling. payment.js melakukan polling ke server kamu, mencocokkan nominal unik, dan mengkonfirmasi pembayaran. Sesuaikan WEBHOOK_URL dengan URL server kamu sebelum digunakan.
payment.js — Client Polling
FAQ
E-wallet apa saja yang didukung?
Semua e-wallet dan bank yang mengirim notifikasi push ke HP Android didukung, termasuk DANA, GoPay, OVO, ShopeePay, BCA, BRI, Mandiri, dan lainnya. Selama notifikasi mengandung nominal Rp, PayNotif bisa mendeteksinya secara otomatis.
Apakah HP Android harus selalu menyala?
Ya, HP Android yang terpasang PayNotif harus selalu menyala, terhubung internet, dan layar tidak dikunci total. Disarankan menggunakan HP khusus sebagai gateway dan pastikan pengaturan battery saver tidak mematikan PayNotif di background.
Bagaimana jika dua pembeli membayar nominal yang sama secara bersamaan?
Itulah fungsi nominal unik. Setiap transaksi mendapat tambahan acak Rp 100–200, sehingga kemungkinan konflik sangat kecil. Namun jika terjadi konflik (sangat jarang), sistem akan mencocokkan berdasarkan nominal dan waktu masuk (field
time di queue).Apakah data pembayaran aman?
PayNotif berjalan di server kamu sendiri — tidak ada data yang dikirim ke server pihak ketiga. Semua notifikasi disimpan sementara di memory server (5 menit) lalu otomatis dihapus. Disarankan mengamankan endpoint dengan autentikasi tambahan jika server kamu bersifat publik.
Berapa lama notifikasi tersimpan di queue?
Notifikasi tersimpan selama 5 menit sejak diterima. Setelah itu otomatis dihapus saat endpoint
GET /pending dipanggil. Pastikan polling interval client kamu cukup singkat (1–3 detik) agar tidak melewatkan konfirmasi.Bisakah diintegrasikan dengan bot Telegram?
Bisa. Bot Telegram tinggal melakukan polling ke
GET /pending secara berkala. Saat nominal unik terdeteksi cocok, bot konfirmasi pembayaran dan panggil DELETE /pending/:amount. Contoh implementasi ada di bagian Contoh Client — cukup ganti axios dengan library HTTP yang kamu pakai di bot.Apakah webhook.js bisa di-deploy di Vercel atau Cloudflare Workers?
Bisa, tapi perlu penyesuaian. Vercel dan Cloudflare Workers bersifat stateless — data queue in-memory akan hilang antar request. Solusinya ganti storage ke database eksternal seperti Upstash Redis (Vercel KV) atau Neon PostgreSQL. Struktur sederhana: saat
/notif simpan ke Redis dengan TTL 300 detik, saat /pending baca semua key dengan prefix notif:*, saat DELETE hapus key tersebut.