allegro / allegro-api

Issue tracker and wiki for Allegro REST API
https://developer.allegro.pl/
217 stars 39 forks source link

doAddPackageInfoToPostBuyForm Sandbox -problem z nadaniem nr paczki #664

Closed hYOUstone closed 6 years ago

hYOUstone commented 6 years ago

Wywołuję metodę doAddPackageInfoToPostBuyForm z następującymi parametrami:

Array
(
    [sessionId] => (....)
    [transactionId] => 727895966
    [packageInfo] => Array
        (
            [0] => Array
                (
                    [operatorId] => 4
                    [packageId] => 90005042768
                )
        )
)

... metoda zwraca prawidłowy response:

Array
(
    [doAddPackageInfoToPostBuyForm] => stdClass Object
        (
            [postBuyFormPackageInfo] => stdClass Object
                (
                    [packageIdsAdded] => stdClass Object
                        (
                            [item] => 90005042768
                        )

                    [packageIdsNotAddedIncorrectOperatorId] => stdClass Object
                        (
                        )

                    [packageIdsNotAddedIncorrectPackageId] => stdClass Object
                        (
                        )
                )
        )
)

Jak widać po odpowiedzi nr paczki został nadany. Niestety nie widać go w Panelu Sprzedawcy ani po wywołaniu metody doGetPostBuyFormsDataForSellers a mail nie przychodzi (tak jak po nadaniu ręcznie przez Panel). Co ciekawe... Nadałem przez Panel nr paczki ręcznie ale nie widać również tego numeru po wywołaniu metody doGetPostBuyFormsDataForSellers, który powinien być widoczny pod indeksem o nazwie postBuyFormShipmentTracking

PawelTaberski commented 6 years ago

Przetestowałem i rzeczywiście jest jakiś problem zgłosiłem to do odpowiedniego zespołu, proszę o cierpliwość.

hYOUstone commented 6 years ago

Ok. Czekamy

hYOUstone commented 6 years ago

Witam. Minęło 10 dni. Czy coś się ruszyło w sprawie błędu?

PawelTaberski commented 6 years ago

Pracujemy nad rozwiązaniem problemu, prosiłbym o jeszcze trochę cierpliwości.

MariaPawlikowska commented 6 years ago

I nadal nic? :)

PawelTaberski commented 6 years ago

Wysłałem zapytanie do zespołu pracującego nad rozwiązaniem tego problemu. Jak tylko otrzymam jakąś informację dam znać.

MariaPawlikowska commented 6 years ago

Podepnę się pod temat. Wywołuję metodę w ten sposób: $result = $soapClient->doAddPackageInfoToPostBuyForm($request);

Jednak php nie zwraca poprawnie odpowiedzi i daje taki błąd: Catchable fatal error: Object of class stdClass could not be converted to string in /home/........php on line 98

Co robię źle? :)

PawelTaberski commented 6 years ago

Podeślij przez nasz formularz kontaktowy pełny request i respons w formacie XML sprawdzimy w czym jest problem. W zgłoszeniu zaznacz proszę, że informacje są potrzebne do zgłoszenia numer 664 na GitHub-ie

hYOUstone commented 6 years ago

Podepnę się pod temat. Wywołuję metodę w ten sposób: $result = $soapClient->doAddPackageInfoToPostBuyForm($request);

Jednak php nie zwraca poprawnie odpowiedzi i daje taki błąd: Catchable fatal error: Object of class stdClass could not be converted to string in /home/........php on line 98

Co robię źle? :)

Podepnę się pod temat. Wywołuję metodę w ten sposób: $result = $soapClient->doAddPackageInfoToPostBuyForm($request);

Jednak php nie zwraca poprawnie odpowiedzi i daje taki błąd: Catchable fatal error: Object of class stdClass could not be converted to string in /home/........php on line 98

Co robię źle? :)

Ja to robię w ten sposób: Łączę się za pomocą SoapClient'a:

$this->address = 'https://webapi.allegro.pl.allegrosandbox.pl/service.php?wsdl';
$this->apiKey = 'klucz_do_api';
$this->client = new SoapClient($this->address);
$this->version = (array)$this->client->doQuerySysStatus(array(
   'sysvar' => 1, 
   'countryId' => 1, // PL
   'webapiKey' => $this->apiKey
));

Pobieram sesję:

