מדריך למפתחים ל-REST API של PayPlus - נקודת הקצה generateLink, צמד הכותרות api-key ו-secret-key, ה-payment_page_uid שחייב להיות לך קודם, וסביבת ה-staging שהופכת אותו לסולק הישראלי הפחות כואב לפתח מולו.
עיקרי הדברים
- ל-PayPlus יש סביבת staging מתועדת לצד הייצור. באינטגרציית תשלומים זה שווה יותר מכל יופי בממשק - אפשר לבנות את כל הזרימה בלי להזיז כסף אמיתי.
- האימות הוא צמד כותרות - api-key ו-secret-key. שניהם סודות בצד השרת שמאפשרים לחייב לקוחות בשם העסק, ולכן אף אחד מהם לא מתקרב לקוד לקוח.
- צריך payment_page_uid לפני שקריאה כלשהי עובדת. הוא מזהה לאיזה דף תשלום מוגדר לייצר קישור - הוא מוגדר בממשק של PayPlus, לא נוצר על ידי ה-API.
- קישור תשלום הוא קישור, לא session. אפשר לשלוח אותו ב-WhatsApp, במייל או ב-SMS, ולכן זו התאמה טבעית לזרימת הצעת-מחיר-לתשלום - ולכן צריך להחליט כמה זמן הוא נשאר בתוקף.
PayPlus הוא סולק ישראלי שהממשק המרכזי שלו בנוי סביב רעיון פשוט: אתה מייצר קישור תשלום, והלקוח משלם דרכו. אין iframe חובה ואין דף שאתה מארח - הקישור מוביל לדף תשלום שמתארח אצל PayPlus.
זה הופך אותו למתאים במיוחד לתרחישים שאינם חנות מקוונת קלאסית: לשלוח קישור תשלום ב-WhatsApp אחרי שיחת מכירה, לצרף אותו להצעת מחיר, או לגבות על שירות שהוזמן בטלפון.
הבסיס
יצירת קישור תשלום:
POST https://restapi.payplus.co.il/api/v1.0/PaymentPages/generateLinkהאימות הוא צמד כותרות: api-key ו-secret-key. שניהם מונפקים בממשק של PayPlus.
בבקשה נדרש גם payment_page_uid - וזו נקודת המעידה הראשונה. הוא מזהה לאיזה דף תשלום מוגדר מייצרים קישור, והוא לא נוצר על ידי ה-API: מגדירים דף תשלום בממשק ומקבלים ממנו את המזהה. אם אין לך אותו, אף קריאה לא תעבוד, ואין קיצור דרך בקוד.
התיעוד יושב ב-docs.payplus.co.il, וכל פונקציה מציגה בו את כתובות ה-Staging וה-Production שלה.
מה שהופך אותו לנוח: סביבת Staging
זו הנקודה שאני שם ראשונה. PayPlus מתעד סביבת Staging נפרדת לצד הייצור, וכל פונקציה בתיעוד כוללת את שתי הכתובות.
למה זה חשוב יותר ממה שנדמה: באינטגרציית תשלומים, טעות בסביבת הייצור אינה שורה שמוחקים. היא עסקה אמיתית - זיכוי, רישום בהנהלת החשבונות, ולפעמים לקוח מבולבל. סביבה שבה אפשר להריץ עשרים איטרציות בלי להזיז כסף שווה יותר מכל הבדל בתחביר ה-API.
מעשית: להחזיק את כתובת הבסיס, את ה-api-key, את ה-secret-key ואת ה-payment_page_uid כארבעה משתני סביבה נפרדים. בדיקות אוטומטיות מצביעות תמיד על Staging. המעבר לייצור הוא שינוי תצורה, לא שינוי קוד.
קישור הוא לא session - ומה שנגזר מזה
ההבדל המהותי מול iframe: קישור תשלום הוא כתובת שאפשר לשלוח, להעביר הלאה, ולפתוח מחר.
זה יתרון גדול לזרימות עסקיות אמיתיות - שליחה ב-WhatsApp, צירוף להצעת מחיר, גבייה על הזמנה טלפונית. אבל הוא גם מייצר שלוש שאלות שאסור להשאיר פתוחות:
- כמה זמן הקישור בתוקף? קישור שלא פג הוא חשיפה. לקוח יכול לפתוח אותו חודשיים אחרי שההצעה כבר לא רלוונטית, או להעביר אותו למישהו אחר.
- מה קורה אם משלמים פעמיים? אותו קישור, שני תשלומים. המערכת שלך חייבת לדעת שההזמנה כבר שולמה ולא לספק פעמיים.
- איך תדע שההזמנה שולמה? לא הלקוח מודיע לך.
מקור האמת: הודעת שרת, לא הדפדפן
כמו בכל סולק, זו הנקודה שקובעת כמה הזמנות "נעלמות".
הדף שאליו הלקוח מופנה אחרי התשלום אינו אמין כמנגנון עדכון. לקוח שסוגר את הלשונית ברגע שהתשלום עבר, או שהאינטרנט שלו נופל, לא יגיע לשם - וההזמנה תישאר "ממתינה" למרות שהכסף נגבה.
המשמעות חדה עוד יותר כשמדובר בקישור שנשלח ב-WhatsApp: הלקוח משלם בטלפון, סוגר את הדפדפן וחוזר לשיחה. הוא לעולם לא רואה מסך תודה, ולא אכפת לו.
הכלל: עדכון מצב ההזמנה מגיע מהודעת שרת-לשרת. הדף מציג ללקוח מסך תודה. אף פעם לא להפך.
ונקודת הקצה שמקבלת את ההודעה חייבת להיות אידמפוטנטית ולהצליב את הסכום מול ההזמנה - הודעות יכולות לחזור, ואסור שזה יסמן שתי הזמנות משולמות.
מי מפיק את החשבונית
ההחלטה שחוזרת בכל פרויקט שמחבר סליקה והנהלת חשבונות: אם הסולק מוגדר להפיק מסמך אוטומטית, והמערכת שלך גם מפיקה דרך מערכת החשבוניות - נוצרים שני מסמכי מס על עסקה אחת.
זה מתגלה בסוף החודש, אצל רואה החשבון. יש לבחור צד אחד ולתעד אותו לפני שכותבים שורה.
אבטחה
- שני המפתחות הם סודות שרת.
secret-keyמאפשר לחייב לקוחות בשם העסק. לא בקוד המקור, לא בלוגים, ולא בשום דבר שרץ בדפדפן. - לא לגעת בפרטי כרטיס. הם מוזנים בדף של PayPlus. אל תעביר אותם, אל תתעד אותם - אחרת אתה נכנס להיקף PCI DSS.
- לאמת את ההודעה הנכנסת. נקודת קצה ציבורית שמסמנת הזמנות כמשולמות היא יעד מובן מאליו.
- להצליב סכום תמיד. גם כשהכול נראה תקין. זו ההגנה שתופסת מה שהשאר פספסו.
צ'קליסט לפני העלייה לאוויר
- לוודא שיש
payment_page_uidמוגדר, ושכל ארבעת הערכים הם משתני סביבה. - לבנות את כל הזרימה מול Staging, כולל כישלון.
- לבדוק את התרחיש שבו הלקוח משלם וסוגר מיד - האם ההזמנה עודכנה?
- לבדוק תשלום כפול על אותו קישור.
- להחליט על תוקף הקישור ולוודא שהוא נאכף.
- לוודא שאין הפקת מסמך כפולה.
להשוואה בין הסולקים, ראה השוואת סולקים ישראליים למפתחים.
שאלות נפוצות
איך מתאמתים מול ה-API של PayPlus?
בשתי כותרות, api-key ו-secret-key, ששתיהן מונפקות בממשק של PayPlus. הבקשות דורשות גם payment_page_uid שמזהה לאיזה דף תשלום מוגדר הקישור מיועד - המזהה הזה מגיע מהממשק ולא נוצר דרך ה-API, ולכן שום דבר לא עובד עד שהוגדר דף תשלום.
האם ל-PayPlus יש סביבת בדיקות?
כן - סביבת Staging מתועדת לצד הייצור, וכל פונקציה בתיעוד מציגה את שתי הכתובות. באינטגרציית תשלומים זה משמעותי מאוד, כי טעות בייצור היא עסקה אמיתית שדורשת זיכוי ורישום בהנהלת החשבונות ולא שורה שאפשר למחוק.
האם אפשר לשלוח קישור תשלום של PayPlus ב-WhatsApp?
כן, וזו אחת הסיבות המרכזיות לבחור סולק מבוסס-קישור - הוא מתאים להצעות מחיר, להזמנות טלפוניות ולשיחות מכירה ולא רק ל-checkout קלאסי. אבל מכיוון שקישור אפשר להעביר הלאה ולפתוח מאוחר יותר, צריך להחליט כמה זמן הוא בתוקף ולוודא שתשלום כפול על אותו קישור לא יגרום לאספקה כפולה.
האם לעדכן סטטוס הזמנה בדף ההפניה של PayPlus?
לא - להשתמש בהודעת שרת-לשרת. ההפניה תלויה בכך שהלקוח יישאר בדפדפן, ובקישור שנשלח ב-WhatsApp הוא בדרך כלל משלם בטלפון וחוזר לשיחה בלי לראות מסך תודה כלל. סימון ההזמנה כמשולמת שם משאיר אותה ממתינה בזמן שהכסף כבר נגבה.
להמשך קריאה
שירות רלוונטי
אינטגרציות
לגרום למערכות שאתם כבר משלמים עליהן לדבר זו עם זו.
על הכותב
יהונתן סעדיה
מהנדס פרילנסר לאוטומציה, אתרים ו-MVP
אני יהונתן סעדיה, מהנדס בכיר שבונה אוטומציה עסקית, אתרים מותאמים ומוצרי MVP לעסקים קטנים ובינוניים בארה"ב, אירופה וישראל. המדריכים האלה נכתבים מתוך עבודה אמיתית עם לקוחות, לא מתיאוריה.
בוא נעבוד יחדיש לך פרויקט דומה?
ספר לי מה אתה מנסה להפוך לאוטומטי או לבנות, ואומר לך מהי הדרך המהירה והאמינה ביותר ליישם את זה.
