entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Buenas compañeros, tengo el código de ejemplo de ebay api corriendo perfectamente, pero no he podido configurar correctamente los array para que solo me muestre los artículos en venta que tienen envío internacional gratis. cualquier ayuda la agradecería enormemente.

// Create a PHP array of the item filters you want to use in your request

$filterarray =
  array(
    array(
    'name' => 'MaxPrice',
    'value' => '20',
    'paramName' => '',
    'paramValue' => ''),

    array(
    'name' => 'ListingType',
    'value' => array('AuctionWithBIN','FixedPrice','StoreInventory'),
    'paramName' => '',
    'paramValue' => ''),
  );

y este es el código completo

<?php

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

// API request variables
$endpoint = 'http://svcs.ebay.com/services/search/FindingService/v1';  // URL to call
$version = '1.0.0';  // API version supported by your application
$appid = '##################';  // Replace with your own AppID
$globalid = 'EBAY-US';  // Global ID of the eBay site you want to search (e.g., EBAY-DE)
$query = 'airsoft';  // You may want to supply your own query
$safequery = urlencode($query);  // Make the query URL-friendly
$i = '0';  // Initialize the item filter index to 0

// Create a PHP array of the item filters you want to use in your request
$filterarray =
  array(
    array(
    'name' => 'MaxPrice',
    'value' => '20',
    'paramName' => '',
    'paramValue' => ''),

    array(
    'name' => 'ListingType',
    'value' => array('AuctionWithBIN','FixedPrice','StoreInventory'),
    'paramName' => '',
    'paramValue' => ''),
  );

// Generates an indexed URL snippet from the array of item filters
function buildURLArray ($filterarray) {
  global $urlfilter;
  global $i;
  // Iterate through each filter in the array
  foreach($filterarray as $itemfilter) {
    // Iterate through each key in the filter
    foreach ($itemfilter as $key =>$value) {
      if(is_array($value)) {
        foreach($value as $j => $content) { // Index the key for each value
          $urlfilter .= "&itemFilter($i).$key($j)=$content";
        }
      }
      else {
        if($value != "") {
          $urlfilter .= "&itemFilter($i).$key=$value";
        }
      }
    }
    $i++;
  }
  return "$urlfilter";
} // End of buildURLArray function

// Build the indexed item filter URL snippet
buildURLArray($filterarray);

// Construct the findItemsByKeywords HTTP GET call 
$apicall = "$endpoint?";
$apicall .= "OPERATION-NAME=findItemsByKeywords";
$apicall .= "&SERVICE-VERSION=$version";
$apicall .= "&SECURITY-APPNAME=$appid";
$apicall .= "&GLOBAL-ID=$globalid";
$apicall .= "&keywords=$safequery";
$apicall .= "&paginationInput.entriesPerPage=20";
$apicall .= "&paginationInput.pageNumber=3";
$apicall .= "$urlfilter";

// Load the call and capture the document returned by eBay API
$resp = simplexml_load_file($apicall);

// Check to see if the request was successful, else print an error
if ($resp->ack == "Success") {
  $results = '';
  // If the response was loaded, parse it and build links  
  foreach($resp->searchResult->item as $item) {
    $pic   = $item->galleryURL;
    $link  = $item->viewItemURL;
    $title = $item->title;
    $price = $item->sellingStatus->currentPrice;

    // For each SearchResultItem node, build a link and append it to $results
    $results .= "<tr><td>- $price -<br><img src=\"$pic\"></td><td><a href=\"$link\">$title</a></td></tr>";
  }
}
// If the response does not indicate 'Success,' print an error
else {
  $results  = "<h3>Oops! The request was not successful. Make sure you are using a valid ";
  $results .= "AppID for the Production environment.</h3>";
}
?>

<html>
<head>
<title>eBay Search Results for <?php echo $query; ?></title>
<style type="text/css">body{font-family:arial,sans-serif;}</style>
</head>
<body>

<h1>eBay Search Results for <?php echo $query; ?></h1>

<table>
<tr>
  <td>
    <?php echo $results;?>
  </td>
</tr>
</table>

</body>
</html>

1 Respuesta

2votos

white Puntos75880

Hola @Zarkito, según la documentación el item que buscas es "FreeShippingOnly" y es de tipo booleano, puedes agregarlo al array:

ShippingServiceOptionsType
findItemsByKeywords

quedandote asi:

$filterarray =
  array(
    array(
      'name' => 'MaxPrice',
      'value' => '20',
      'paramName' => '',
      'paramValue' => ''
    ),

    array(
      'name' => 'ListingType',
      'value' => array('AuctionWithBIN','FixedPrice','StoreInventory',),
      'paramName' => '',
      'paramValue' => ''
    ),
    array(
      'name' => 'FreeShippingOnly',
      'value' => 'true',
      'paramName' => '',
      'paramValue' => ''
    )
  );

0voto

Zarkito comentado

Gracias por la respuesta, pero ya lo había intentado de esta manera y no funciona .. igual volví a agregarle las lineas que me recomendaste y sigo igual ... te dejo la url de prueba que estoy usando.

http://tag36.com/ebay/prueba.php

Si le das clic en cualquier link, podrás ver que el articulo listado no tiene free shipping internacional.

0voto

white comentado

reemplaza todo el $apicall por:

$apicall = "$endpoint?" .
    "OPERATION-NAME=findItemsAdvanced&" . 
    "SERVICE-VERSION=1.0.0&" .
    "SECURITY-APPNAME=$appid&" .
    "GLOBAL-ID=$globalid&" .
    "RESPONSE-DATA-FORMAT=XML&" .
    "REST-PAYLOAD=true&" .
    "paginationInput.entriesPerPage=20&pageNumber=3&" .
    "keywords=$safequery" .
    "$urlfilter";

me funciono de esa manera agregando "findItemsAdvanced".

demo:

http://runnable.com/VM_LSq57_SwtuF-Y/output
http://paste.ofcode.org/w5p6fDC4wrFDhsqJi3ExCS

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta