0

我正在尝试通过我的本地机器上的贝宝沙箱进行简单付款。我在 Codeigniter 中使用 Omnipay 库。

我在 developer.paypal.com 上设置了一个沙盒帐户和一个测试应用程序。这是我正在使用的代码:

$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername([username]);
$gateway->setPassword([password]);
$gateway->setSignature([signature]);
$gateway->setTestMode(true);

$params = array(
    'amount' => '1.00',
    'currency' => 'USD',
    'description' => 'test purchase',
    'transactionId' => '123',
    'transactionReference' => '123ref',
    'returnUrl' => [returnUrl],
    'cancelUrl' => [cancelUrl],
);

$response = $gateway->purchase($params);

我收到以下错误:

致命错误:未捕获异常 'Buzz\Exception\ClientException' 并带有消息“SSL 证书问题,请验证 CA 证书是否正常。详细信息:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败'在...

我使用带有 BUZZ 的作曲家安装了omnipay。我对在线进行贝宝交易很陌生,不确定是否需要设置本地 ssl 证书。如果我这样做,有人可以指出我的设置方向吗?

谢谢。

4

2 回答 2

1

这听起来很狡猾。Omnipay 使用Guzzle向 PayPal 发出 HTTPS 请求,Guzzle 会为您捆绑最新的根 SSL 证书。因此,您应该不会看到任何 HTTPS 警告。

这对您在本地有效吗?你试过不同的服务器吗?如果您在共享主机上,您的虚拟主机可能会尝试代理您的请求,这意味着它们实际上是在执行中间人攻击,可能会使您的网站不安全。

编辑:刚刚注意到错误实际上来自 Buzz,而不是 Guzzle。你是怎么安装的?您的 composer.json 文件是什么样的?您正在运行哪个版本的 Omnipay?如果您升级到最新版本的 Omnipay (2.0),它将在内部使用 Guzzle,这应该可以修复 SSL 错误。

于 2013-11-27T09:34:12.913 回答
0

我在omnipay 的问题页面上找到了答案(至少用于测试):https ://github.com/omnipay/omnipay/issues/13

仅用于本地测试:

将这些行添加到文件 /buzz/lib/Buzz/Client/Curl.php 中,就在 curl_exec 方法之前...

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

于 2013-11-26T21:51:44.693 回答