7

curl を使用して PayPal IPN を確認していますが、エラーがスローされます: SSL certificate problem: unable to get local issuer certificate. 同じコードが開発サーバーで動作しており、クライアント サーバーに移動すると動作しません。

PayPal エクスプレス チェックアウト、コーディング部分の変更、またはサーバーで行う必要がある設定を介して支払いを行うには、ssl 証明書を購入する必要があります。Curl はサーバーで既に有効になっています。どんな助けでも大歓迎です。

以下の私のコード、およびこれに対する縮小されたテストページ:

$req = HAVING PARAMETERS FROM PAYPAL;

$ch = curl_init("https://www.sandbox.paypal.com/cgi-bin/webscr");
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));

curl_exec($ch);
if(curl_errno($ch))
{
    echo 'Curl error: ' . curl_error($ch);
}
4

2 に答える 2

11

SSL接続を検証するようにcURLに指示していますが、何に対して検証するかを指示していません。

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

以下を追加して、信頼する CA の最新のリストを参照してください。

curl_setopt($ch, CURLOPT_CAPATH, "./cacert.pem");

最新の cacert リストを自分で持っていない場合は、cURL メンテナーから提供されているcacert.pemをダウンロードすることをお勧めします。

于 2013-02-25T23:01:17.580 に答える
5

CURLOPT_CAINFOPEMファイルを指す)必要はありません(ファイルCURLOPT_CAPATHを含むディレクトリを指すPEM)。

curl_setopt($ch, CURLOPT_CAINFO, "./cacert.pem");
于 2013-07-19T03:10:11.120 に答える