שאלות על אינטגרציה עם פייפל
-
יש כאן למישהו נסיון עם תכנות מול פייפאל?
יש לי כמה שאלות והמון תלונות...
א. אני לא מבין איך החברה הזאת עדיין קיימת (ועוד מרוויחה) בשנת תשפ"א עם כל הבלאגן שהולך שם. לדעתי הם היו אמורים מזמן להתפוצץ לאלפי רסיסים ולצלול לתחתית האוקיינוס.
התיעוד על הפנים. הספריות על הפנים. האתר על הפנים. התמיכה על הפנים. להמשיך?.
(אגב, ראיתי שהם נותנים תשלומים יחסית יפים עבור באגי אבטחה. לפי הבלאגן שאני רואה שם אמורים להיות אלפי באגי אבטחה... אז יאללה לעבודה... קשה לי להאמין שכל הבלאגן הוא רק כלפי חוץ והקוד הפנימי מסודר להפליא)
ב. עכשיו לשאלה:- אני רוצה לעשות סליקה מאתר שלי עבור הרבה קליינטים, איך מקבלים הרשאות API עבור חשבונות של אחרים?
מה שמצאתי בינתיים זה תכנית ה-partner-ים שלהם שמחייב רשיון מיוחד וצריך לעבור תהליך כדי לקבל. האם אין אפשרות אחרת? - אני רוצה שהלקוח לא יצא מאתר שלי כדי לשלם. גם הייתי מעדיף להשתמש בלחצן שלי ולא המוכנת שלהם. האם אפשר? בלחצן שלהם הנקרא בלשונם checkout מקבלים פופ-אפ של פייפאל לאשר בלי צורך לצאת מהאתר. האם אפשר לעשות את זה בלי להשתמש בלחצן המוכנה שלהם?
- אני רוצה לעשות סליקה מאתר שלי עבור הרבה קליינטים, איך מקבלים הרשאות API עבור חשבונות של אחרים?
-
יש לי מעט ניסיון.
הבלגן הוא בעיקר בחוץ, הוא בעיקר בגלל מספר השנים שעברו, תאימות לאחור הן מבחינה התנהגותית והן מבחינה של רבדים של כל דור והתפתחותו בתיעוד וכולי.
בפנים אין בלגן אבל יש בהחלט המון טלאים.
ככה זה מערכות א. גדולות מבוגרות ב. שכל היתרון שלהם זה הותיקים אצלם שלא רוצים שום שינויים.אתה מכיר את אמזון (החנות)? ואיביי, ואלי אקספרס... אני יוצא מדעתי כמה בעל המאה כ"כ חסר יכולת וחסר כח, ועוד יש חושבים תיאוריות קשר על תוכניות כלל עולמיות... בא נראה ארגון שמצליח להנדס את עצמו כמו שצריך, לאורך זמן, ועם מחוייבות ללקוחות.
לשאלותיך,
- אכן, אין דרך (גם מה שאמרת נראה לי מחייב חשבון אמריקאי).
- בהחלט אפשר בלי הכפתור שלהם, עשיתי את זה בעבר, אני יחפש בל"נ.
-
@dovid אמר בשאלות על אינטגרציה עם פייפל:
אכן, אין דרך (גם מה שאמרת נראה לי מחייב חשבון אמריקאי).
אני שמח לבשר לך (אולי שמחה מוקדמת מדי...) שהרגע מצאתי אפשרות להעניק הרשאות לצד שלישי שהוא לא חלק מתוכנית ה-partner-ים שלהם...
(אוף! כמה זמן הייתי צריך לבזבז על זה... אני עדיין מתקשה לעכל מציאות של חברה כל כך מבולגנת 🤯🤯)עוד לא סיימתי להבין בדיוק איך משתמשים בזה. אבל השלבים שמצאתי בינתיים:
בחשבון נותן השירות:- יצירת api signature, כאן: https://www.paypal.com/businessprofile/mytools/apiaccess/firstparty/signature
- העתק את הAPI username
בחשבון מקבל השירות:
- נתינת הרשאות לצד שלישי כאן: https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_profile-api-grant-authorization
- הזן את ה-username שקיבלת מקודם
- אתה מקבל דף שמשם ניתן לבחור איזה הרשאות להעניק.
בהחלט אפשר בלי הכפתור שלהם, עשיתי את זה בעבר, אני יחפש בל"נ.
אשמח מאוד לקבל הכוונה
-
@yossiz
מצאתי פרוייקט, אני לא מבין בדיוק מה עשיתי, כנראה זה גם מעולם לא נבדק כי הסיום לא נמצא.
אבל מה שאני רואה:- בצד לקוח אני קראתי לשרת שלי שבתורו קרא ל/v2/checkout/orders (עם טוקן, יוצרים אותו פעם ראשונה פה /v1/oauth2/token, והוא חוזר עם זמן תקפות).
- את התשובה העברתי כפי שהיא לצד לקוח (אובייקט JSON),
- בצד לקוח אני עובר על המערך שמכיל המאפיין links ומאתר את הלינק הראשון שהrel שלו הוא approve,
- את הלינק הזה אני מציב בwindow.location של חלון חדש.
- אם הבנתי נכון תוצאות הפעולה מגיעות לשרת שלי, בצד לקוח אני בודק בסגירת החלון מה קרה. בשלב הזה אני מבקש מהשרת שלי לדעת את תוצאות התשלום.
בקש לבשורה אני ספקטי, כי אני ניסיתי הרבה לפני כמה שנים.
אני מחכה שתגיד שזה עובד. אני עשיתי ממשק שלם שעוזר למזכירה לחייב במהירות כרטיסים ע"י מילוי ושליחה אוטומטיים של טפסי e-terminal שזה עוד ג'וק זנוח של פייפל. -
שכחתי לכתוב
החלק האחרון של הפאזל הוא להשתמש בטוקן JWT שמתועד פה:
https://developer.paypal.com/docs/api/reference/api-requests/#paypal-auth-assertionהאמת שכל הטירחה הזו מיותרת כמעט כי הייתי יכול לבקש ישירות מהקליינטים את ה-client-id ו-client secret ושלום על ישראל...
רק שמה שאני עושה יותר בטיחותי ותקני. -
לזכרון דברים ולשם השלמת הנושא אני שם פה רשימת הקישורים ה"סודיים" עבור מתן הרשאות לצד ג' בפייפאל:
- Add: https://www.paypal.com/cgi-bin/webscr?cmd=_profile-api-grant-authorization
- List: https://www.paypal.com/cgi-bin/webscr?cmd=_profile-api-list-auths
- Revoke: https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-remove-authorization
בחשבון עסקי יש דרך להגיע אליהם בממשק. בחשבון פרטי לא מצאתי שום דרך להגיע להם דרך הממשק. רק בהזנה ידנית.