2016-11-29 156 views
1

我已經在VBScript/Classic ASP中實現了IPN監聽器。 從我這邊來看,它似乎很完美。 當它被調用時,它會將消息發送回Paypal附加cmd=_notify-validate。然後,它檢查objHttp.status = 200objHttp.responseText = "VERIFIED"的響應,然後將該命令添加到我的數據庫。PayPal IPN處理

然而貝寶給我發電子郵件;

主題:貝寶即時付款通知警告發送到以下網址

即時付款通知是失敗:

+0

貝寶是否期望您的網頁有特定的回覆,可能您沒有回覆作爲確認回覆已處理? – Lankymart

+0

@Lankymart經過進一步調查,似乎有一些Paypal文檔說需要完成的差異 (在收到PayPal的IPN消息後,您的監聽器向PayPal返回一個空的HTTP 200響應,否則,PayPal會重新發送IPN消息)。 和貝寶給出的代碼示例,其中不執行此步驟。 此步驟是否需要? 如果是這樣,任何人都可以給我一個代碼示例在VBScript /經典ASP顯示如何做到這一點? –

+0

這是你使用的代碼示例嗎? - [paypal/ipn-code-samples](https://github.com/paypal/ipn-code-samples/blob/master/asp/paypal_ipn.asp) – Lankymart

回答

0

根據IPN Testing

每一位聆聽者必須包括處理「錯誤通知」IPN消息的代碼。

無論哪種方式,你應該按照步驟IPN troubleshooting tips一步一步。

這裏有幾個我選擇的應該幫助。

  • 檢查IPN歷史記錄中列出的URL以確保PayPal將每個IPN發佈給您的聽衆。
  • 檢查您的Web服務器的訪問和錯誤日​​志。
  • 檢查您的編程語言的錯誤日誌。
  • 驗證您的IPN偵聽器是否對所有消息作出響應,即使那些您不打算處理的消息。

OPs comments

代碼示例貝寶給,在其中不執行此步驟。這一步是否需要?

這聽起來像你缺少步驟2從工作流程文檔

2.來自PayPal接收IPN消息後,監聽器返回一個空的HTTP 200響應於貝。否則,PayPal將重新發送IPN消息。

通過PHP示例來判斷,兩者似乎都首先發送驗證,這與文檔建議的工作流程不符。

在這種情況下,你應該能夠做到

Response.Status = "200 OK" 

代碼的休息後,確保沒有其他人在寫回使用Response.Write()因此服務器響應是空白的,你甚至可以用

Call Response.Clear() 

在設置Response.Status之前,確保沒有其他東西從Response緩衝區寫入。但是,如果Response.Buffer事先設置爲True(通常在腳本的開始處),則此操作纔有效。

+0

我試着添加'Response.Status =「200 OK」'但它仍然不起作用(就PayPal而言) –

+0

如何使用objHttp.Send發送200的狀態,以便我可以發送根據文檔提前回復? –

+0

事情是@AntonyMeadley,發送「回覆」與發送「請求」不同,當您使用「objHttp.Send」向PayPal發送新的「請求」時,PayPal會發送「回覆」 。您在PayPal的IPN歷史記錄中看到了什麼,聽衆是否在那裏返回'200 OK'? – Lankymart