Skip to main content
PaymentStore adalah kontrak persistence pembayaran aktif. MerchantId menyertakan InMemoryPaymentStore untuk pengembangan dan satu proses; deployment multi-instance harus menyediakan store tahan lama.

Kontrak

listActive mengembalikan semua pembayaran yang masih menempati slot nominal unik. Implementasi harus menerapkan scope bila diberikan; PaymentService juga memfilter defensif saat store kustom mengembalikan record dari scope lain.

InMemoryPaymentStore

Default bila Anda tidak menyediakan store.
InMemoryPaymentStore hanya cocok untuk test atau satu proses. State, karantina nominal, dan ingatan transaksi yang sudah dipakai tidak dapat mengoordinasikan beberapa proses. Deployment multi-instance harus memindahkan jaminan itu ke penyimpanan tahan lama.

Store production

Sediakan implementasi Anda sendiri lewat store pada config provider.
Store production wajib:
  • Menyimpan payment.scope tanpa menghapus field.
  • Memfilter listActive(scope) secara benar.
  • Menegakkan keunikan nominal aktif per scope secara atomik - misalnya unique constraint pada scope + uniqueAmount untuk baris pending.
  • Mencegah transisi terminal ditimpa proses lain.
  • Menyimpan klaim transaksi atau jaminan ekuivalen bila proses dapat restart.
PaymentService memfilter scope lagi sebagai pertahanan terhadap store lama, tetapi itu bukan pengganti constraint database. Karantina nominal dan ingatan transaksi terkonsumsi hidup di memori proses; restart dan multi-process memerlukan jaminan persistence pada store. Lihat Konsep inti.

Scope dan record tanpa scope

PaymentService beroperasi dalam salah satu dari dua mode:
  • Scoped (dipakai facade provider): hanya memproses pembayaran dengan scope yang sama, dan fail-fast bila store memiliki payment aktif tanpa scope. Record tanpa scope ambigu dan tidak boleh diklaim feed provider.
  • Unscoped (pemakaian PaymentService langsung tanpa scope): hanya memproses pembayaran tanpa scope.
Perpindahan store Shopee ditolak selama scope lama masih punya payment aktif. Lihat Sesi Shopee.

Referensi

Lihat Referensi API tipe untuk tipe terkait.