【问题标题】:Integrating PayPal IPN with PHP - cURL error: SSL CA cert将 PayPal IPN 与 PHP 集成 - cURL 错误:SSL CA 证书
【发布时间】:2012-12-30 03:54:27
【问题描述】:

我正在将 PayPal 集成到我的网站中。在这个阶段,我正在使用 PayPal 沙盒以及即时付款通知 (IPN) 模拟器。对于听众本身,我使用Micah Carrick's code。通过沙箱发送 IPN 时,收到以下错误:

cURL 错误:[77] SSL CA 证书有问题(路径?访问权限?)

我原本以为问题是我的网站缺少 SSL 证书,所以我购买了一个并安装了它。不幸的是,这并没有解决我的问题。在做了更多研究之后,我的印象是我缺少来自 PayPal 或 cURL 的证书文件。我从 PayPal 下载了其中一个开发包 (pp_php_soap_sdk_1) 并将 api_cert_chain 文件复制到我的 ipn 代码目录中,但没有成功。查看证书时,它似乎已过期,所以也许这就是问题所在。有任何想法吗?

【问题讨论】:

  • 如果它过期了,这很可能是问题所在。试试curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);。这不是长期解决方案。
  • 嗯,它设法摆脱了错误,但我仍然没有收到电子邮件,通知我有效的 IPN 或无效的 IPN。当我在浏览器中输入 ipn 的 URL 时,我在日志中收到 Invalid HTTP request method 错误,因此我知道我的错误日志工作正常。知道为什么我不会收到电子邮件吗?其次,鉴于这不是一个长期解决方案,您知道我在哪里获得了正确的 SSL CA,因此我不必将 curl_setopt 函数调用更改为 false?

标签: php paypal paypal-ipn


【解决方案1】:

感觉自己像个白痴,但问题出在我存储 SSL CA 证书的位置。

【讨论】:

  • 你能详细说明“正确”和“错误”的位置吗?有一个具体的例子会对其他提出问题的人有所帮助,比如@stu。
【解决方案2】:

文件 ipn_listener.php 指向一个名为“api_cert_chain.crt”的文件。你很可能会错过它。下载地址:https://cms.paypal.com/cms_content/US/en_US/files/developer/PP_PHP_SOAP_SDK.zip

下载并解压压缩包。文件“api_cert_chain.crt”位于文件夹:PP_PHP_SOAP_SDK/php-sdk/lib/PayPal/cert。将文件上传到服务器上的目录 /cert/ (可能需要创建文件夹)。

我从这个网站(最后一篇文章)找到了解决方案:Webmaster World

【讨论】:

    【解决方案3】:

    在“ipn_listener.php”文件中有指向api_cert_chain.crt的代码

    dirname(__FILE__)."/api_cert_chain.crt");
    

    您需要确保 .crt 的路径实际上指向 .crt 在您的网络服务器上的位置。

    【讨论】:

      猜你喜欢
      • 2017-12-11
      • 2014-11-26
      • 2012-09-17
      • 2017-07-16
      • 2016-07-10
      • 2018-04-12
      • 2016-06-08
      • 2011-09-01
      • 2016-12-30
      相关资源
      最近更新 更多