Paypal SDK自适应支付列表中的未知密码:TLSv1


Paypal SDK Adaptive Payments Unknown cipher in list: TLSv1

我正在尝试使用SetPaymentOptions实现自适应支付。我得到以下错误:

SDK异常类型PPConnectionException

消息列表中的未知密码:TLSv1

详细消息连接到时出错https://svcs.paypal.com/AdaptivePayments/SetPaymentOptions

我不知道这意味着什么。你知道怎么做吗?我在PPHttpconfig:中的部分代码中有这个

public static $DEFAULT_CURL_OPTS = array(
    CURLOPT_SSLVERSION => 1,
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_TIMEOUT        => 60,   // maximum number of seconds to allow cURL functions to execute
    CURLOPT_USERAGENT      => 'PayPal-PHP-SDK',
    CURLOPT_HTTPHEADER     => array(),
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSL_VERIFYPEER => 1,
    CURLOPT_SSL_CIPHER_LIST => 'TLSv1',
);

如果您使用的是NSS而不是OpenSSL,则由于TLSv1不在NSS中,因此使用密码列表会导致问题。

如果你有这个错误,你可能想运行

php -r "print_r(curl_version());"

如果输出具有

[ssl_version] => NSS/...

这意味着,你有NSS。然后您可以从阵列中删除CURLOPT_SSL_CIPHER_LIST

public static $DEFAULT_CURL_OPTS = array(
    CURLOPT_SSLVERSION => 1,
    CURLOPT_CONNECTTIMEOUT => 10,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_TIMEOUT        => 60,   // maximum number of seconds to allow cURL functions to execute
    CURLOPT_USERAGENT      => 'PayPal-PHP-SDK',
    CURLOPT_HTTPHEADER     => array(),
    CURLOPT_SSL_VERIFYHOST => 2,
    CURLOPT_SSL_VERIFYPEER => 1,
);

编辑:该版本在以下位置进行了修复:https://github.com/paypal/sdk-core-php/releases/tag/v2.5.8

CURLOPT_SSL_CIPHER_LIST => 'TLSv1',

没有TLSv1密码。TLS 1.0和TLS 1.1使用SSL 3.0密码。TLS 1.2增加了一些新的密码,但仍然支持SSL 3.0密码。如果你想让你的代码对POODLE安全,你只需要关心SSL协议版本,而不是密码。