PHP Ebay SDK SSL证书

时间:2017-01-30 09:18:47

标签: php ebay-api

我一直在使用这个ebay-sdk-php,我正在努力使这个工作。我没有使用任何SSL握手。我的代码在XAMPP服务器上运行,主要用于说明目的。代码如下 -

<?php
/**
 * Copyright 2016 Luca Accomazzi and David T. Sadler
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Include the SDK by using the autoloader from Composer.
 */
require __DIR__.'/../vendor/autoload.php';

/**
 * Include the configuration values.
 *
 * Ensure that you have edited the configuration.php file
 * to include your application keys.
 */
$config = require __DIR__.'/../configuration.php';

/**
 * The namespaces provided by the SDK.
 */
use \DTS\eBaySDK\Constants;
use \DTS\eBaySDK\Trading\Services;
use \DTS\eBaySDK\Trading\Types;
use \DTS\eBaySDK\Trading\Enums;

/**
 * Create the service object.
 */

$service = new Services\TradingService([
    'credentials' => $config['production']['credentials'],
    'siteId'      => Constants\SiteIds::US

]);

/**
 * Create the request object.
 */
$request = new Types\GetFeedbackRequestType();

/**
 * An user token is required when using the Trading service.
 *
 * NOTE: eBay will use the token to determine which store to return.
 */
$request->RequesterCredentials = new Types\CustomSecurityHeaderType();
$request->RequesterCredentials->eBayAuthToken = $config['production']['authToken'];

/**
 * By specifying 'Positive' we are telling the API return only positive reviews.
 */
$request->CommentType = ['Positive'];

/**
 * By specifying 'ReturnAll' we are telling the API return the full reviews.
 */
$request->DetailLevel = ['ReturnAll'];

/**
 * Send the request.
 */
$response = $service->getFeedback($request);

/**
 * Output the result of calling the service operation.
 */
if (isset($response->Errors)) {
    foreach ($response->Errors as $error) {
        printf(
            "%s: %s\n%s\n\n",
            $error->SeverityCode === Enums\SeverityCodeType::C_ERROR ? 'Error' : 'Warning',
            $error->ShortMessage,
            $error->LongMessage
        );
    }
}

if ($response->Ack !== 'Failure') {
    foreach ($response->FeedbackDetailArray->FeedbackDetail as $feedback) {
        printf(
            "User %s bought %s on %s. Comment: %s\n",
            $feedback->CommentingUser,
            $feedback->ItemTitle,
            $feedback->CommentTime->format('d-m-Y H:i'),
            $feedback->CommentText
        );
    }
}

我收到了这个错误 -

PHP Fatal error:  Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-erro

rs.html)

2 个答案:

答案 0 :(得分:2)

正确的方法是使用verify配置选项禁用SSL / TLS证书验证。显然不要为生产代码这样做。

$service = new Services\TradingService([
    'credentials' => $config['production']['credentials'],
    'siteId'      => Constants\SiteIds::US,
    'httpOptions' => [
        'verify' => false
     ]    
]);

答案 1 :(得分:0)

要解决此问题,请在此Client.php文件中基本上驻留在此文件夹中 -

  

供应商\ guzzlehttp \狂饮\ SRC

我们需要更改此数组 -

 $defaults = [
        'allow_redirects' => RedirectMiddleware::$defaultSettings,
        'http_errors'     => true,
        'decode_content'  => true,
        'verify'          => true,
        'cookies'         => false
    ];

$defaults = [
        'allow_redirects' => RedirectMiddleware::$defaultSettings,
        'http_errors'     => true,
        'decode_content'  => true,
        'verify'          => false,
        'cookies'         => false
    ];