Open Kuba-Id opened 4 months ago
Dla wskazanej metody dostawy, w polu "credentialsId", musisz wskazać identyfikator wspomnianej umowy własnej. Opisaliśmy to również w naszym poradniku.
W tym konkretnym przypadku nie wskazałeś tych informacji, dlatego zwróciliśmy cytowany błąd.
Dwa pytania:
W jaki sposób można pobrać/podejrzeć identyfikatory umów własnych? https://developer.allegro.pl/documentation/#operation/getDeliveryServices - nie zwraca informacji na temat umów własnych?
https://developer.allegro.pl/documentation/#operation/createNewParcel Jak za pomocą podanej metody przekazać identyfikator umowy własnej? Tak samo, za pomocą parametru: credentialsId ? W którym miejscu ma być przekazany?
@Kuba-Id Na wstępie zaznaczę, że obecnie w naszym API wspieramy dwa podejścia dla tworzenia przesyłek w ramach usługi “Wysyłam z Allegro”:
nowe zasoby /shipment-management, za pomocą których możesz zarządzać swoimi przesyłkami, utworzyć etykietę, pobrać protokół nadania, a także zamówić podjazd kuriera,
dotychczasowe zasoby /parcel-management, które przestaliśmy już wspierać. Od 21.09.2023 są one oznaczone jako Deprecated, natomiast w czwartym kwartale 2024 roku zostaną całkowicie usunięte.
Dlatego sugeruję korzystać z zasobów /shipment-management.
Następnie tworzysz przesyłkę za pomocą POST /shipment-management/shipments/create-commands, gdzie w polu:
Czyli chcąc utworzyć nową przesyłkę za pomocą PUT /parcel-management/parcel-create-commands/{commandId}, usługę dostawy wraz z umową własną przekazujesz w polu „serviceId”, w formacie jak wyżej, czyli np. b20ef9e1-faa2-4f25-9032-adbea23e5cb9#id_umowy_własnej.
Problem. Brak dostępu do podanego zasobu: https://api.allegro.pl/shipment-management/delivery-services
Odpowiedź API: stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [code] => AccessDenied [message] => Access is denied [details] => [path] => [userMessage] => Brak dostępu do danego zasobu. )
)
)
Trace Id: e7894e342fd0e740
Będę wdzięczny za pilną pomoc, gdyż kod jest już na produkcji, a mamy paczki do wysyłki :-| Dziękuję!
@Kuba-Id W Twoim tokenie brakuje uprawnienia (scope'a): [allegro:api:shipments:write]. Musisz ponownie przejść przez proces autoryzacji (od początku). Wtedy będzie ok :)
Dziękuję, posunąłem się dalej :-) Lecz jest problem z nadaniem przesyłki.
( [url] => https://api.allegro.pl/shipment-management/shipments/create-commands [content_type] => application/vnd.allegro.public.v1+json [http_code] => 404 ... )
Przekazywane przy żądaniu POST są następujące nagłówki:
array(4) { [0]=> string(22) "Accept-Language: pl-PL" [1]=> string(1420) "Authorization: bearer ...." [2]=> string(60) "Accept: application/vnd.allegro.public.v1+json;charset=UTF-8" [3]=> string(52) "Content-Type: application/vnd.allegro.public.v1+json" }
Odpowiedź API:
Response:stdClass Object ( [errors] => Array ( [0] => stdClass Object ( [code] => NOT_FOUND [message] => The specified resource was not found [details] => [path] => [userMessage] => Podany zasób nie został odnaleziony ) ) )
Trace-id: b41f554dae5de512
Dlaczego otrzymuję odpowiedź, że podany zasób nie istnieje? hmm...
Literówki w nazwie zasobu nie ma, co jest zatem przyczyną podanej odpowiedzi z API? Będę wdzięczny za pomoc!
@Kuba-Id Z tego co widzę - w nagłówku Content-type
przekazujesz: application/vnd.allegro.public.v1+json, application/x-www-form-urlencoded
, czyli zamiast przecinka (pomiędzy application/vnd.allegro.public.v1+json a application/x-www-form-urlencoded) powinieneś przekazać średnik, wtedy żądanie przejdzie. Generalnie dla tego zasobu wymagamy jednej wartości application/vnd.allegro.public.v1+json
.
Wysłałem tak jak Pan mówi bez nagłówka "www-form-urlencoded"
I inny komunikat:
{"errors":[{"code":"ERROR","message":"The object sent cannot be properly parsed","details":null,"path":"command","userMessage":"Nie można prawidłowo sparsować przesłanego obiektu"}]}
[trace-id] => 3cb05fa0344ded26
EDIT: 'additionalServices' => null, 'additionalProperties' => null,
Zrobiłem jako NULL, zgodnie z wątkiem https://github.com/allegro/allegro-api/issues/7756 I dalej jest problem.
trace-id = 9d33b7bdffa5025e
Co tam jeszcze jest nie tak? hmm...
@Kuba-Id Niestety z logów wynika, że kod się "posypał". Jeżeli potrzebujesz przekazać w content-type
obie wartości, włącznie z application/x-www-form-urlencoded
- przekaż wartości oddzielając je średnikiem.
Panie Łukaszu, a co dokładnie się posypało? Można prosić o szczegóły? Całość zrobione wg. dokumentacji, Wasze parser powinien zwracać precyzyjniejsze informacje :-|
( [commandId] => 5e39d673-bfbe-45eb-b63c-7e4c75fcdc7e [input] => Array ( [deliveryMethodId] => 2488f7b7-5d1c-4d65-b85c-4cbcf253fd93 [credentialsId] => dc0e3746-7bf3-4e44-8c20-68dd0d8fb3c0 [sender] => Array ( [name] => ******** [company] => ******** [street] => ******** [streetNumber] => ******** [postalCode] => 61-007 [city] => Poznań [countryCode] => PL [email] => ******** [phone] => ******** ) [receiver] => Array ( [name] => ******** [street] => ******** [streetNumber] => 3 [postalCode] => 86-005 [city] => ******** [countryCode] => PL [email] => x24est9f2x+74f318071@allegromail.pl [phone] => ******** [point] => MWC01APP ) [referenceNumber] => 131035 [description] => Akcesoria rowerowe [packages] => Array ( [0] => Array ( [type] => PACKAGE [weight] => Array ( [value] => 0.8 [unit] => KILOGRAM ) [length] => Array ( [value] => 58 [unit] => CENTIMETER ) [width] => Array ( [value] => 30 [unit] => CENTIMETER ) [height] => Array ( [value] => 30 [unit] => CENTIMETER ) ) ) [insurance] => Array ( [amount] => 62.98 [currency] => PLN ) [labelFormat] => PDF ) )
Odpowiedź: The object sent cannot be properly parsed
[trace-id] => c7595bc7b17ca0b2
To przykład wszystkich pól, co tutaj mianowicie się "posypało" - bo informacja jest dla mnie bardzo enigmatyczna.
@Kuba-Id Otrzymujemy od Ciebie taki oto request (w załączeniu wycięta część):
commandId=5e39d673-bfbe-45eb-b63c-7e4c75fcdc7e&input%5BdeliveryMethodId%5D=2488f7b7-5d1c-4d65-b85c-4cbcf253fd93&input%5BcredentialsId%5D=dc0e3746-7bf3-4e44-8c20-68dd0d8fb3c0&input%5Bsender%5D%5Bname%5D=
w odpowiedzi na który zwracamy błąd:
{"errors":[{"code":"ERROR","message":"The object sent cannot be properly parsed","details":null,"path":"command","userMessage":"Nie można prawidłowo sparsować przesłanego obiektu"}]}
Wszystko wskazuje na to, że problem leży po Twojej stronie. Jeśli jednak nadal masz wątpliwości, prześlij cały request (ze wszystkimi danymi) w formacie json, korzystając z formularza kontaktowego. Na podstawie powyższych danych nie jestem w stanie dokładnie zweryfikować, które dane zostały przekazane w nieprawidłowy sposób.
W tym wątku nie pojawiła się żadna nowa odpowiedź w ciągu 7 dni, dlatego automatycznie oznaczamy go jako przeterminowany. Jeśli w ciągu kolejnych 7 dni nie pojawi się żadna odpowiedź, wątek zostanie zamknięty. Dziękujemy za zaangażowanie w dyskusję i zachęcamy Cię do wypełnienia ankiety dotyczącej naszego wsparcia na forum.
There was no new reply in this thread within 7 days, therefore, we automatically marked it as expired. If no response is received within the next 7 days, this thread will be closed. Thank you for engaging in the discussion. We encourage you to complete our forum support survey.
Przy próbie generowania listu przewozowego za pomocą API Allegro dla zamówienia: c0587f00-1c19-11ef-b402-fb8526772685
_"message": [ { "code": "CREDENTIALS_ID_NOTPROVIDED", "message": "Seller didnt provide credentials for own delivery Method\nSeller didnt provide credentials for own delivery Method", "details": "Seller didnt provide credentials for own delivery Method", "path": "client credentials", "userMessage": "Wybrana metoda dostawy nie obs\u0142uguje tego zam\u00f3wienia" } ]
Klient wybrał metodę dostawy: 2488f7b7-5d1c-4d65-b85c-4cbcf253fd93
Następująca: _stdClass Object ( [id] => 2488f7b7-5d1c-4d65-b85c-4cbcf253fd93 [name] => Allegro Paczkomaty InPost [paymentPolicy] => IN_ADVANCE [allegroEndorsed] => 1 [shippingRatesConstraints] => stdClass Object ( [allowed] => 1 [maxQuantityPerPackage] => stdClass Object ( [max] => 999999 )
)_
I taka też jest używana w żądaniu do API.
Co oznacza błąd: CREDENTIALS_ID_NOT_PROVIDED Jakie dane nie zostały podane? Umowa własna z InPostem jest dodana w panelu, wraz z danymi autoryzacyjnymi do Api ShipX Inpostu.
trace-id = 802a14b0096ef4
Będę wdzięczny za pomoc!