Skip to main content
PaymentService adalah mesin rekonsiliasi. Ia membuat pembayaran dengan nominal unik, menurunkan QRIS dinamis, memindai feed transaksi, lalu menyelesaikan (settle) atau kedaluwarsakan (expire) pembayaran. Biasanya Anda mengaksesnya lewat provider.payments(), bukan mengonstruksinya langsung.

PaymentServiceOptions

Konstruktor melempar CONFIG_INVALID bila transactions maupun transactionFeed tak diberikan, atau bila scope.merchantId tidak sama dengan merchantId.

CreatePaymentInput

Metode

createPayment memvalidasi amount sebagai integer positif dan expiresInMs sebagai angka finite; keduanya melempar CONFIG_INVALID bila invalid. Panggilan konkuren diserialisasi lewat write queue agar tidak ada dua order menerima nominal sama.

Event

PaymentService adalah event emitter dengan peta terketik:
Listener yang melempar tidak menghentikan tick(); error-nya dialihkan ke channel error (kecuali listener error itu sendiri, agar tidak rekursif). Tersedia on, once, off, dan removeAllListeners.

Urutan rekonsiliasi

tick() menjalankan matching sebelum expiry secara sengaja: feed mengindeks transaksi dengan jeda, sehingga pembayar yang membayar dalam jendela bisa muncul setelah expiresAt lewat. Pembayaran baru di-expire setelah expiresAt + clockSkewMs - persis saat matcher berhenti menerima transaksi untuknya. Nominal yang dibebaskan masuk karantina 2 x clockSkewMs, dan transaksi yang sudah settle diingat lintas tick agar tak menyelesaikan pembayaran kedua. Lihat Model pembayaran.

Pencocokan

Fungsi murni yang diekspos untuk pengujian dan penggunaan lanjutan:
reconcile menjamin at-most-one settlement per transaksi dalam satu pemanggilan. Lihat Model pembayaran dan QRIS dan alokasi.