ssl - 如果 CURLOPT_SSL_VERIFYPEER 为真,PayPal DoDirectPayment 将因 SSL 而失败

标签 ssl paypal-sandbox

使用 this code (从 this tutorial 粘贴),我成功执行了 PayPal DoDirectPayment 方法。请注意,CURLOPT_SSL_VERIFYPEER 设置为 FALSE。

然而,当我设置正常值 (CURLOPT_SSL_VERIFYPEER = TRUE) 时,我没有从 PayPal 得到任何响应,甚至没有失败响应,尽管我的代码在具有有效 SSL 证书的服务器上运行(所有页面都使用 HTTPS URL) ).

有人知道是什么导致了这个问题吗?

最佳答案

如果您使用的是有效证书,但问题仍然存在,您可能需要仔细检查您是否以有效格式(X.509 证书 PEM)保存了 CA。我看到您已将您的 CA 导出到一个名为 cacert.pem 的文件 - 确保此文件有效,并且 curl 确实能够检索此文件(有效路径等)

您可以尝试再次导出证书 - 从浏览器(即:firefox),这可以通过在浏览器(即:Firefox)中访问 PayPal https url 并查看证书然后导出来完成。 (确保您使用前面所述的正确格式 - X.509 证书 PEM)。

保存 CA 后,您可以将其传递给已有的 CURLOPT_CAINFO 参数:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CAcerts/BuiltinObjectToken-EquifaxSecureCA.crt");

有关更详细的解释,请访问这篇精彩的文章: http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/

引用关于证书的最后部分:

If you have the CA certificate, but it is not in the PEM format (i.e. it is in a binary or DER format that isn’t Base64-encoded), you’ll need to use something like OpenSSL to convert it to the PEM format.

编辑 - 如果在导出证书后出现错误,您还可以尝试使用 X.509 证书 PEM(带链)保存证书

关于ssl - 如果 CURLOPT_SSL_VERIFYPEER 为真,PayPal DoDirectPayment 将因 SSL 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14822372/

相关文章:

ssl - Varnish 3 : "Expected return action name" when using "synth"

php - Curl 无法验证 Verisign 颁发的通配符 SSL 证书

java - 如何使用 HTTPS 连接 'spring boot application (2.3.4.RELEASE) with elasticsearch 7.9.2'

PayPal DoCapture “you don’ t 有权进行此 API 调用”错误

python - Curl 配置为使用 SSL,但我们无法确定它使用的是哪个 SSL 后端

iis - 尝试在 IIS 7.5 中使用 UUC 多站点证书

c# - Paypal 休息 c# : how to Attach pdf file to invoice?

paypal - 如何在 PayPal 开发人员中取消链接以前链接的沙盒测试帐户

paypal - 在 PayPal 中将交易 ID 添加到返回 URL?

java - 如何使用 transactionId 执行 PaymentDetails 请求?