Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Allegro WebApi, SOAP-ERROR: Encoding: object hasn't 'fvalue-date' property
mambus
post
Post #1





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.11.2010

Ostrzeżenie: (0%)
-----


Witam.

Nie ma praktycznie o tym informacji w internecie a dokumentacja opublikowana przez allegro powoduje że nóż się w kieszeni otwiera.

Mam pytanie, dostałem gotowy moduł dla Allegro API który działał dwa lata temu i od tego czasu nie był używany. Dzisiaj, po zaktualizowaniu kategorii, gdy próbuję dodać testową aukcję , pojawia się komunikat:

SOAP-ERROR: Encoding: object hasn't 'fvalue-date' property

Jedyne co zdążyłem odkryć, to że allegro dnia 26-go Maja tego roku, wprowadziło pewne zmiany w api. Dokładnie chodzi o to: http://allegro.pl/webapi/documentation.php/show/id,113

Pytanie jest, jak to ugryźć ?

Ew. czy jest na forum osoba, która kiedykolwiek korzystała z allegroWebapi i moglaby podpowiedzieć coś odnośnie postawienia całego modułu od nowa.. ?

Obecny nie był aktualizowany od dwóch lat a ja zwyczajnie nie rozumiem co mam zmienić, aby powyższy komunikat nie pojawiał się....

Proszę o pomoc.

Ten post edytował mambus 13.06.2011, 15:02:43
Go to the top of the page
+Quote Post
cycofiasz
post
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

Ostrzeżenie: (0%)
-----


2 lata bez modyfikacji webapi allegro to rzecz nierealna wink.gif

Zapodaj kod tego modułu. Za pewne brakuje w nim parametrów w polach formularza sprzedaży.
Go to the top of the page
+Quote Post
mambus
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.11.2010

Ostrzeżenie: (0%)
-----


Witam jeszcze raz. No z tego co wiem nikt od dwóch lat z naszym modułem allegro na naszej stronie nic nie zrobil...

