2015-11-11 2 views
1

GET/post-order/v2/casemanagement/{caseId} вызов eBay Post Order API, дающий пустую строку. Может ли кто-нибудь выяснить, где мой код идет не так? Правильно ли передаю заголовки? Особенно верно синтаксис авторизации?получить запрос curl на eBay Post Order API, предоставляющий пустую строку (PHP)

<?php 

error_reporting(E_ALL); // Turn on all errors, warnings and notices for easier debugging 

//Seller Authorization Token 
$userAuthToken= 'Authorization:TOKEN abc123'; 

//Endpoint URL to Use 
$url = "https://api.ebay.com/post-order/v2/casemanagement/xyz"; 

//Initializle cURL 
$connection = curl_init(); 

//Set Endpoint URL 
curl_setopt($connection,CURLOPT_URL,$url); 

//Set HTTP Method 
curl_setopt($connection, CURLOPT_HTTPGET, true); 

//Create Array of Required Headers 
$headers = array(); 
$headers[] = $userAuthToken; 
$headers[] = 'Content-Type:application/json'; 
$headers[] = 'X-EBAY-C-MARKETPLACE-ID:EBAY-DE'; 
//var_dump($headers); 
//set the headers using the array of headers 
curl_setopt($connection,CURLOPT_HTTPHEADER,$headers); 

//set it to return the transfer as a string from curl_exec 
curl_setopt($connection,CURLOPT_RETURNTRANSFER,1); 

//stop CURL from verifying the peer's certificate 
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0); 

//Execute the Request 
$response = curl_exec($connection); 

//close the connection 
curl_close($connection); 

var_dump($response); 
+0

вы нашли решение вашей проблемы, у меня есть один и тот же один ?? Regard's –

ответ

0

ADD curl_setopt($connection, CURLOPT_HEADER, 1);

Чтобы вернуть заголовки и посмотреть, что может быть ваша проблема.

Я также не знаю, если это имеет значение, но мой заголовок массива выглядит следующим образом:

$headers = array ( 'Authorization: ' . "TOKEN $token", 'Content-Type: ' . 'application/json', 'X-EBAY-C-MARKETPLACE-ID: ' . 'EBAY-US', 'Accept: ' . 'application/json', );

Таким образом, вы можете видеть, что есть пробел после двоеточия.

1

Попробуйте этот код, он отлично работает для меня.

<?php 
     // Your ID and token 
     $authToken = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; 

     // The data to send to the API 
     $post_data = json_encode(array("legacyOrderId"=>"110181400870-27973775001")); 
     $url = 'https://api.sandbox.ebay.com/post-order/v2/cancellation/check_eligibility'; 
     //Setup cURL 
     $header = array(
         'Accept: application/json', 
         'Authorization: TOKEN '.$authToken, 
         'Content-Type: application/json', 
         'X-EBAY-C-MARKETPLACE-ID: EBAY-UK' 
         ); 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $url); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     $response = curl_exec($ch); 
     if(curl_errno($ch)){ 
      echo "ERROR:".curl_error($ch); 
     } 
     curl_close($ch); 
     echo json_decode($response,true); 
    ?> 

Ответ:

Array 
(
    [legacyOrderId] => 110181400870-27973775001 
    [eligible] => 1 
    [failureReason] => Array 
     (
     ) 

    [itemEligibilityResult] => Array 
     (
      [0] => Array 
       (
        [itemId] => 110181400870 
        [transactionId] => 34573775001 
        [eligible] => 1 
        [failureReason] => Array 
         (
         ) 

       ) 

     ) 

    [eligibleCancelReason] => Array 
     (
      [0] => OUT_OF_STOCK_OR_CANNOT_FULFILL 
      [1] => BUYER_CANCEL_OR_ADDRESS_ISSUE 
     ) 

) 
Смежные вопросы