תפסיקו לבצע החזרים על תשלומים שלא הייתם אמורים לגבות

מפתחים רבים משיקים תהליך checkout שמגבה את הכרטיס באופן מיידי. לאחר מכן, הם מריצים אימות הזמנה כמו בדיקות מלאי או בדיקות הונאה.

אם האימות נכשל, הקוד מבצע החזר כספי (refund).

זה יוצר בעיות עבור הלקוחות שלכם. הם רואים חיוב ואז החזר ימים לאחר מכן. הם חושבים שהחברה שלכם אינה אמינה, והם חושבים שהכסף שלהם תקוע.

להחזרים כספיים יש עלויות אמיתיות:

הפתרון הוא להשתמש במודל של authorize ו-capture.

רוב המדריכים מלמדים אתכם לבצע capture לכסף באופן מיידי. במקום זאת, עליכם לבצע hold על הכספים תחילה. ה-hold נשאר על הכרטיס מבלי להעביר את הכסף בפועל. אם האימות שלכם נכשל, אתם פשוט מבטלים את ה-hold. אף חיוב לא יופיע בפירוט החשבון של הלקוח.

ב-Stripe, עושים זאת על ידי הגדרת ה-capture_method ל-manual.

התהליך החדש עובד כך:

  1. צרו PaymentIntent עם manual capture.
  2. הכספים עוברים authorization אך לא מועברים.
  3. הריצו את אימות ההזמנה שלכם.
  4. אם ההזמנה תקינה, בצעו capture לתשלום.
  5. אם ההזמנה נכשלת, בטלו את ה-intent.

גישה זו מציעה מספר יתרונות:

רוב ספקי התשלומים הגדולים משתמשים באותה לוגיקה:

השתמשו בשיטה זו אם חלק כלשהו מהלוגיקה העסקית שלכם עלול להיכשל לאחר שהלקוח לוחץ על "שלם" (pay). העבירו את הבדיקות הסיכוניות שלכם לשלב שבין ה-authorization ל-capture. זה ישמור על תנועות כספים נקיות ועל לקוחות מרוצים.

מקור: https://dev.to/jguillaumesio/stop-refunding-payments-you-should-never-have-charged-4d7m