我已經在VBScript/Classic ASP中實現了IPN監聽器。 從我這邊來看,它似乎很完美。 當它被調用時,它會將消息發送回Paypal附加cmd=_notify-validate
。然後,它檢查objHttp.status = 200
和objHttp.responseText = "VERIFIED"
的響應,然後將該命令添加到我的數據庫。PayPal IPN處理
然而貝寶給我發電子郵件;
主題:貝寶即時付款通知警告發送到以下網址
即時付款通知是失敗:
我已經在VBScript/Classic ASP中實現了IPN監聽器。 從我這邊來看,它似乎很完美。 當它被調用時,它會將消息發送回Paypal附加cmd=_notify-validate
。然後,它檢查objHttp.status = 200
和objHttp.responseText = "VERIFIED"
的響應,然後將該命令添加到我的數據庫。PayPal IPN處理
然而貝寶給我發電子郵件;
主題:貝寶即時付款通知警告發送到以下網址
即時付款通知是失敗:
每一位聆聽者必須包括處理「錯誤通知」IPN消息的代碼。
無論哪種方式,你應該按照步驟IPN troubleshooting tips一步一步。
這裏有幾個我選擇的應該幫助。
代碼示例貝寶給,在其中不執行此步驟。這一步是否需要?
這聽起來像你缺少步驟2從工作流程文檔
2.來自PayPal接收IPN消息後,監聽器返回一個空的HTTP 200響應於貝。否則,PayPal將重新發送IPN消息。
通過PHP示例來判斷,兩者似乎都首先發送驗證,這與文檔建議的工作流程不符。
在這種情況下,你應該能夠做到
Response.Status = "200 OK"
代碼的休息後,確保沒有其他人在寫回使用Response.Write()
因此服務器響應是空白的,你甚至可以用
Call Response.Clear()
在設置Response.Status
之前,確保沒有其他東西從Response
緩衝區寫入。但是,如果Response.Buffer
事先設置爲True
(通常在腳本的開始處),則此操作纔有效。
我試着添加'Response.Status =「200 OK」'但它仍然不起作用(就PayPal而言) –
如何使用objHttp.Send發送200的狀態,以便我可以發送根據文檔提前回復? –
事情是@AntonyMeadley,發送「回覆」與發送「請求」不同,當您使用「objHttp.Send」向PayPal發送新的「請求」時,PayPal會發送「回覆」 。您在PayPal的IPN歷史記錄中看到了什麼,聽衆是否在那裏返回'200 OK'? – Lankymart
貝寶是否期望您的網頁有特定的回覆,可能您沒有回覆作爲確認回覆已處理? – Lankymart
@Lankymart經過進一步調查,似乎有一些Paypal文檔說需要完成的差異 (在收到PayPal的IPN消息後,您的監聽器向PayPal返回一個空的HTTP 200響應,否則,PayPal會重新發送IPN消息)。 和貝寶給出的代碼示例,其中不執行此步驟。 此步驟是否需要? 如果是這樣,任何人都可以給我一個代碼示例在VBScript /經典ASP顯示如何做到這一點? –
這是你使用的代碼示例嗎? - [paypal/ipn-code-samples](https://github.com/paypal/ipn-code-samples/blob/master/asp/paypal_ipn.asp) – Lankymart