2013-10-07 3 views
0

Использование PHP я смог подключиться и процесс успешных покупок с PAYPAL песочнице конечной точки:Curl PHP виснет только после того, как получить заголовки

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 

Ответ, который я получаю, проходит через рукопожатие, а затем после заголовков просто останавливается. Но он не возвращается к строке comnmand. Вот завиток выход:

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! У любого есть идеи, что здесь происходит, спасибо.

EDIT: Использование 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?

ответ

0

Я не знаком с VB, но я принять к сведению этой

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

Я также использовать сертификат (я вернуться к версии 1.0!), И нет необходимости в файл цепи (CA) с этой настройкой (это не подписанные SSL-сертификаты). Это может быть вашей проблемой.

+0

Разве это не потому, что он подключается к 'https: //' и ему нужен сертификат SSL для подключения? Однако он подключается, просто не приводит страницу вниз? –

+0

Я неправильно понял. Да, похоже, что он соединяется. Вы что-то пробовали? API ожидает ответ POST, поэтому он может быть висел в ожидании этого – Machavity