PayPal:与远程服务器的SSL握手期间出错

时间:2016-08-17 20:26:37

标签: ssl paypal paypal-adaptive-payments

最初讨论了问题: PayPal Sandbox 500 Proxy Error- PayPal Adaptive https://www.paypal-community.com/t5/About-Payments/Adaptive-payment-api-is-sending-Proxy-error/m-p/1091510

似乎问题已退回我正在

<!DOCHTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>500 Proxy Error</title>
    </head><body>
    <h1>Proxy Error</h1>
    The proxy server could not handle the request <em><a href="/AdaptiveAccounts/GetVerifiedStatus">POST&nbsp;/AdaptiveAccounts/GetVerifiedStatus</a></em>.<p>
    Reason: <strong>Error during SSL Handshake with remote server</strong></p><p />
    </body></html>

在我方面没有代码更改的任何请求。有没有人有这个问题?

更具体地说,我创建了一个重现我的问题的卷曲请求:

curl 'https://svcs.sandbox.paypal.com/AdaptiveAccounts/GetVerifiedStatus' -X POST -H 'X-PAYPAL-REQUEST-DATA-FORMAT: NV' -H 'X-PAYPAL-RESPONSE-DATA-FORMAT: NV'  -H 'X-PAYPAL-DEVICE-IPADDRESS: 10.10.44.75' -H 'X-PAYPAL-REQUEST-SOURCE: adaptiveaccounts-php-sdk-3.10.2'  -H 'User-Agent: PayPalSDK/adaptiveaccounts-php-sdk 3.10.2 (lang=PHP;v=7.0.9;bit=64;os=Linux_2.6.32-042stab103.6;machine=x86_64;openssl=1.0.1e-fips;curl=7.19.7)' -H 'X-PAYPAL-APPLICATION-ID: APP-XXXXXXXXXXXX' -H 'X-PAYPAL-SECURITY-USERID: ikhaldeev-facilitator_api1.dev.football.com' -H 'X-PAYPAL-SECURITY-PASSWORD: XXXXXXXXXXXX' -H'X-PAYPAL-SECURITY-SIGNATURE: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -d 'accountIdentifier.emailAddress=paypalbiz%40example.com&matchCriteria=NAME&^CrstName=Test&lastName=Test'  --tlsv1.2

根据这个要求,我热烈回应:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>500 Proxy Error</title>
</head><body>
<h1>Proxy Error</h1>
The proxy server could not handle the request <em><a href="/AdaptiveAccounts/GetVerifiedStatus">POST&nbsp;/AdaptiveAccounts/GetVerifiedStatus</a></em>.<p>
Reason: <strong>Error during SSL Handshake with remote server</strong></p><p />
</body></html>

正如你所看到的,我在curl命令中指定了TLSv1.2而且如果我将从我们的一个不支持TLSv1.2的服务器执行相同的命令(这个服务器不支持paypal),我得到另一个错误

curl 'https://svcs.sandbox.paypal.com/AdaptiveAccounts/GetVerifiedStatus' -X POST -H 'X-PAYPAL-REQUEST-DATA-FORMAT: NV' -H 'X-PAYPAL-RESPONSE-DATA-FORMAT: NV'  -H 'X-PAYPAL-DEVICE-IPADDRESS: 10.10.44.75' -H 'X-PAYPAL-REQUEST-SOURCE: adaptiveaccounts-php-sdk-3.10.2'  -H 'User-Agent: PayPalSDK/adaptiveaccounts-php-sdk 3.10.2 (lang=PHP;v=7.0.9;bit=64;os=Linux_2.6.32-042stab103.6;machine=x86_64;openssl=1.0.1e-fips;curl=7.19.7)' -H 'X-PAYPAL-APPLICATION-ID: APP-XXXXXXXXXXXX' -H 'X-PAYPAL-SECURITY-USERID: ikhaldeev-facilitator_api1.dev.football.com' -H 'X-PAYPAL-SECURITY-PASSWORD: XXXXXXXXXXXX' -H'X-PAYPAL-SECURITY-SIGNATURE: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -d 'accountIdentifier.emailAddress=paypalbiz%40example.com&matchCriteria=NAME&^CrstName=Test&lastName=Test'

响应:

curl: (35) SSL connect error

正如您所看到的,这是另一个错误。当然,我使用正确的凭证,appId等。

1 个答案:

答案 0 :(得分:2)

该错误意味着您的服务器没有通过TLS 1.2协议发送HTTP请求,PayPal在Sandbox中需要该协议,明年将需要Live服务器。

更多details available here。最重要的是,

  

如果您想使用TLS 1.2,您至少需要升级到OpenSSL 1.0.1,然后您才能将CURLOPT_SSLVERSION设置为6(TLS 1.2)。

     

如果您希望在SSL请求期间自动使用TLS 1.2,您还需要升级到PHP 5.5.19+(这是理想的解决方案,但许多项目仍在较旧的PHP版本上)。

假设您正在使用PHP,当然。如果没有,那么您只需要确保让TLS 1.2使用您正在使用的任何软件堆栈。