[1.3.0] Opłacanie przesyłki
Opłacanie przesyłki stworzonej w trybie ofertowym
POST /v1/shipments/:shipment/buy
Parametry
Parametr | Typ | Opis | Walidacja |
---|---|---|---|
offer_id | integer | ID oferty, która dostępna jest dla opłacanej przesyłki. | Atrybut jest wymagany
|
Przykładowe zapytanie
POST /v1/shipments/12345/buy HTTP/1.1 Host: api-shipx-pl.easypack24.net Content-Type: application/json Authorization: Bearer lkfjasd9f70y43ohriw...[ommited for brevity]... { "offer_id": 1456 }
W odpowiedzi serwer zwróci status 200 wraz z obiektem przesyłki:
HTTP/1.1 200 OK Content-Type: application/json { "href": "https://api-shipx-pl.easypack24.net/v1/organizations/1/shipments/1234567890", "id": "1234567890", "parcels": [ { "id": "small package", "template": "small", "dimensions": { "length": "80", "width": "360", "height": "640", "unit": "mm" }, "weight": { "amount": "25", "unit": "kg" }, "tracking_number": null } ], "custom_attributes": { "target_point": "KRA010", "dropoff_point": null, "sending_method": "parcel_locker", "dispatch_order_id": 1 }, "sender": { "id": "123", "name": "Nazwa", "company_name": "InPost S.A.", "first_name": "Jan", "last_name": "Nowak", "email": "sender@email.com", "phone": "888000000", "address": { "id": "123", "street": "Malborska", "building_number": "130", "city": "Kraków", "post_code": "30-624", "country_code": "PL" } }, "receiver": { "id": "123", "name": "Nazwa", "company_name": null, "first_name": null, "last_name": null, "email": "sender@email.com", "phone": "888000000", "address": null }, "created_at": "2015-09-06T19:21:00.000+02:00", "cod_amount": { "amount": 12.50, "currency": "PLN" }, "insurance": { "amount": 25, "currency": "PLN" }, "reference": "Order No. 12345", "is_return": false, "tracking_number": null, "external_customer_id": "8877xxx", "offers": [ { "id": 1456, "carrier": { "id": "inpost_locker", "name": "InPost Paczkomaty", "description": "InPost Paczkomaty - Przesyłki paczkomatowe." }, "service": { "id": "inpost_locker_standard", "name": "Paczkomatowa Standardowa", "description": "Przesyłka paczkomatowa standardowa." }, "status": "selected", "valid_to": null, "rate": 2.02, "currency": "PLN", "unavailability_reasons": null } ], "selected_offer": { "id": 1456, "carrier": { "id": "inpost_locker", "name": "InPost Paczkomaty", "description": "InPost Paczkomaty - Przesyłki paczkomatowe." }, "service": { "id": "inpost_locker_standard", "name": "Paczkomatowa Standardowa", "description": "Przesyłka paczkomatowa standardowa." }, "status": "selected", "valid_to": null, "rate": 2.02, "currency": "PLN", "unavailability_reasons": null }, "transactions": [] }
W momencie wyboru oferty, pozostałe - niewybrane oferty są usuwane.
Uwaga! Działanie asynchroniczne.
Ponieważ zakup przesyłki działa asynchronicznie, serwer w odpowiedzi zwróci informacje o przesyłce nie uwzględniające zmian wywołanych przez zakup (zmiana statusu, nadanie numeru przewozowego), gdyż informacje te będą dostępne dopiero po pewnym czasie.
Aby otrzymać informację o pomyślnym zakupieniu przesyłki, należy zdefiniować w konfiguracji organizacji adres url, pod który mają być wysyłane informacje dla zdarzenia shipment_confirmed
. Dzięki temu, aplikacja ShipX wyśle na podany adres następujące informacje:
POST http://{{adres_podany_w_konfiguracji}} Content-Type: application/json { "event_ts":"2015-12-08 19:42:42 +0100", "event":"shipment_confirmed", "organization_id":1, "payload": { "shipment_id":1234567890, "tracking_number":"681549342531876019900138" } }
Lista błędów, które mogą wystąpić przy opłacaniu przesyłki:
resource_not_found
- może wystąpić gdy określona przesyłka nie istnieje lub użytkownik nie ma do niej dostępu,offer_unavailable
- występuje jeśli podejmowana próba opłacenia oferty w statusie innym niżavailable
alboselected
,transaction_failed
- może wystąpić jeżeli nie uda się opłacić przesyłki,offer_expired
- oferta nie może być zakupiona, ponieważ jej ważność wygasła (oferty ważne są przez 5 minut od ich przygotowania)