𝗦𝘁𝗼𝗽 𝗥𝗲𝗳𝘂𝗻𝗱𝗶𝗻𝗴 𝗣𝗮𝘆𝗺𝗲𝗻𝘁𝘀 𝗬𝗼𝘂 𝗦𝗵𝗼𝘂𝗹𝗱 𝗡𝗲𝘃𝗲𝗿 𝗛𝗮𝘃𝗲 𝗖𝗵𝗮𝗿𝗴𝗲𝗱
Ramai pembangun melancarkan aliran pembayaran yang mengecas kad dengan serta-merta. Kemudian, mereka menjalankan pengesahan pesanan seperti semakan stok atau semakan penipuan.
Jika pengesahan gagal, kod tersebut akan mengeluarkan bayaran balik (refund).
Ini menimbulkan masalah kepada pelanggan anda. Mereka melihat caj dan kemudian bayaran balik beberapa hari kemudian. Mereka beranggapan syarikat anda tidak boleh dipercayai. Mereka berfikir wang mereka tersangkut.
Bayaran balik mempunyai kos sebenar:
- Pelanggan hilang kepercayaan apabila mereka melihat dua transaksi berasingan.
- Bayaran balik mengambil masa 5 hingga 10 hari untuk muncul dalam penyata bank.
- Anda mungkin kerugian wang disebabkan yuran transaksi atau kadar pertukaran mata wang.
- Rangkaian kad menandakan corak caj-dan-bayaran-balik yang kerap sebagai berisiko tinggi.
Penyelesaiannya adalah dengan menggunakan model authorize dan capture.
Kebanyakan tutorial mengajar anda untuk melakukan capture wang secara serta-merta. Sebaliknya, anda sepatutnya meletakkan sekatan (hold) pada dana terlebih dahulu. Sekatan tersebut akan berada pada kad tanpa memindahkan wang tersebut. Jika pengesahan anda gagal, anda hanya perlu membatalkan sekatan tersebut. Tiada caj yang akan muncul dalam penyata pelanggan.
Dalam Stripe, anda melakukannya dengan menetapkan capture_method kepada manual.
Aliran baharu berfungsi seperti ini:
- Cipta
PaymentIntentdengan manual capture. - Dana diberi kebenaran (authorized) tetapi tidak dipindahkan.
- Jalankan pengesahan pesanan anda.
- Jika pesanan sah, lakukan capture pada pembayaran tersebut.
- Jika pesanan gagal, batalkan intent tersebut.
Pendekatan ini menawarkan beberapa kelebihan:
- Anda mengelakkan keperluan untuk bayaran balik.
- Kebenaran (authorization) yang dibatalkan akan hilang begitu sahaja daripada penyata pelanggan.
- Anda boleh melakukan partial capture. Jika pelanggan membeli tiga barangan tetapi satu daripadanya kehabisan stok, anda hanya melakukan capture untuk jumlah dua barangan sahaja.
- Anda mencipta jejak audit yang bersih dalam log anda.
Kebanyakan penyedia pembayaran utama menggunakan logik yang sama.
- Stripe menggunakan
capture_method: manual. - Adyen menggunakan manual capture delays.
- Braintree menggunakan
submitForSettlement: false. - PayPal menggunakan
intent: AUTHORIZE.
Gunakan kaedah ini jika mana-mana bahagian logik perniagaan anda boleh gagal selepas pelanggan menekan butang bayar. Alihkan semakan berisiko anda di antara proses authorization dan capture. Ini memastikan pergerakan wang anda bersih dan pelanggan anda gembira.
Sumber: https://dev.to/jguillaumesio/stop-refunding-payments-you-should-never-have-charged-4d7m