[英]Express Checkout DPaypal PHP working live but failing in sandbox
[英]Paypal Express Checkout Curl Failing on Live, but working in Sandbox
我很沮喪,因為這是行得通的,但是現在突然之間,它行不通了。
我使用Paypal的Express Checkout,並具有以下代碼:
$post = array(
'USER'=>$username,
'PWD'=>$password,
'SIGNATURE'=>$signature,
'METHOD'=>'SetExpressCheckout',
'VERSION'=>'119',
[... All the other info to be sent to Paypal...]
);
$post = http_build_query($post);
$live_curl = "https://api-3t.paypal.com/nvp";
$sandbox_curl = "https://api-3t.sandbox.paypal.com/nvp";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $live_curl);
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3); // 3 seconds to connect
curl_setopt ($ch, CURLOPT_TIMEOUT, 10); // 10 seconds to complete
$output = curl_exec($ch);
curl_close($ch);
當我使用沙盒網址時,它工作正常,但是在實時服務器上,我收到此錯誤:
cUrl錯誤(#28):0毫秒后操作超時,收到0字節中的0字節
這已經使用了很長時間,最近我什至收到了訂單,但是現在不起作用!
編輯:我的網站有SSL,所以設置curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
就像我們在對此類問題的眾多答案中看到的那樣,這不是一個選擇。 這違反了安全結帳的目的。 此外,我在所有調試中都嘗試過,但是沒有用。
更新:我將CURLOPT_VERBOSE
為TRUE
並得到了這個:
在DNS緩存中找到主機名
DNS緩存中的主機名已過時,已更改
正在嘗試173.0.84.69 ...
已連接到api-3t.paypal.com(173.0.84.69)端口443(#0)
成功設置證書驗證位置:
CAfile:/etc/pki/tls/certs/ca-bundle.crt
CApath:無
0毫秒后操作超時,收到0個字節中的0個
關閉連接0
我與房東聯系並詢問他們最近是否有任何更改可能影響了此情況。 他們說:
我想我知道是什么原因造成的。 我們將MTU設置為1476公司范圍,以解決某些問題。 我將其更改回1500。
好吧,那沒有用。 因此,他將其更改為1400,然后突然生效!
所以對我來說,合理的問題是
為什么要減少MTU使其起作用?
他們的答案:
這是由於新的DDOS保護。 我想將此票升級,並對其進行進一步調查,以便我們縮小范圍,以減少到1476不能為您解決此問題的原因。
因此,升級的支持人員說:
1476應該可以正常工作,我已經嘗試從MTU設置為1476的系統連接到https://api-3t.paypal.com網站,它對我來說也很好。
嗯,是。 實際上,它總是從命令行為我工作。
因此,他將我站點的MTU更改回1476,並感到驚訝! 它工作正常。
那么,到底真正的問題是什么? 我不知道。 據我所知,所有設置都恢復到不工作時的狀態。
我遇到了同樣的問題,把頭撞在桌子上,然后閱讀了這篇文章,所以我聯系了我的托管服務提供商,這就是他們的答案
感謝您與我們的技術支持部門聯系。
我們最近更改了DDoS保護提供程序,並在curl查詢中遇到了此類問題。
您不應該再收到該錯誤。
請驗證。
貝寶網關再次開始工作。 因此,請首先與您的托管服務提供商聯系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.