Kod
<?php
class WebAPISoapClient extends SoapClient
{
/**
* Kraj - Polska.
*/
const COUNTRY_PL = 1;
/**
* Logowanie do serwisu testwebapi.pl.
*/
const COUNTRY_TESTWEBAPI = 228;
/**
* Zapytanie o wersję Allegro WebAPI.
*/
const QUERY_ALLEGROWEBAPI = 1;
/**
* Automatycznie tworzy klienta dla interfejsu Allegro WebAPI.
*/
public function __construct()
{
parent::__construct('http://webapi.allegro.pl/uploader.php?wsdl');
}
}
// nasze dane
$config = array(
'login' => 'TUTAJ LOGIN',
'password' => 'HASŁO',
'apiKey' => 'KLUCZ API'
);
// dla serwisu testowego wybierz WebAPISoapClient::COUNTRY_TESTWEBAPI
$country = WebAPISoapClient::COUNTRY_PL;
try
{
$client = new WebAPISoapClient();
// pobieranie wersji WebAPI
$version = $client->doQuerySysStatus(WebAPISoapClient::QUERY_ALLEGROWEBAPI, $country, $config['apiKey']);
// właściwe logowanie do serwisu
$session = $client->doLogin($config['login'], $config['password'], $country, $config['apiKey'], $version['ver-key']);
}
catch(SoapFault $soapFault)
{
/* obsługa wyjątku */
}
// pobieranie ilości elementów w zakładce
$count = $client->doMyAccountItemsCount($session['session-handle-part'], 'sold', array() );
// tablica to przechowywania pobranych elementów
$auctions = array();
// pierwsza strona na początek
$offset = 0;
// pobieramy aukcje tak długo jak mamy następną stronę
while($count > 0)
{
// pobieramy daną stronę
$auctions = array_merge($auctions, $client->doMyAccount2($session['session-handle-part'], 'sold', $offset, array() ) );
// pobraliśmy 25 elementów
$count -= 25;
// przechodzimy do następnej strony
$offset += 25;
}
// tablica do przechowywania listy ID
$ids = array();
// zapisujemy wszystkie ID aukcji
foreach($auctions as $auction)
{
$ids[] = $auction->{'my-account-array'}[0];
}
// tablica danych o klientach
$customers = array();
// pobieramy dane w porcjach po 25 aukcji
while( count($ids) > 0)
{
// pobieramy aktualną stronę
$customers = array_merge($customers, $client->doGetPostBuyData($session['session-handle-part'], array_slice($ids, 0, 25) ) );
// usuwamy pierwsze 25 elementów z tablicy
$ids = array_slice($ids, 25);
}
// nowa lista
$data = array();
// ogarniamy ten chaos
foreach($customers as $customer)
{
$data[ $customer->{'item-id'} ] = $customer->{'users-post-buy-data'};
}
foreach($data as $id => $customers)
{
// każdy element tablicy aukcji jest kolejną tablicą - klientów, którzy w tej aukcji zakupili towar
foreach($customers as $customer)
{
echo $id, ', ', $customer->{'user-data'}->{'user-id'};
echo ', ', $customer->{'user-data'}->{'user-login'};
echo ', ', $customer->{'user-data'}->{'user-first-name'};
echo ', ', $customer->{'user-data'}->{'user-last-name'}, "\n";
}
}
?>
class WebAPISoapClient extends SoapClient
{
/**
* Kraj - Polska.
*/
const COUNTRY_PL = 1;
/**
* Logowanie do serwisu testwebapi.pl.
*/
const COUNTRY_TESTWEBAPI = 228;
/**
* Zapytanie o wersję Allegro WebAPI.
*/
const QUERY_ALLEGROWEBAPI = 1;
/**
* Automatycznie tworzy klienta dla interfejsu Allegro WebAPI.
*/
public function __construct()
{
parent::__construct('http://webapi.allegro.pl/uploader.php?wsdl');
}
}
// nasze dane
$config = array(
'login' => 'TUTAJ LOGIN',
'password' => 'HASŁO',
'apiKey' => 'KLUCZ API'
);
// dla serwisu testowego wybierz WebAPISoapClient::COUNTRY_TESTWEBAPI
$country = WebAPISoapClient::COUNTRY_PL;
try
{
$client = new WebAPISoapClient();
// pobieranie wersji WebAPI
$version = $client->doQuerySysStatus(WebAPISoapClient::QUERY_ALLEGROWEBAPI, $country, $config['apiKey']);
// właściwe logowanie do serwisu
$session = $client->doLogin($config['login'], $config['password'], $country, $config['apiKey'], $version['ver-key']);
}
catch(SoapFault $soapFault)
{
/* obsługa wyjątku */
}
// pobieranie ilości elementów w zakładce
$count = $client->doMyAccountItemsCount($session['session-handle-part'], 'sold', array() );
// tablica to przechowywania pobranych elementów
$auctions = array();
// pierwsza strona na początek
$offset = 0;
// pobieramy aukcje tak długo jak mamy następną stronę
while($count > 0)
{
// pobieramy daną stronę
$auctions = array_merge($auctions, $client->doMyAccount2($session['session-handle-part'], 'sold', $offset, array() ) );
// pobraliśmy 25 elementów
$count -= 25;
// przechodzimy do następnej strony
$offset += 25;
}
// tablica do przechowywania listy ID
$ids = array();
// zapisujemy wszystkie ID aukcji
foreach($auctions as $auction)
{
$ids[] = $auction->{'my-account-array'}[0];
}
// tablica danych o klientach
$customers = array();
// pobieramy dane w porcjach po 25 aukcji
while( count($ids) > 0)
{
// pobieramy aktualną stronę
$customers = array_merge($customers, $client->doGetPostBuyData($session['session-handle-part'], array_slice($ids, 0, 25) ) );
// usuwamy pierwsze 25 elementów z tablicy
$ids = array_slice($ids, 25);
}
// nowa lista
$data = array();
// ogarniamy ten chaos
foreach($customers as $customer)
{
$data[ $customer->{'item-id'} ] = $customer->{'users-post-buy-data'};
}
foreach($data as $id => $customers)
{
// każdy element tablicy aukcji jest kolejną tablicą - klientów, którzy w tej aukcji zakupili towar
foreach($customers as $customer)
{
echo $id, ', ', $customer->{'user-data'}->{'user-id'};
echo ', ', $customer->{'user-data'}->{'user-login'};
echo ', ', $customer->{'user-data'}->{'user-first-name'};
echo ', ', $customer->{'user-data'}->{'user-last-name'}, "\n";
}
}
?>
Pomoże ktoś jak pobrać aukcje które się sprzedały w ostatnim czasie a nie wszystkie jakie się sprzedały które allegro trzyma w bazie ? utknełem w skrypcie a chciałem napisać skrypt który ułatwi tak naprawdę mi życie dzięki z góry za pomoc