cURL PHP在收到标题后立即挂起

时间:2013-10-07 11:18:18

标签: paypal header nvp

使用PHP我已经能够使用paypal沙箱端点连接并处理成功购买:

https://api-3t.sandbox.paypal.com/nvp

然而,当我试图将这个应用程序移动时,我遇到了一些问题。 首先,沙盒帐户使用签名,而真实帐户使用证书。所以新端点我必须使用它:

https://api.paypal.com/nvp

摆脱" -3t"因为我正在使用证书。

然后我将vb.net中的发布数据发送到此地址,该地址生成一个令牌然后我可以发送出去。这工作正常,但是当用户在paypal(ReturnURL)确认后回到我们的网站时,我使用curl来处理api所需的下一个命令,方法:GetExpressCheckoutDetails。然后,如果成功,我将继续使用curl在另一页上使用方法完成付款:DoExpressCheckoutPayment

问题是卷曲挂起,页面无法加载。

使用linux终端如果我输入尝试使用curl到api它也会挂起。

curl --verbose https://api.paypal.com/nvp

我得到的响应,通过握手然后在标题之后,停止。但它没有回到命令行。 这是curl输出:

User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: api.paypal.com
> Accept: */*
>
* About to connect() to api.paypal.com port 443
*   Trying 173.0.84.66... connected
* Connected to api.paypal.com (173.0.84.66) port 443
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* SSLv2, Client hello (1):
SSLv3, TLS handshake, Server hello (2):
SSLv3, TLS handshake, CERT (11):
SSLv3, TLS handshake, Request CERT (13):
SSLv3, TLS handshake, Server finished (14):
SSLv3, TLS handshake, CERT (11):
SSLv3, TLS handshake, Client key exchange (16):
SSLv3, TLS change cipher, Client hello (1):
SSLv3, TLS handshake, Finished (20):
SSLv3, TLS change cipher, Client hello (1):
SSLv3, TLS handshake, Finished (20):
SSL connection using DES-CBC3-SHA
* Server certificate:
*        subject: /C=US/ST=California/L=San Jose/O=PayPal, Inc./OU=PayPal Production/CN=api.paypal.com
*        start date: 2013-07-03 00:00:00 GMT
*        expire date: 2015-07-04 23:59:59 GMT
*        subjectAltName: api.paypal.com matched
*        issuer: /C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)10/CN=VeriSign Class 3 Secure Server CA - G3
* SSL certificate verify ok.
> GET /nvp HTTP/1.1
> User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
> Host: api.paypal.com
> Accept: */*
>

(这不是因为我没有发送方法,或用户或pwd,因为即使我这样做,它也会这样做) 我怀疑它与API证书有关! 任何人都有任何想法在这里发生了什么,谢谢。

编辑: 使用wget进行测试,以消除卷曲问题的可能性:

wget https://api.paypal.com/nvp

回复是:

--2013-10-08 08:45:53-- https://api.paypal.com/nvp
Resolving api.paypal.com.. 173.0.88.98, 173.0.84.98, 173.0.84.66, ...
Connecting to api.paypal.com|173.0.88.98|:443... connected.
HTTP request send, awaiting response...

这就是wget挂起的地方,这证明它不仅仅是cURL的问题?

1 个答案:

答案 0 :(得分:0)

我不熟悉VB,但我注意到了这个

CAfile: /etc/pki/tls/certs/ca-bundle.crt

我还使用证书(我回到版本1.0!)并且不需要具有此设置的链(CA)文件(这些不是实时签名的SSL证书)。那可能是你的问题。