<?
define('ALLEGRO_LOGIN', 'MÓJ LOGIN'); define('ALLEGRO_PASSWORD', 'MOJE HASŁO'); define('ALLEGRO_KEY', 'KLUCZ'); define('ALLEGRO_COUNTRY', AllegroWebAPISoapClient
::COUNTRY_PL);
class AllegroWebAPISoapClient 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;
/**
* Czas trwania - 3 dni.
*/
const LIFETIME_3DAYS = 0;
/**
* Czas trwania - 5 dni.
*/
const LIFETIME_5DAYS = 1;
/**
* Czas trwania - 7 dni.
*/
const LIFETIME_7DAYS = 2;
/**
* Czas trwania - 10 dni.
*/
const LIFETIME_10DAYS = 3;
/**
* Czas trwania - 14 dni.
*/
const LIFETIME_14DAYS = 4;
/**
* Koszty pokrywa sprzedający.
*/
const TRANSPORT_COST_SELLER = 0;
/**
* Koszty pokrywa kupujący.
*/
const TRANSPORT_COST_BUYER = 1;
/**
* Przesyłka pocztowa (polecona/paczka).
*/
const TRANSPORT_OPTION_POST = 1;
/**
* Przesyłka pocztowa priorytetowa (polecona/paczka).
*/
const TRANSPORT_OPTION_POSTPRIORITY = 2;
/**
* Przesyłka kurierska.
*/
const TRANSPORT_OPTION_COURIER = 4;
/**
* Odbiór osobisty.
*/
const TRANSPORT_OPTION_PERSONAL = 8;
/**
* Inne.
*/
const TRANSPORT_OPTION_OTHER = 16;
/**
* Zgadzam się na przesłanie przedmiotu za granicę.
*/
const TRANSPORT_OPTION_ABROAD = 32;
/**
* Przedpłata.
*/
const PAYMENT_OPTION_PREPAID = 1;
/**
* Pobranie.
*/
const PAYMENT_OPTION_POSTPAID = 2;
/**
* Płatności Allegro.
*/
const PAYMENT_OPTION_ALLEGRO = 4;
/**
* Bezpieczne Płatności Allegro z Escrow.
*/
const PAYMENT_OPTION_ESCROW = 8;
/**
* Bezpieczne Płatności Allegro z Escrow.
*/
const PAYMENT_OPTION_OTHER = 16;
/**
* Pogrubienie.
*/
const OPTION_BOLD = 1;
/**
* Miniaturka.
*/
const OPTION_THUMB = 2;
/**
* Podświetlenie.
*/
const OPTION_HIGHLIGHT = 4;
/**
* Wyróżnienie.
*/
const OPTION_PREMIUM = 8;
/**
* Strona kategorii.
*/
const OPTION_CATEGORY = 16;
/**
* Strona główna.
*/
const OPTION_HOME = 32;
/**
* Automatycznie tworzy klienta dla interfejsu Allegro WebAPI.
*/
public function __construct()
{
parent::__construct('https://webapi.allegro.pl/uploader.php?wsdl');
}
/**
* Redukuje obraz do wielkości nadającej się do przesyłu.
*
* @param string $url URL obrazka (lokalne, albo sieciowe).
* @return string Binarna zawartość obrazka w formacie JPEG.
*/
public static function resize
($url) {
// właśnie tutaj używamy Base64 ręcznie, ale nigdzie indziej!
{
$temp = imagecreatefromstring($image);
$x = ceil(0
.9
* imagesx
($temp) ); $y = ceil(0
.9
* imagesy
($temp) );
$image = imagecreatetruecolor($x, $y);
imagecopyresized($image, $temp, 0, 0, 0, 0, $x, $y, imagesx($temp), imagesy($temp) );
imagejpeg($image, 'temp.jpg', 75);
}
return $image;
}
}
// pobieramy nasz klucz wersji
// łączymy się z Allegro WebAPI
$client = new AllegroWebAPISoapClient();
try
{
try
{
// próba logowania
$session = $client->doLoginEnc(ALLEGRO_LOGIN
, base64_encode( hash
('sha256', ALLEGRO_PASSWORD
, true) ), ALLEGRO_COUNTRY
, ALLEGRO_KEY
, $allegroVerKey); }
catch(SoapFault $error)
{
// błąd niepoprawnego klucza wersji pozwala nam zauważyć fakt iż coś w serwisie się zmieniło
if($error->faultcode == 'ERR_INVALID_VERSION_CAT_SELL_FIELDS')
{
// pobieramy aktualny klucz wersji
$version = $client->doQuerySysStatus(1, ALLEGRO_COUNTRY, ALLEGRO_KEY);
$allegroVerKey = $version['ver-key'];
/* tutaj wykonujemy swoje operacje uaktualniające */
// zapisujemy klucz wersji do pliku
file_put_contents('.verkey', $allegroVerKey);
// ponowna próba logowania, już z nowym kluczem
$session = $client->doLoginEnc(ALLEGRO_LOGIN
, base64_encode( hash
('sha256', ALLEGRO_PASSWORD
, true) ), ALLEGRO_COUNTRY
, ALLEGRO_KEY
, $allegroVerKey); }
// każdy inny błąd to już poważny problem
else
{
throw $error;
}
}
// udało nam się zalogować
echo 'Logowanie poprawne. Uzyskany klucz sesji to: ', $session['session-handle-part']; }
catch(SoapFault $error)
{
echo 'Błąd ', $error->faultcode, ': ', $error->faultstring, "n"; }
$empty = new stdClass();
$empty->{'fvalue-string'} = "";
$empty->{'fvalue-int'} = 0;
$empty->{'fvalue-float'} = 0;
$empty->{'fvalue-image'} = " ";
$empty->{'fvalue-text'} = " ";
$empty->{'fvalue-datetime'} = 0;
$empty->{'fvalue-boolean'} = false;
// pamiętaj, że maksymalna długość 50 "znaków" liczona jest w bajtach, dlatego polskie znaki, czy encje HTMLa liczone są za kilka bajtów
$field = clone $empty;
$field->{'fid'} = 1;
$field->{'fvalue-string'} = 'Aukcja FooBar';
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 2;
$field->{'fvalue-int'} = 48878;
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 3;
$field->{'fvalue-datetime'} = time(); $form[] = $field;
$field = clone $empty;
$field->{'fid'} = 4;
$field->{'fvalue-int'} = WebAPISOAPClient::LIFETIME_7DAYS;
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 5;
$field->{'fvalue-int'} = 69;
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 8;
$field->{'fvalue-float'} = 666;
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 9;
$field->{'fvalue-int'} = WebAPISOAPClient::COUNTRY_PL;
$form[] = $field;
// 16 to województwo zachodniopomorskie, numer województwa można pobrać z listy opisu pola
$field = clone $empty;
$field->{'fid'} = 10;
$field->{'fvalue-int'} = 16;
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 11;
$field->{'fvalue-string'} = 'Szczecin';
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 12;
$field->{'fvalue-int'} = WebAPISOAPClient::TRANSPORT_COST_BUYER;
$form[] = $field;
// flagi składamy przez ich logiczne sumowanie
$field = clone $empty;
$field->{'fid'} = 13;
$field->{'fvalue-int'} = WebAPISOAPClient::TRANSPORT_OPTION_POST | WebAPISOAPClient::TRANSPORT_OPTION_POSTPRIORITY;
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 14;
$field->{'fvalue-int'} = WebAPISOAPClient::PAYMENT_OPTION_PREPAID | WebAPISOAPClient::PAYMENT_OPTION_ALLEGRO;
$form[] = $field;
$field = clone $empty;
$field->{'fid'} = 15;
$field->{'fvalue-int'} = WebAPISOAPClient::OPTION_BOLD | WebAPISOAPClient::OPTION_THUMB | WebAPISOAPClient::OPTION_HIGHLIGHT;
$form[] = $field;
$i = 0;
// maksymalnie 8 zdjęć!
foreach( array('zdjecie1.jpg', 'zdjecie2.png', '/var/www/zdjecie3.gif', 'http://example.com/zdjecie4.bmp') as $image) {
$field = clone $empty;
$field->{'fid'} = 16 + $i;
$field->{'fvalue-image'} = WebAPISoapClient::resize($image);
$form[] = $field;
$i++;
}
$field = clone $empty;
$field->{'fid'} = 24;
$field->{'fvalue-string'} = '<h1>Opis</h1>
<p>Nasza aukcja - powered by <a href="http://wrzasq.pl/" title="Tworzenie stron i aplikacji internetowych">Wrzasq.pl</a>.</p>
<div><GALERIA></div>.';
$form[] = $field;
$item = $client->doNewAuctionExt($session['session-handle-part'], $form, 0, $local);
$check = $client->doVerifyItem($session['session-handle-part'], $local);
if($item['item-id'] == $check)
{
echo '<p>Wystawiono przedmiot <a href="http://allegro.pl/item' . $item['item-id'] . '.html">' . $item['item-id'] . '</a>.</p>'; }
else
{
echo '<p class="error">Coś poszło nie tak.</p>'; }
?>