allegro / allegro-api

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

Wysyłam z Allegro - problem z nadaniem przesyłki #7756

Closed mskiba03 closed 1 year ago

mskiba03 commented 1 year ago

Witam, mam problem z nadaniem przezywłi przez Wysyłam z allegro.

Request { "commandId": "1f418dc5-7f19-407d-b3a8-ad99e9b23152", "input": { "deliveryMethodId": "08c15d0b-9b24-4b3f-89a8-7a2b502abe55", "credentialsId": "", "sender": { "name": "...", "company": "...", "street": "...", "streetNumber": "...", "postalCode": "41-902", "city": "Bytom", "countryCode": "PL", "email": "...", "phone": "..." }, "receiver": { "name": "...", "company": "", "street": "...", "streetNumber": "...", "postalCode": "05-127", "city": "Białobrzegi", "countryCode": "PL", "email": "...", "phone": "...", "point": "A005978" }, "pickup": { "name": "...", "company": "...", "street": "...", "streetNumber": "...", "postalCode": "41-902", "city": "Bytom", "countryCode": "PL", "email": "...", "phone": "..." }, "referenceNumber": "...", "description": "...", "packages": [ { "type": "PACKAGE", "length": { "value": "64", "unit": "CENTIMETER" }, "width": { "value": "38", "unit": "CENTIMETER" }, "height": { "value": "8", "unit": "CENTIMETER" }, "weight": { "value": "20", "unit": "KILOGRAMS" } } ], "labelFormat": "PDF", "additionalServices": [ "" ], "additionalProperties": [ "" ] } }

Dostaje blad: `( [commandId] => f8d8a826-81ef-44be-9430-ff30a2a565a2 [status] => ERROR [errors] => Array ( [0] => Array ( [code] => PROCESSING_ERROR [message] => Problem with dispatch. Contact us, and we will help as soon as possible. [details] => [path] => [userMessage] => Problem z nadaniem przesyłki. Skontaktuj się z nami. Pomożemy jak najszybciej. )

    )

[shipmentId] => 

)`

Zgodnie z poradnikiem: https://developer.allegro.pl/tutorials/jak-zarzadzac-przesylkami-przez-wysylam-z-allegro-LRVjK7K21sY#jak-utworzyc-nowa-paczke

