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:
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.