Z tego co mi wiadomo, Allegro nie pozwala jeszcze na dodawanie kilku aukcji jednocześnie (korzystając np. z Excela i pliku .csv). Dzisiaj pokażę Wam jak w prosty sposób napisać taką funkcjonalność wykorzystując rzeczy z poprzednich postów.
Jak już wspomniałem w tutorialu dotyczącym dodawania aukcji, jest to bardzo przydatna rzecz, zwłaszcza dla osób które sprzedają przedmioty niewiele się od siebie różniące. Dla niektórych może to też być udogodnienie. Definiowanie samych transakcji w Excelu może być łatwiejsze niż przechodzenie za każdym razem tego samego formularza. Taką funkcjonalność posiada także Google AdWords, który pozwala na zarządzanie słowami kluczowymi kampanii. Obecnie jest to mocno rozbudowany moduł z wbudowanym edytorem Excel, ale kilka lat temu dodawanie słów kluczowych wiązało się z uploadem pliku .csv (lub .xls, już nie pamiętam ;]).
No dobrze. Abyśmy mogli korzystać z funkcjonalności którą Google miało kilka lat temu potrzebujemy samego pliku z definicjami aukcji. Tworzymy więc sobie w Excelu arkusz który będzie zawierał pola wymagane do wystawienia aukcji. Wymagane pola wypisane są w poprzednim poście. Tworzymy więc sobie następujące kolumny w Excelu (aukcje.xls – do pobrania na koniec tutoriala):
- Tytuł
- Kategoria
- Data rozpoczęcia
- Czas trwania aukcji
- Liczba sztuk
- Cena wywoławcza
- Kraj
- Województwo
- Miasto
- Transport
- Formy płatności
- Opis
Gdy mamy już stworzony arkusz, możemy go wypełnić danymi naszych aukcji a następnie wyeksportować dane do pliku .csv. Jako separator pola dajemy „|” a separator tekstu to średnik. Wszystko zapisujemy w formacie UTF-8. Po wyeksportowaniu danych plik będzie wyglądał następująco:
Skoro mamy już prawie wszystko gotowe, potrzebujemy teraz obsłużyć dany plik i wygenereować na jego podstawie aukcje. Tworzymy więc w tym celu prosty formularz HTML z formatką pliku i jednym przyciskiem. Jako action wskażemy ten sam plik który będzie zarówno wyświetlał formularz i go obsługiwał. W naszym przypadku będzie to plik aukcje.php który będzie wyglądał następująco:
require_once('AllegroAPI.php');
$oAllegro = new AllegroAPI();
$oAllegro->setProperty('conf_countryid', 228);
$oAllegro->setProperty('conf_login', 'test_login');
$oAllegro->setProperty('conf_password', 'test_haslo');
$oAllegro->setProperty('conf_apikey', 'test_klucz');
$oAllegro->connect();
$oAllegro->login();
if($_FILES){
$oAllegro->uploadAuctions($_FILES['aukcje_plik']['tmp_name']);
}
Oraz fragment kodu HTML odpowiadający za wyświetlenie formularza:
Jak widać wykorzystaliśmy nową metodę z naszej klasy „uploadAuctions()” która zajmuje się przetworzeniem pliku csv i dodawaniem aukcji. Wygląda ona następująco:
public function uploadAuctions($sAuctionsFile){
$aAuctions = file($sAuctionsFile);
if(count($aAuctions)>1){
// pomijamy pierwszy wiersz z nagłówkami
for ($i=1; $iaddNewAuction($this->prepareAuction(explode("|",$aAuctions[$i])));
}
return $i-1;
} else {
return false;
}
}
Wykonuje ona w pętli metodę „prepareAuction()” która przygotowuje tablicę przekazywaną do metody dodającej nową aukcję. Nie będę tutaj umieszczał całości kodu z klasy ponieważ zajęłoby to zbyt dużo miejsca. Wywołując teraz stronę pod którą umieściliśmy plik aukcje.php powinien pojawić się nam formularz z formatką do wybrania pliku CSV. Po podaniu pliku powinny nam się pojawić nowe aukcje zdefiniowane w tym pliku na naszym koncie. Powinniśmy uważać przy typach pól w excelu i podczas eksportu do csv. Data powinna mieć format YYYY-MM-DD H:i:s, ceny typu float z kropką. Przypominam również że zmieniłem celowo dane autoryzacyjne i klucz API. Jeśli kod z jakiegoś powodu nie działa to proszę o taką informację. W tutorialu nie umieszczam pełnego kodu (jest do ściągnięcia poniżej), więc kopiuj-wklej nie zadziała. Piszę to ponieważ były uwagi do wcześniejszych artykułów że kod nie działa. Jeśli jest tak naprawę to proszę o wskazanie problemu.
Jeszcze jedna drobna sprawa. W tutorialach tych skupiam się tylko na pokazaniu możliwości jakie daje nam WebAPI Allegro. Nie ma więc tutaj jako takiej obsługi błędów i tym podobnych. Dziękuję za wyrozumiałość
Całość kodu dostępna jest tutaj: AllegroAPI3.zip
Skrypt można przetestować wchodząc na http://blog.since78.pl/aukcje.php
Dodane aukcje można zaś śledzić na moim fikcyjnym koncie na testowym webapi: http://www.testwebapi.pl/show_user_auctions.php?uid=17390103
UWAGA:
W związku z tym, że Allegro WebAPI ciągle się zmienia a zmiany niestety nie zawsze są kompatybilne wstecz, przykładowy skrypt oraz klasa do obsługi WebAPI mogą nie działać. Tutorial zamieszczony jest w celu przybliżenia tematu wykorzystania WebAPI w aplikacjach pisanych w PHP. Jakiekolwiek zmiany w specyfikacji od daty umieszczenia tego wpisu nie będą więc uwzględniane.
Pozdrawiam












Niestety skrypt nie działa. API Generuje błąd INVALID_VALUE_IN_ATTRIB_FIELD [error_msg] => The attribute is incorrectly specified – fid: 32.