我在Codeigniter中使用CI商家库,下面是我在var_dump后收到的错误消息$response
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);
可能出了什么问题?提前感谢您
我不推荐@stormdrain的解决方案,因为它会降低服务器的安全性。真正的问题是PHP无法在Web服务器上找到正确的根CA证书。通常,这是与您的网络主机交谈并让他们解决问题的情况。
或者,您可以升级到Omnipay,这是CI-Merchant的替代品,并且在内部使用与根CA证书捆绑在一起的Guzzle。因此,这个问题会消失。
可能出了什么问题?证书已过期。证书是自签名的。证书已被吊销。只能在不知道要连接到的 URL 的情况下猜测。
可能的解决方法是修改您正在使用的库以忽略该错误:
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
我想你已经解决了你的问题,但其他人可能遇到了同样的问题。
确保已将 ci-mercant 库附带的 cacert.pem 签名放入config/
目录中。目前在 github 上位于这里
具有相同的响应和完全相同的代码片段。这解决了我的问题。