Troche chyba nie rozumiem tej dokumentacji, pomijajac w niej braki. np. w poradniki w przykladnie nie ma naglowka "Content-type: application/vnd.allegro.public.v1+json". Ale wracajac do pytania co nalezy wprowadzic dla: "sender":{ - dane nadawcy "receiver":{ - dane odbiorcy "pickup":{ - wymagane, dane nadawcy

Dwa razy dane nadwcy?

mskiba03 commented 1 year ago

Czy ktos może mi pomóc, albo napisać dokumentacje, w której nie trzeba się domyślać o co chodzi. Bo błąd skontaktuj się z nami. Pomożemy jak najszybciej, nie bardzo ma sie do rzeczywistości.

Eskim83 commented 1 year ago

sender to dane nadawcy na etykiecie, pickup to dane gdzie ma podjechać kurier.. Mi ta metoda też nie działa. Ciekawi mnie jak sobie poradziłeś z wyciąganiem numeru ulicy z zamówienia Allegro.

Polecam poprzednią metodę, która jest deprecated (/parcel-management/parcel-create-commands/{commandId}) . Nie musimy wypełniać ubezpieczeń i kwot pobrania, ani pobierać dodatkowych danych..

Zamawianie podjazdu robimy inną metodą jak chcemy.

mskiba03 commented 1 year ago

Dzięi Eskim83 za podpowiedź. Co do numeru ulicy z zamówenia, to rodzielam po stacji do tablicy, jako numer biore ostatnia wartosc tablicy, a jako ulice bire cala wartosc i usuwam z niej to co jest numer budynku ;) Nie jest to doskonale, bo jak bedzie adres Ulica 3 m 3 to jako ulica bedzie Ulica 3 m a jako numer 3, ale to tez przechodzi :D

Eskim83 commented 1 year ago

Głupie, ale w sumie zadziała. Niemniej boję się takie rzeczy robić.. może w polu description jeszcze dodatkowo przekażę ulicę. Ten wątek widzę już był 4 dni temu. Brakuje mi metody, która po prostu wygeneruje przesyłkę do zamówienia, ewentualnie pozwoli poprawić dane odbiorcy. Wiesz - to też kwestia skali.. na kilkuset zamówieniach dziennie takie rozwiązanie może generować problemy, bo użytkownicy są nieprzewidywalni.

mskiba03 commented 1 year ago

Generuje tak ok 400-600 zamowien dziennie i jeszcze problemow nie bylo. Generalnie do tej pory tylko przez api inpost, ale metoda ta sama.

Wracajac do temu to może ktos z allegro sie wypowie nt mojego nic nie mowiacego błedu?

Eskim83 commented 1 year ago

Przy takiej skali są błędy już obecnie w starej metodzie, bo klienci wpisują adresy np. tak Łagodna3m3 .. mam takich przypadków dużo. A co do tematu - 4 dni temu był identyczny wątek - tam problemem było np. brak plusa przed numerem telefonu (?). Generalnie brakuje tutaj ewidentnie jakiejkolwiek informacji zwrotnej o rodzaju błędu.

Lukasz-Zurek commented 1 year ago

@mskiba03 W kilku miejscach przekazujesz puste stringi. Usuń je proszę. Jednocześnie konsultuję jeszcze ten problem z zespołem odpowiedzialnym za tę usługę.

Generalnie mamy świadomość, że niektóre komunikat są zbyt ogólne. Cały czas pracujemy nad ich odpowiednim mapowaniem. Współpracujemy z operatorem logistycznym, dlatego może to być wydłużone w czasie.

Dla nas również weryfikacja tego typu zgłoszeń jest dość utrudniona i konieczna jest analiza. Zapewniam, że pracujemy nad tym, aby to zoptymalizować.

Dodam, że poprawiłem nasz poradnik, faktycznie brakowało Content-type. Dziękuję.

Lukasz-Zurek commented 1 year ago

@mskiba03 W polu, w którym obecnie przekazujesz puste stringi "additionalServices":[""] - przekaż null.

mskiba03 commented 1 year ago

Panie Łukaszu, ja wszystko rozumiem, ale delikatnie mówią nalegacie na wasze metody wysyłki, przez serwis wszystko działa, ale po api to same problemy. Najpierw powinniście dopracować dokumentacje i działanie funkcji, a potem "nalegać", żebyśmy z tego korzystali.

Wracając do tematu. Dokonałem jednej zmiany a mianowicie, dane do api były pobierane z aplikacji, a w książce adresowej były inne (tzn. takie same, ale inaczej wpisane). Ujednoliciłem te dane i spróbowałem jeszcze raz, I o dziwo, się udało, a nawet wiecej, jedna z wczoraj utworzonych paczek zmienila status z ERROR na SUCCESS, nie wiem czemu ;)

Teraz próbuje i znowu to samo. Przy tworzeniu paczki nie dostaje błędów, ale jak sprawdzam status to jest error. Pytanie, czemu

POST \ 'https://api.allegro.pl/shipment-management/shipments/create-commands'

zwraca mi sukces a jak sprawdzam

GET \ 'https://api.allegro.pl/shipment-management/shipments/create-commands/{command_id}'

to dostaje ogolny blad, zeby sie z Wami skontaktowac?

Response po utworzeniu paczki:

{ "commandId": "27199d54-9de1-47c2-9d0b-5b571074bf98", "input": { "deliveryMethodId": "08c15d0b-9b24-4b3f-89a8-7a2b502abe55", "credentialsId": "", "sender": { "name": "...", "company": "...", "street": "...", "streetNumber": "...", "postalCode": "41-902", "city": "Bytom", "state": null, "countryCode": "PL", "email": "...", "phone": "...", "point": null }, "receiver": { "name": "...", "company": "", "street": "...", "streetNumber": "...", "postalCode": "05-127", "city": "Bia\u0142obrzegi", "state": null, "countryCode": "PL", "email": "...", "phone": "...", "point": "A005978" }, "pickup": { "name": "...", "company": "...", "street": "...", "streetNumber": "...", "postalCode": "41-902", "city": "Bytom", "state": null, "countryCode": "PL", "email": "...", "phone": "...", "point": null }, "referenceNumber": "...", "description": "...", "packages": [ { "type": "PACKAGE", "length": { "value": 64, "unit": "CENTIMETER" }, "width": { "value": 38, "unit": "CENTIMETER" }, "height": { "value": 19, "unit": "CENTIMETER" }, "weight": { "value": 20, "unit": "KILOGRAMS" } } ], "insurance": null, "cashOnDelivery": null, "labelFormat": "PDF", "additionalServices": [ "" ] } }

No i jeszcze kwestia anulowania przesyłki:

dostaje blad: `Array ( [errors] => Array ( [0] => Array ( [code] => ERROR [message] => The request body could not be parsed correctly [details] => [path] => command [userMessage] => Nie można prawidłowo sparsować przesłanego obiektu )

    )

)`

Jak probuje usunac przesylke przez allegro dostaje "Nie można anulować przesyłki u przewoźnika Allegro"

To mozna czy nie mozna anulowac przesylke?

I jeszcze kwestia pobierania etykiet. po wywołaniu funkcji nie pobiera mi etykiety. zadnych bledow nie ma

Lukasz-Zurek commented 1 year ago

@mskiba03 Sprawdzamy to. Proszę Cię o cierpliwość.

Lukasz-Zurek commented 1 year ago

@mskiba03 Kluczową rzeczą jest tutaj przekazywanie pustych stringów dla "additionalServices":[""] - dla tego przewoźnika nie ma żadnych usług dodatkowych, dlatego należy przekazać null.

Ponadto nie można anulować przesyłki Allegro One.

Electronc commented 1 year ago

@Lukasz-Zurek Dlatego może warto, żebyście zadbali dla własnego przewoźnika o przygotowanie wytycznych dla każdego pola i serializację po waszej stronie danych np. numer telefonu, czy chociażby numer ulicy na której jest paczkomat. Przecież to nie jest normalne, że musimy tutaj was pytać o takie drobne rzeczy.

mskiba03 commented 1 year ago

Dzieki pomoglo.

Mam jeszcze dwa pytania:

  1. Obecnie po nadaniu przesylki, zmienia jej status na wysłane, jest mozliwoc żeby tego nie robilo?
  2. Jak pobrać list przewozowy? wywoluje metode curl -X 'POST' \ 'https://api.allegro.pl/shipment-management/label' \ -H 'accept: application/octet-stream' \ -H 'Content-Type: application/vnd.allegro.public.v1+json' \ -d '{ "shipmentIds": [ "ba88f0fb-acf3-438a-877e-580da50c0874" ], "pageSize": "A4", "cutLine": true }'

nie ma zadnych errorow, ale przegladarka nie pobiera listu.

Podejrzewam ze nie wywolalem poprawnie tego w php

$url = "https://api.allegro.pl/shipment-management/label"; $post['shipmentIds'][] = $shipment_id; $post['pageSize'] = 'A6'; $post['cutLine'] = true;
$post_data = json_encode($post);
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $result = ($result = curl_exec($ch)) === false ? false : json_decode($result, true); curl_close($ch);`

Lukasz-Zurek commented 1 year ago

@Electronc Tak, mamy świadomość tych utrudnień i monitorujemy to. Zależy nam na tym, aby to uściślić z naszym operatorem logistycznym i przede wszystkim, aby dostosować nasze komunikaty, aby były w pełni czytelne.

Lukasz-Zurek commented 1 year ago

@mskiba03

  1. Status realizacji zamówienia możesz zmieniać za pomocą PUT /order/checkout-forms/{id}/fulfillment. W tym konkretnym przypadku mówimy o statusie SENT - oczywiście możesz zrezygnować z nadawania tego typu statusów. Natomiast w ustawieniach zamówień - domyślnie aktywne są automatyczne powiadomienia po zmianie statusu zamówienia na "Wysłane" i tego wyłączyć nie można.
  2. Być może któryś z forumowiczów pomoże w kwestii prawidłowej konfiguracji ów zasobu w PHP. Z mojej strony mogę zweryfikować nasze logi. Poprosiłbym tutaj o shipmentId, lub/i trace-id.
mskiba03 commented 1 year ago

Dziękuje. Pojawił się jeszcze problem przy nadaniu przesyłki:

Allegro Pocztex Kurier 48 6eced786-aee4-47ba-9cb6-e24f8b1d3182

Nie pobiera tej przesyłki z https://api.allegro.pl/shipment-management/delivery-services, przec co nie mozna wybrac typu przesyłki:

Blad: { "errors": [ { "code": "VALIDATION_ERROR", "message": "musi pasowa\u0107 do wyra\u017cenia DOX|PACKAGE|PALLET|OTHER", "details": "Invalid value: ", "path": "input.packages[0].type", "userMessage": "musi pasowa\u0107 do wyra\u017cenia DOX|PACKAGE|PALLET|OTHER" } ] }

Eskim83 commented 1 year ago

Pozwolę sobie dodać jeszcze inne problemy, które dzisiaj wystąpiły:

Problem dotyczy poprzedniej metody, bo nowej się boję jak już wspomniałem.

Dodam jeszcze, że numer referencyjny ma różne wymagania w zależności od dostawcy (np. PP nie akceptuje znaków ukośnika).

To tak jakby ktoś szukał przyczyn, ze mu nie działa, a nie wie czemu.. na szczęście stara metoda zwraca powód.

Lukasz-Zurek commented 1 year ago

@mskiba03 Wskazana metoda już nie istnieje. Została zastąpiona Allegro Kurier Pocztex, zgodnie z newsem.

Lukasz-Zurek commented 1 year ago

@Eskim83 Tych dotychczasowych zasobów na ścieżce /parcel-management nie będziemy już rozwijać. Niemniej jednak zależy nam na korzystaniu z nowych na /shipment-management i aby móc ją optymalizować zarówno pod kątem wymienionych pól, jak i komunikatów błędów - aby one były jednoznaczne.

Jeśli mógłbyś sprecyzować dokładnie co zniechęca się do korzystania z nowych zasobów WZA - będziemy wdzięczni. Uwagi przekażę do odpowiedniego zespołu.

stale[bot] commented 1 year ago

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.