Berhenti Melakukan Refund Pembayaran yang Seharusnya Tidak Perlu Anda Tagih

Banyak pengembang merilis alur checkout yang langsung menagih kartu. Kemudian, mereka menjalankan validasi pesanan seperti pengecekan stok atau pengecekan penipuan.

Jika validasi gagal, kode tersebut akan mengeluarkan refund.

Ini menimbulkan masalah bagi pelanggan Anda. Mereka melihat ada tagihan dan kemudian refund beberapa hari kemudian. Mereka menganggap perusahaan Anda tidak tepercaya. Mereka mengira uang mereka tertahan.

Refund memiliki biaya nyata:

Solusinya adalah menggunakan model authorize dan capture.

Sebagian besar tutorial mengajarkan Anda untuk melakukan capture uang secara instan. Sebaliknya, Anda sebaiknya melakukan hold (penahanan) pada dana terlebih dahulu. Hold tersebut tertahan di kartu tanpa memindahkan uangnya. Jika validasi Anda gagal, Anda cukup membatalkan hold tersebut. Tidak ada tagihan yang akan muncul di rekening koran pelanggan.

Di Stripe, Anda melakukan ini dengan mengatur capture_method ke manual.

Alur barunya bekerja seperti ini:

  1. Buat PaymentIntent dengan manual capture.
  2. Dana diotorisasi tetapi tidak dipindahkan.
  3. Jalankan validasi pesanan Anda.
  4. Jika pesanan valid, lakukan capture pembayaran.
  5. Jika pesanan gagal, batalkan intent tersebut.

Pendekatan ini menawarkan beberapa keuntungan:

Sebagian besar penyedia pembayaran utama menggunakan logika yang sama.

Gunakan metode ini jika ada bagian dari logika bisnis Anda yang dapat gagal setelah pelanggan menekan tombol bayar. Pindahkan pengecekan berisiko Anda di antara tahap otorisasi dan capture. Ini menjaga pergerakan uang Anda tetap bersih dan pelanggan Anda tetap senang.

Sumber: https://dev.to/jguillaumesio/stop-refunding-payments-you-should-never-have-charged-4d7m