$this->allegroResponse = $this->client->doLogin(array(
   'userLogin' => $this->allegroLogin, // pobrany z formularza login do konta Allegro
   'userPassword' => $this->allegroHaslo, // pobrane haslo z formularza
   'countryCode' => 1,
   'webapiKey' => $this->apiKey, 
   'localVersion' => $this->version['verKey']
));
$this->sessionId= $this->allegroResponse->sessionHandlePart;

Wywołuję metodę (znając już ID transakcji):

$this->client->doAddPackageInfoToPostBuyForm([
    'sessionId' => $this->sessionId,
    'transactionId' => $transactionId, // id transakcji z Allegro
    'packageInfo' => array($packageInfo),
]);

gdzie:

$packageInfo = [
  'operatorId' => (int)$operatorId, // Kurier wg. kodow z Dokumentacji https://allegro.pl/webapi/documentation.php/show/id,744#method-input
  'packageId' => (string)$packageId, // numer przesylki
];

Należy zwrócić uwagę, że packageInfo jest tablicą w tablicy. W ogóle zwróć uwagę gdzie jakie parametry są wysyłane. Czy są to tablice i jakie mają klucze i wartości. Oraz jaki jest adres do API. Też miałem z tym problem no ale to co tu wysłałem "u mnie działa" :)

PawelTaberski commented 6 years ago

@MariaPawlikowska Prosiłbym o podesłanie requesta w formacie XML, jeśli nie ma responsa to prosiłbym o trace-id zadania.

MariaPawlikowska commented 6 years ago

Z tym, że wydaje mi się, że mój problem jest bardziej syntaxowy i zamiana requesta na xml nie wiele pomoże bo będzie on prawidłowy (jak sądzę). Bardziej martwi mnie odpowiedź mojego serwera po wywołaniu tej metody:

Catchable fatal error: Object of class stdClass could not be converted to string in /home/........php on line 98

linia98 wygląda jak poniżej:

$result = $soapClient->doAddPackageInfoToPostBuyForm($request);

PawelTaberski commented 6 years ago

Nie bardzo wiem, jak masz to ograne pod spodem i nie prowadzimy tutaj wsparcia w tym zakresie. Prowadzimy wsparcie dla języków w jakich dochodzi do ostatecznej komunikacji z naszymi serwerami. Przykładowo nie wiem czemu w requeście wysyłasz informacje: userId i serverTime. Spójrz na rozwiązanie jakie proponuje @hYOUstone może będzie dla Ciebie pomocne. Przetestowałem request na podesłanych przez Ciebie danych (id dostawcy i numer przesyłki) i wszystko działa prawidłowo.

MariaPawlikowska commented 6 years ago

Przykładowo nie wiem czemu w requeście wysyłasz informacje: userId i serverTime.

Taką tablicę dostaję po wywołaniu metody$soapClient->doLoginEnc($request)

PawelTaberski commented 6 years ago

Rozumiem, ale po co w metodzie doAddPackageInfoToPostBuyForm przesyłasz te dane w requeście jest tylko miejsce na sessionId.

MariaPawlikowska commented 6 years ago

Usunę to i dam znać.

MariaPawlikowska commented 6 years ago

W tej chwili mój request wygląda jak niżej:

`Array ( [sessionId] => bbd09425dc5fb2e146862e2dbfbff18be909c6bb155a17//01_1 [transactionId] => 913811536 [packageInfo] => Array ( [0] => Array ( [operatorId] => 6 [packageId] => 00359007734577368479 )

    )

)`

MariaPawlikowska commented 6 years ago

I teraz już działa. Tzn. mam response'a.

:)

Numer przesyłki znalazł się na w systemie po stronie panelu 'zamówienia'

hYOUstone commented 6 years ago

I teraz już działa. Tzn. mam response'a.

:)

Numer przesyłki znalazł się na w systemie po stronie panelu 'zamówienia'

Cieszę się, że udało Ci się dojść co stanowiło problem, ale pogubiłem się... Mam rozumie, że błąd został już poprawiony? Aktualizacja do panelu przez API działa?

MariaPawlikowska commented 6 years ago

Tak. Działa. Nadmiar danych pobieranych z doLoginEnc powodował błąd.

Numer przesyłki przesłany przez API znalazł się w panelu w zakładce 'zamówienia'

Dziękuję za pomoc :)