2014-01-10 57 views
3

我打算在我的網站上使用php實現IPN協議。是IPN paypal協議實際需要的HTTP 200響應嗎?

Paypal documentation請注意,協議變爲如下:

  1. 用戶點擊按鈕。
  2. PayPal發佈我的IPN監聽器IPN消息。
  3. 我的監聽器必須發送一個空的HTTP 200 OK響應。
  4. 我的聽衆必須發送從貝寶取出的消息(與前面的字符串)回PayPal。
  5. 貝寶向我的聽衆發送「VERIFIED」或「INVALID」響應。

誰能解釋一下爲什麼協議要求這個步驟?

爲什麼不能只是用[4]次步驟實現?

另外,我注意到在paypal文檔的another章節中,他們自己跳過這個步驟(參見它們的實現)。所以我想知道,這是否真的有必要?

回答

2

200 OK應答會只要你的IPN腳本成功完成自動發生。這讓貝寶服務器確實完成了。

如果PayPal的IPN服務器獲取超過200 OK從Web服務器返回其他的東西它會假設你的腳本失敗,將地方IPN在闕重新發送。它將在30秒後,然後60秒,然後120秒等重新發送,直到它達到200 OK。

這就是爲什麼有時人們出現重複的IPN的。例如,如果您的腳本的底部有一些東西,那是失敗的,但是您的所有電子郵件通知,數據庫更新等實際上在此之前都有效,您最終會看到這些事情再次發生再次因爲PayPal不斷重新發送IPN。當然,這可能非常混亂,所以你想確保這不會發生。

此外,雖然,響應代碼被從Web服務器自動發送回PayPal。這不是你在你的代碼中必須做的事情。

+0

你確定我不需要手動發送嗎?因爲他們在這裏手動執行:https://developer.paypal.com/docs/classic/ipn/gs_IPN/(前3行代碼) – user1028741

+0

謝謝你的回答 – user1028741

+0

哈,他們在那裏做的很有趣。他們只是這樣做,試圖阻止這麼多失敗的IPN外出。總的來說,如果它失敗了,他們會重新發送它。這將是一個小竅門,讓它始終認爲它的工作,即使它實際上在該行後面失敗。這實際上是一個馬虎的做法。我完全是這樣說出來的。 –