Zapodaję plik , w którym z tego co zdążyłem zrozumieć, są braki...

  1. public function newAuction($param)
  2. {
  3.  
  4. $field = array (
  5. 'fid' => 1, // Tytuł [Aukcja testowa]
  6. 'fvalue-string' => 'Aukcja testowa',
  7. 'fvalue-int' => 0,
  8. 'fvalue-float' => 0,
  9. 'fvalue-image' => 0,
  10. 'fvalue-datetime' => 0,
  11. 'fvalue-date' => '',
  12. 'fvalue-range-int' => array(
  13. 'fvalue-range-int-min' => 0,
  14. 'fvalue-range-int-max' => 0),
  15. 'fvalue-range-float' => array(
  16. 'fvalue-range-float-min' => 0,
  17. 'fvalue-range-float-max' => 0),
  18. 'fvalue-range-date' => array(
  19. 'fvalue-range-date-min' => '',
  20. 'fvalue-range-date-max' => ''));
  21.  
  22. $fields = array ();
  23.  
  24. $param["timeOfAuction"]=self::$TimesOfAuction[$param["timeOfAuction"]];
  25. if (!$param["numOfItems"])
  26. $param["numOfItems"]=1;//jesli nie okreslono liczby przedmiotów to jest 1
  27. if (!$param["startTime"])
  28. $param["startTime"]=time();//aktualny czas jeśli nieokreślono inaczej
  29. if (!$param["deliverPay"] )
  30. {
  31. $param["deliverPay"]=IAuctionOptions::TRANS_COST_BUYER;
  32. }
  33.  
  34. $action = ($param["transportOptions"] && $param["prepaidCost"] && $param["atDeliveryCost"] ) ? "doNewAuctionExt" : "doNewAuction";
  35.  
  36. if (228==$this->countryCode) $param["region"]=1;
  37.  
  38. $action="doNewAuctionExt";
  39.  
  40. unset($fields);
  41.  
  42. $fields=array();
  43.  
  44. $fields[0]=$field; $fields[0]['fid']=1; $fields[0]['fvalue-string'] = $param["name"]; //tytul aukcji
  45. $fields[1]=$field; $fields[1]['fid']=2; $fields[1]['fvalue-int'] = $param["category"]; //kategoria
  46. $fields[2]=$field; $fields[2]['fid']=3; $fields[2]['fvalue-datetime'] = $param["startTime"]; //Data rozpoczecia
  47. $fields[3]=$field; $fields[3]['fid']=4; $fields[3]['fvalue-int'] = $param["timeOfAuction"]; //Czas trwania aukcji 3dni => 0, 5dni => 1, 7dni => 2, 10dni => 3, 14dni => 4
  48. //oblicza czas zakonczenia aukcji
  49. $time_valid=$param["startTime"]+($param["timeOfAuction"]*86400);
  50.  
  51. $fields[4]=$field; $fields[4]['fid']=5; $fields[4]['fvalue-int'] = $param["count"]; //Liczba sztuk 100
  52.  
  53. // Sprawdzamy czy jest to aukcja licytacja czy tylko kup teraz
  54. // Gdy chcemy aby aukcja byla :
  55. // Sama lista kup teraz : 0 , 0 , cena
  56. // Licytacja : 4 ,0 ,0
  57.  
  58. if($param['onlyBuyNow'])
  59. {
  60. $fields[5]=$field; $fields[5]['fid']=6; $fields[5]['fvalue-float'] = "0.00"; // CENA KUP TERAZ/
  61. $fields[6]=$field; $fields[6]['fid']=7; $fields[6]['fvalue-float'] = "0.00"; //Cena wywolawcza - gdy chcemy liste produktow musi byc 0
  62. $fields[7]=$field; $fields[7]['fid']=8; $fields[7]['fvalue-float'] = $param["buyNowPrice"]; //Cena minimalna - gdy chcemy liste produktow musi byc 0
  63. }
  64. else
  65. {
  66. $fields[5]=$field; $fields[5]['fid']=6; $fields[5]['fvalue-float'] = $param["startPrice"] ; // CENA KUP TERAZ/
  67. $fields[6]=$field; $fields[6]['fid']=7; $fields[6]['fvalue-float'] = $param["minPrice"]; //Cena wywolawcza - gdy chcemy liste produktow musi byc 0
  68. $fields[7]=$field; $fields[7]['fid']=8; $fields[7]['fvalue-float'] = $param["buyNowPrice"] ; //Cena minimalna - gdy chcemy liste produktow musi byc 0
  69. }
  70.  
  71. $fields[8]=$field; $fields[8]['fid']=9; $fields[8]['fvalue-int'] = $this->countryCode;
  72. $fields[9]=$field; $fields[9]['fid']=10; $fields[9]['fvalue-int'] = $param["region"];
  73. $fields[10]=$field; $fields[10]['fid']=11; $fields[10]['fvalue-string'] = $param["city"];
  74.  
  75. //Transport seller=0 buyer=1
  76. $fields[11]=$field; $fields[11]['fid']=12; $fields[11]['fvalue-int'] = $param["deliverPay"];
  77.  
  78. // 1: Poczta (zwykła) - 2: Poczta (priorytet) - 4: Kurier - 8: Odbiór osobisty - 16: Inne (np. list zwykły) - 32: Zgoda na wysyłkę za granicę
  79. $fields[12]=$field; $fields[12]['fid']=13; $fields[12]['fvalue-int'] = $param["transportOption"];
  80.  
  81. // 1: Przedpłata na konto , 2: Za pobraniem , 4: Płatności Allegro , 8: Escrow 16: Inne
  82. $fields[13]=$field; $fields[13]['fid']=14; $fields[13]['fvalue-int'] = $param["paymentOption"];
  83.  
  84. // 'opcjeDodatkowe':
  85. // - 1: Pogrubienie 2: Miniaturka (wymaga wysłania co najmniej jednego obrazka) 4: Podświetlenie
  86. // - 8: Wyróżnienie - 16: Strona kategorii - 32: Strona główna Allegro
  87. $fields[14]=$field; $fields[14]['fid']=15; $fields[14]['fvalue-int'] = $param["attributeOption"];
  88. if(strlen($param['img_min'])>10)
  89. {
  90. $fields[15]=$field; $fields[15]['fid']=16; $fields[15]['fvalue-image'] = implode ( "", file ($param['img_min'])); //obsluga miniaturki
  91. }
  92.  
  93. $fields[23]=$field; $fields[23]['fid']=24; $fields[23]['fvalue-string'] = $param["description"];
  94. $fields[24]=$field; $fields[24]['fid']=25; $fields[24]['fvalue-float'] = $param["prepaidCost"];
  95. $fields[25]=$field; $fields[25]['fid']=26; $fields[25]['fvalue-float'] = $param["atDeliveryCost"];
  96.  
  97. $fields[18]=$field; $fields[18]['fid']=27; $fields[18]['fvalue-string'] = $param["additionalOption"];
  98.  
  99. //wysyłanie danych do allegro
  100. $response = $this->execute($action, Array (
  101. 'session-handle' => $this->sessionHandle,
  102. 'fields' => $fields,
  103. 'private' => 0,
  104. 'local-id' => $this->serverTime
  105. ) );


Udało mi się zamienić fragment pliku i jest krok w przód:

mam możliwość wybrania kategorii i że tak to ujmę "pełnego przygotowania" aukcji.

W samym momencie gdy chcę ją już wystawić, pojawia się komunikat: Atrybuty zostały określone w sposób nieprawidłowy.

(powyższy kod poprawiłem).

Ktoś ma może jakiś pomysł ?

Ten post edytował mambus 14.06.2011, 10:43:56
Go to the top of the page
+Quote Post
cycofiasz
post
Post #4





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Komunikat "Atrybuty zostały określone w sposób nieprawidłowy" raczej nie pochodzi od allegro, oni zwracają bardziej precyzyjny komunikat. Do zbadania co jest nie tak potrzebny byłby właśnie ten komunikat od allegro wyrzucony przez wyjątek. Spróbuj go uzyskać, jeśli Ci się nie uda to pokaż nam metodę execute i inne z nią powiązane.
Go to the top of the page
+Quote Post
zulus
post
Post #5





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Zrób w linii 23 tuż przed pierwszym $field=array();
  1. $param = $field+$param;


btw bajzel tam jest


--------------------
Go to the top of the page
+Quote Post
mambus
post
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.11.2010

Ostrzeżenie: (0%)
-----


Znalazłem zdefiniowane stałe, na podstawie których generują się właśnie komunikaty, i dla tego komunikatu z atrybutami , jest stała:

ERR_INVALID_VALUE_IN_ATTRIB_FIELD

Zulus, że jest syf to wiem, niby profesjonalna firma to robiła ale jak widać.

Go to the top of the page
+Quote Post
cycofiasz
post
Post #7





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Można uzyskać jeszcze bardziej precyzyjne dane o błędzie. Można je uzyskać wyłapując wyjątek i wyświetlając faultstring:

  1. catch(SoapFault $error)
  2. {
  3. echo $error->faultstring;
  4. }
Go to the top of the page
+Quote Post
mambus
post
Post #8





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 30.11.2010

Ostrzeżenie: (0%)
-----


Cycofiasz, niestety nie wywala mi żadnego błędu - jest cały czas ten sam błąd - atrybuty zostały określone w sposób nieprawidłowy.

Zulus, także, nic to nie dało - dokładnie jest tak samo.

Wstawiłem Twoją propozycję dokładnie przed
  1. $fields = array();
oraz próbowałem przed całą tablicą
  1. $field = array(.....


Strasznie jest to dziwne, bo nawet nie mogę wypluć żadnego błędu...

Zastanawiam się nad napisaniem całego modułu od nowa, tylko od czego zacząć ?


EDIT:

Allegro poleciło wygenerować plik XML, znalazłem że ma być to __getLastRequest() i __getLastResponse() , po wpisaniu do kodu oczywiście nic mi się nie pojawia - pusta strona. Wrrr, przyda się cierpliwość do allegro...

Ten post edytował mambus 15.06.2011, 14:01:26
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 20:33