שליחת notification לבקשת IPN משרת PAYPAL

שיווקי

New member
שליחת notification לבקשת IPN משרת PAYPAL

לפי ההדרכות מ-paypal, יש לשלוח את המחרוזת שנתקבלה משרת PAYPAL, כדי לקבל VERIFIED או INVALID.
(רק לצורך אימות)
ואז מה ...
אם אני עושה עוד כמה פעולות מעבר - איך אני מודיע ל-PAYPAL שסיימתי כשורה?
איך PAYPAL יודע שלא נפלתי ב-SQL למשל, הפעולה ששלחתי את המחרוזת שנתקבלה משרת PAYPAL ותקינות ה-SCRIPT של ה-PHP מספיקה ל-PAYPAL לסמן כדי שנשלח.

תודה.
 
זה לא מעניין את PayPal

ברגע שאתה מבצע אימות מול השרת שלהם, מבחינתם הם עשו את העבודה שלהם והם יפסיקו לשלוח את אותו IPN.
 

שיווקי

New member
אז יכולים לקרות מקרים שיתפספסו בדיקות תקינות

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

זה מוריד קצת מהאמינות של IPN.

(אם כך, נניח ב-99% מהמקרים זה בסדר, כדי לנטר את המקרים הנוספים, אני יכול להפעיל JOB בדיקה).
 
ממש לא

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

הרעיון הוא לא לתת ל-PayPal לחכות בזמן שאתה מטפל ברשומה, כי יש להם timeout של 30 שניות, שלאחריו הם מסיקים שה-IPN נכשל. במקרה כזה הם ינסו לשלוח אותו שוב ואז אם התוכנה שלך לא יודעת להתמודד עם IPN כפולים, אתה עלול לזכות את הגולש פעמיים.

ועם כל זאת לא עוזר, תמיד אפשר לבקש מ-PayPal לשלוח שוב IPN מסויים באופן ידני מהחשבון שלך.
 

שיווקי

New member
הבנתי זאת...

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

הבנתי מה שאתה מציע, וזה נכון (חיפשתי פשוט משהו יותר פשוט ...)
זה כמו שאני בודק תוכניות במצב ZOMBIE.
אני מסמן לפני השידור ל-PAYPAL (שאמור להיות בדיקת אימות בלבד, לפי הספרות - לא ברור שזוהי הבדיקה היחידה והאחרונה) כך :
1. PAYPAL פונה ל-IPN שלי.
2. אני רושם ב-DB מצב TEMP (עמודה של סטטוס).
3. אני ממשיך בבדיקות מול PAYPAL כרגיל, ומצפה לקבלת VERFIED מ-PAYPAL.
4. לאחר VERIFIED, אני מבצע את הרישום הסופי (מוסיף טרנקציות בבסיס נתונים מעקב שלי, מעדכן יתרה. למשל אני שומר את התנועות הנגדיות, ואם בסך = 0, התנועה כאילו לא שולמה כלל. כמובן, מעדכן את הסטטוס שיהיה לא TEMP).
5. אם סעיף 4 נכשל, מה שאני מתכוון לעשות זה לייצר JOB, שיבדוק את הטרנזקציות מול PAYPAL (אלו שעדיין במצב TEMP) ושולח בקשה לשדר אותם שוב - נניח אחת ליומיים (האמת שאם אני עושה זאת ידנית אחת לשבוע, לא קורה כלום, אך אני צריך לשדר את כל השבוע האחרון מחדש ללא סלקציה וזה סתם עומס מיותר).
אני יכול לעקוב אחרי מספר הנסיונות לשדר שוב (אני רושם גם כך ב-DB כל מיני סטטיסטיקות), ואם זה יותר מדי, אז זה קצת חשוד, ואני צריך לבדוק קוד וכיוב' ...

אבל, למרות ש-PAYPAL זה אסון (לחרוק שניים עד שיוצא משהו ... וזה לא כל כך פשוט לנהל את הכל מסביב, אך אני די קרוב לסגירת מעגל זה), איך עושים את סעיף 5? דוגמה?
(זה JOB ב-APACHE, שאני לא בטוח שאתר אחסון מאפשר JOB-ים בכלל. כמדומני זה ניהול ע"י PLESK. האם PLESK מאפשר זאת?).

תודה.
 

bnayal

New member
ואם מתפוצץ השרת לפני שהתשובה עברה

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