2015-09-04 79 views
0

我試圖在wordpress應用程序內收到IPN消息(瞭解付款發生的時間)。 Wordpress運行在Linux/Apache(PHP作爲FastCGI)。無法接收PayPal IPN - PayPal總是收到403錯誤

付款後,但我沒有收到服務器上的IPNs。看起來PayPal無法將它們發送到我的服務器,因爲它收到403狀態碼(「無權限」)。該SSL訪問日誌顯示如下:上述

173.0.81.1 - - [04/Sep/2015:08:44:40 +0200] "POST /index.php?sell_media-listener=IPN HTTP/1.0" 403 9402 "-" "PayPal IPN (https://www.paypal.com/ipn)" 
173.0.81.33 - - [04/Sep/2015:08:44:59 +0200] "POST /index.php HTTP/1.1" 403 9533 "-" "-" 

第一行顯示通過貝寶的原始呼叫,這是一個交易之後進行。秒數來自PayPal的IPN模擬器的測試呼叫,這次不是處理IPN的腳本/函數,而是直接到正常的index.php,這對每個人都應該可以訪問。兩次都返回了403。

有人知道爲什麼PayPal收到403而不是200狀態碼?到目前爲止,我聽說可能是我的主機(和許多其他網絡託管公司)在沒有用戶代理字符串和PayPal(根據它們)的情況下阻止請求正在執行此操作。

就我所知,我身邊的IPN監聽器現在還向curl請求中提交了一個用戶代理字符串給PayPal,但仍然沒有可見的變化。

我還添加以下行到我的我的WordPress文件夾的根目錄中的.htaccess文件的開頭:

Allow from .paypal.com 
Allow from api.paypal.com 
Allow from api-3t.paypal.com 
Allow from api-aa.paypal.com 
Allow from api-aa-3t.paypal.com 
Allow from api-s.paypal.com 
Allow from api-m.paypal.com 
Allow from svcs.paypal.com 
Allow from notify.paypal.com 
Allow from reports.paypal.com 
Allow from ipnpb.paypal.com 
Allow from www.paypal.com 
Allow from mobile.paypal.com 
Allow from m.paypal.com 
Allow from www.paypalobjects.com 
Allow from pointofsale.paypal.com 

但是,這也改變了什麼。我的主機不是很有幫助,他只是說「確保發送用戶代理字符串...」。

任何想法?

回答

0

IPN從_PANPAL到您的的_an入站帖子開始,而不是您發給他們的帖子(儘管在收到PayPal的帖子後您會發帖給他們進行驗證)。這是入站文章,您的託管服務提供商正在報告他們阻止。

您無法更改PayPal如何發佈此信息;這是PayPal的代碼,不是你的。

而你自己的網絡服務器配置可能不是什麼阻止帖子;它可能是由託管服務提供商管理的上游系統(或者至少,這就是你正在報告的內容 - 你是否與實際的託管服務提供商進行了驗證,而不是「聽說」有時會發生?)

因此,如果您的託管公司的解釋是阻止PayPal的崗位,你唯一的選擇是:

1)談談你的託管公司,並說服他們改變政策或破例沒有阻止貝寶IPN的職位,或

2)將您的IPN腳本託管在其他地方(託管服務提供商不會阻止PayPal的IPN)