התשלום הראשון שלכם: להוסיף כסף אמיתי לאפליקציה שבניתם עם בינה מלאכותית בלי לפשל

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

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

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

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

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

במקום זאת, אתם משתמשים בספק תשלומים — Stripe הוא הנפוץ, ורוב הכלים מכירים אותו היטב. הספק נותן לכם טופס תשלום מאובטח ובנוי מראש. הלקוח מקליד את הכרטיס שלו לטופס של הספק, הספק מחייב אותו, והאפליקציה שלכם מקבלת רק הודעת “כן, זה שולם”. האפליקציה שלכם יודעת שהתשלום קרה. היא לעולם לא יודעת את מספר הכרטיס.

כשאתם אומרים לכלי שלכם להוסיף תשלומים, אמרו את זה במפורש: “השתמש ב-Stripe Checkout (או בטופס התשלום המתארח של Stripe) כדי שהאפליקציה שלי לעולם לא תטפל בנתוני כרטיס גולמיים.” אם הכלי מתחיל לייצר טופס מותאם אישית עם שדה מספר-כרטיס, עצרו אותו. זה הדבר האחד שאתם לא רוצים שהוא יבנה.

מה “הוספת תשלומים” באמת כוללת

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

  1. מחיר. מה אתם גובים, והאם זה חד-פעמי או חוזר. זה חי אצל ספק התשלומים שלכם, לא מקודד-קשיח באפליקציה שלכם.
  2. שלב קופה. הכפתור שהלקוח לוחץ, ששולח אותו לטופס המאובטח של הספק.
  3. אישור בחזרה לאפליקציה שלכם. אחרי התשלום, הספק אומר לאפליקציה שלכם “האדם הזה שילם על הדבר הזה”. זה החלק שמתחילים הכי הרבה מדלגים עליו — ולדלג עליו זו הדרך שבה אתם מסיימים עם אנשים ששילמו אבל לא קיבלו גישה.
  4. רשומה של מי שילם על מה. כדי שהאפליקציה שלכם תוכל לפתוח את הדבר הנכון וכדי שתוכלו לענות על “האם האדם הזה שילם?” אחר כך.

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

איך לתאר את זה לכלי שלכם

הנה הנחיה שמכסה את החלקים שלמעלה:

תוסיף גישה בתשלום לאפליקציה הזו באמצעות Stripe Checkout. יש תוכנית אחת: 19 דולר לחודש.

כשמשתמש מחובר לוחץ “שדרג”, שלח אותו לעמוד הקופה המתארח של Stripe. אל תבנה טופס כרטיס מותאם אישית — האפליקציה שלי לעולם לא צריכה לטפל במספרי כרטיס.

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

השתמש ב-webhook של Stripe כדי לאשר את התשלום בצד השרת לפני שאתה פותח משהו — אל תפתח על בסיס נחיתת המשתמש בחזרה בעמוד הצלחה בלבד.

הפסקה האחרונה הזו היא זו שמפרידה בין זרימת תשלום אמיתית לשבירה. לתת לעמוד ההצלחה לפתוח גישה אומר שכל מי שלומד את כתובת עמוד ההצלחה יכול לפתוח אותו בחינם. ה-webhook — הודעה ישירה ומאומתת מ-Stripe ל-backend של האפליקציה שלכם — הוא הסימן המהימן. הכלי שלכם יודע איך להקים את זה; אתם רק צריכים לבקש אותו בשמו.

בדקו עם כסף מזויף לפני כסף אמיתי

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

  • תשלום מוצלח. האם הדבר הנכון נפתח? האם הסטטוס של המשתמש השתנה ל”שילם”?
  • כרטיס שנדחה. האם האפליקציה טיפלה בזה בחן, או שהיא השאירה את המשתמש תקוע במסך שבור?
  • קופה שבוטלה — המשתמש לוחץ “חזור” במקום לשלם. האם הוא הגיע למקום הגיוני, עדיין לא משודרג?
  • לשלם, ואז להתנתק ולהתחבר שוב. האם הוא עדיין “שילם”? (זה תופס אפליקציות שפותחות גישה רק לסשן הנוכחי ושוכחות עד מחר.)

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

הטעויות שעולות כסף אמיתי

כמה מצבי כשל ספציפיים צצים שוב ושוב בזרימות תשלום ראשונות:

פתיחה בעמוד ההצלחה במקום ב-webhook. מכוסה למעלה, אבל שווה לחזור עליו כי זו היקרה. אם האפליקציה שלכם פותחת פיצ’רים בתשלום ברגע שהמשתמש נוחת על /success, אתם בוטחים בדפדפן של המשתמש שיהיה כן לגבי השאלה אם הוא שילם. הם לא תמיד. פתחו ב-webhook.

אין רשומה של מה הם שילמו עליו. אם האפליקציה שלכם פשוט הופכת דגל גלובלי של “שילם: כן”, תיאבקו ברגע שיש לכם יותר מתוכנית אחת, או שמישהו מבטל, או שאתם צריכים להנפיק החזר. שמרו את הדבר הספציפי: איזו תוכנית, מתי, וה-ID של הספק לאותו תשלום. תצטרכו את זה לשאלות תמיכה אחר כך.

לשכוח שמנויים מסתיימים. תשלום חד-פעמי פשוט: שילם זה שילם. מנוי חוזר יכול לפקוע — הכרטיס פג, התשלום נכשל בחודש הבא. אם האפליקציה שלכם רק מקשיבה ל”הם שילמו” ולעולם לא ל”המנוי שלהם הסתיים”, יהיו לכם אנשים ששומרים גישה בחינם אחרי שהם מפסיקים לשלם. אמרו לכלי שלכם לטפל גם בהודעת “המנוי בוטל או התשלום נכשל”, לא רק בהצלחה.

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

רשימת בדיקה קצרה לפני שאתם עולים לאוויר

לפני שאתם עוברים ממצב בדיקה לכסף אמיתי:

  • לאפליקציה שלי אין שדה שבו מישהו מקליד מספר כרטיס גולמי.
  • התשלום מאושר על ידי webhook מהספק, לא על ידי הגעת המשתמש לעמוד הצלחה.
  • בדקתי תשלום מוצלח, כרטיס שנדחה, וקופה שבוטלה — כל השלושה מתנהגים בהיגיון.
  • אחרי תשלום, הגישה נשארת פתוחה אחרי התנתקות וביום שלמחרת.
  • האפליקציה שלי מתעדת מה כל אדם שילם עליו, לא רק שהוא שילם.
  • אם מנוי פוקע, הגישה מוסרת אוטומטית.
  • החלפתי את מפתחות הספק ממצב בדיקה למצב חי (קל לשכוח — הלקוח האמיתי הראשון שלכם שפוגע במפתחות בדיקה מקבל שגיאה מבלבלת).

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

הלך הרוח שעוזר

כסף הוא החלק באפליקציה שלכם שבו “נראה שזה עובד” ו”באמת עובד” הכי רחוקים זה מזה. פריסה שבורה, אתם רואים מיד. זרימת תשלום שפותחת גישה בלי לאמת תשלום נראית מושלמת — עד שמישהו שם לב ומספר לחברים שלו.

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


עומדים להוסיף תשלומים למשהו שבניתם? פתחו את סשן הכלי הבא שלכם בתיאור כל הזרימה — המחיר, הקופה, אישור ה-webhook, ומה נפתח — בבת אחת, במקום רק לבקש כפתור תשלום. כפתור התשלום הוא ה-10% הקלים. ה-90% האחרים הם מה ששומר את הכסף כן.