php - PayPal nvp SetExpressCheckout 在本地开发机器上失败

标签 php ssl curl paypal

我最近发现 PayPal nvp 协议(protocol)正在/将会发生变化 - 需要 SHA-256 和 Verisign G5 证书。 看来我的托管服务器环境具备先决条件,因为 PayPal 流程在那里运行良好。

问题出在我的开发机器上。 该机器是 Windows 7,已完全修补,默认情况下应安装 SHA-256。 我已经在机器上安装了“VeriSign Class 3 Public Primary Certification Authority - G5 root certificate”。可能有问题的一件事是,当我使用 certmgr.msc 检查证书存储时,它显示证书,但标题栏显示 [证书 - 当前用户]。我不确定如何检查证书是适用于机器还是仅适用于当前用户,或者这是否重要。

当我在这台机器上运行 curl -V 时,我得到以下信息:

C:\Users\me>c:\soft\curl\curl -V
curl 7.33.0 (x86_64-pc-win32) libcurl/7.33.0 OpenSSL/0.9.8y zlib/1.2.8 libssh2/1.4.3
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate Largefile NTLM SSL SSPI libz

当我使用 PayPal nvp 端点运行以下 curl 测试时,我得到以下信息:

C:\Users\me>c:\soft\curl\curl --insecure https://api-3t.sandbox.paypal.com/nvp  -d  "USER=truncated&PWD=truncated&SIGNATURE=truncated&METHOD=SetExpressCheckout&VERSION=78
&PAYMENTREQUEST_0_PAYMENTACTION=SALE&PAYMENTREQUEST_0_AMT=19&PAYMENTREQUEST_0_CURRENCYCODE=USD&cancelUrl=http://www.example.com/cancel.html&returnUrl=http://www.example.com/success.html"
curl: (35) error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure

PayPal SSL Certificate Upgrade Microsite 指向“警报握手失败”错误消息,但我已尽力确保安装了 SHA-256 和新的根证书。 你能指出下一个方向,让我的开发机器恢复到 PayPal 的工作状态吗? 有什么方法可以确定机器是否满足所有要求?

最佳答案

原来是PHP版本问题。我的本地机器的版本是 5.3.16,当我将它升级到 5.6.17 后,一切又开始工作了。

关于php - PayPal nvp SetExpressCheckout 在本地开发机器上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35003734/

相关文章:

php - 如何将多个查询作为数组运行

ssl - 使用 Docker 向 Lita 机器人添加 SSL 证书

ssl - SIM800L HTTPSSL 出现未知错误

php - SoapClient 不发送证书

php - 如何在php中进行文本格式化

php - 如何使用php将数组键作为表列和值作为列值插入到mysql中?

javax.net.ssl.SSLHandshakeException : Remote host closed connection during handshake during web service communicaiton

php - 使用 PHP curl 如何获取 400 响应的响应主体

php - 使用 php 和 cURL 转发多部分表单数据

php - 异步保存数据php