allegro / allegro-api

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

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

Closed mskiba03 closed 10 months ago

mskiba03 commented 11 months 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 11 months 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 11 months 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 11 months 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 11 months 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 11 months 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 11 months 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 11 months 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 11 months ago

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

mskiba03 commented 11 months 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 11 months ago

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

Lukasz-Zurek commented 11 months 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 11 months 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 11 months 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 11 months 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 11 months 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 11 months 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 11 months 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 11 months ago

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

Lukasz-Zurek commented 11 months 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 10 months 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.