2017-05-03 49 views
-1

我收到以下錯誤,當我在本地創建付款請求時。我正在使用以下API來付款。 https://github.com/Adyen/adyen-php-api-library無法驗證Adyen的SSL證書。 Adyen付款

Fatal error: Uncaught exception 'Adyen\AdyenException' with message 'Could not verify Adyen's SSL certificate. Please make sure that your network is not intercepting certificates. (Try going to https://pal-test.adyen.com/pal/servlet/Payment/v18/authorise in your browser.) If this problem persists, (Network error [errno 60]: SSL certificate problem: unable to get local issuer certificate)' in C:\xampp\htdocs\test\vendor\adyen\php-api-library\src\Adyen\HttpClient\CurlClient.php:210 Stack trace: #0 C:\xampp\htdocs\test\vendor\adyen\php-api-library\src\Adyen\HttpClient\CurlClient.php(74): Adyen\HttpClient\CurlClient->handleCurlError('https://pal-tes...', 60, 'SSL certificate...', Object(Monolog\Logger)) #1 C:\xampp\htdocs\test\vendor\adyen\php-api-library\src\Adyen\Service\AbstractResource.php(42): Adyen\HttpClient\CurlClient->requestJson(Object(Adyen\Service\Payment), 'https://pal-tes...', Array) #2 C:\xampp\htdocs\test\vendor\adyen\php-api-library\src\Adyen\Service\Payment.php(22): Adyen\Service\AbstractResource->request in C:\xampp\htdocs\test\vendor\adyen\php-api-library\src\Adyen\HttpClient\CurlClient.php on line 210 

這裏是我使用創建付款

<?php error_reporting(E_ALL); 
ini_set('display_errors', 1); 
include 'vendor/autoload.php'; 
if(isset($_POST['adyen-encrypted-data'])) 
{ 
    echo 'test'; 
    $client = new \Adyen\Client(); 
    $client->setApplicationName("Adyen PHP Api Library Example"); 
    $client->setUsername("myusername"); 
    $client->setPassword("mypassword"); 
    $client->setEnvironment(\Adyen\Environment::TEST); 

    $service = new Adyen\Service\Payment($client); 

    $json = '{ 
       "amount": { 
       "value": 1499, 
       "currency": "GBP" 
       }, 
       "reference": "payment-test", 
       "merchantAccount": "mymerchantaccount", 
       "additionalData": { 
       "card.encrypted.json": "'.$_POST["adyen-encrypted-data"].'" 
       } 
      }'; 

    $params = json_decode($json, true); 

    $result = $service->authorise($params); 
    var_dump($result); 
} 
?> 
<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <title></title> 
    <link rel="stylesheet" href=""> 
</head> 
<body> 
<script type="text/javascript" src="https://test.adyen.com/hpp/cse/js/8214937568103526.shtml"></script> 
    <form method="POST" action="pay.php" id="adyen-encrypted-form"> 
     <input type="text" size="20" data-encrypted-name="number"/> 
     <input type="text" size="20" data-encrypted-name="holderName"/> 
     <input type="text" size="2" data-encrypted-name="expiryMonth"/> 
     <input type="text" size="4" data-encrypted-name="expiryYear"/> 
     <input type="text" size="4" data-encrypted-name="cvc"/> 
     <input type="hidden" value="<?php echo date('Y-m-d').'T'.date('H:i:s', time()).'000Z'; ?>" data-encrypted-name="generationtime"/> 
     <input type="submit" value="Pay"/> 
    </form> 
    <script> 
    // The form element to encrypt. 
    var form = document.getElementById('adyen-encrypted-form'); 
    // See https://github.com/Adyen/CSE-JS/blob/master/Options.md for details on the options to use. 
    var options = {}; 
    // Bind encryption options to the form. 
    adyen.createEncryptedForm(form, options); 
    </script> 
</body> 
</html> 

任何一個可以請讓我知道代碼是如何解決這個問題,還是我失去了一些東西?我認爲,這是關於在php.ini文件中配置php的東西?

回答

0

我可以通過遵循帖子中的解決方案來修復它。

HTTPS and SSL3_GET_SERVER_CERTIFICATE:certificate verify failed, CA is OK

這是Windows中的一個很常見的問題。您只需將cacert.pem設置爲curl.cainfo即可。

自PHP 5.3.7你可以這樣做:

下載https://curl.haxx.se/ca/cacert.pem並保存在某個地方。 更新php.ini文件 - 添加curl.cainfo = 「PATH_TO/cacert.pem」 否則,你需要做的每一個捲曲資源如下:

curl_setopt($ CH,CURLOPT_CAINFO,「PATH_TO/cacert.pem 「);