1

我在 Codeigniter 中使用 CI Merchant 库,下面是我在 $response 上的 var_dump 之后得到的错误消息

protected '_status' => string 'failed' (length=6)
protected '_message' => string 'SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed' (length=146)

下面是我的代码

        $this->merchant->load('paypal_express');
        $settings = array(
            'username' => 'testaccount',
            'password' => 'accountpassword',
            'signature' => 'storename',
            'test_mode' => true
        );
        $this->merchant->initialize($settings);


        //redirect to success/failure of transaction
        $params = array(
            'amount' => $amount,
            'currency' => $currency,
            'return_url' => site_url('membership/complete/'.$memberid),
            'cancel_url' => site_url('membership/fail')
        ); /**/

        $response = $this->merchant->purchase_return($params);

有什么问题?先感谢您

4

3 回答 3

2

我不会推荐@stormdrain 的解决方案,因为它会降低服务器的安全性。真正的问题是 PHP 在您的 Web 服务器上找不到正确的根 CA 证书。通常,这是与您的网络主机交谈并让他们解决的情况。

或者,您可以升级到替代 CI-Merchant 的Omnipay,并在内部使用与根 CA 证书捆绑在一起的 Guzzle。因此这个问题会消失。

于 2013-10-10T09:56:34.670 回答
0

我猜你已经解决了你的问题,但其他人可能遇到了同样的问题。

确保您已将 ci-mercant 库附带的 cacert.pem 签名放入您的config/目录中。目前在位于此处的 github 上

有相同的响应和完全相同的代码片段。这解决了我的问题。

于 2014-11-21T09:07:26.137 回答
0

有什么问题?证书已过期。证书是自签名的。证书被吊销。只能猜测而不知道您要连接的 URL 是什么。

一个可能的解决方法是修改您正在使用的库以忽略错误:

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
于 2013-10-08T13:15:23.620 回答