Skip to content

tomek1024/paczkomaty_inpost

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PaczkomatyInpost

Opis użytkowania:

Utwórz obiekt api:

data_adapter = PaczkomatyInpost::FileAdapter.new(path_to_folder)
@api = PaczkomatyInpost::InpostAPI.new(username,password,data_adapter)

W przypadku problemów z połączeniem się z API Paczkomatów gem zaalarmuje o problemie w postaci wywołania Timeout::Error z wiadomością o braku połączenia.

API obsługuje metody opisane poniżej.

inpost_get_params

Pobiera podstawowe parametry systemu Paczkomaty. Zapisane są one w postaci hashu w @api.params. Parametry to:

  • logo_url - link do logotypu InPost paczkomaty24/7
  • info_url – link do informacji
  • rules_url – link do regulaminu
  • register_url – link do rejestracji
  • last_update – timestamp ostatniej aktualizacji bazy danych
  • current_api_version – wersja gemu

inpost_machines_cache_is_valid?(update_params=true)

Sprawdzenie czy lista lokalnie zapisanych paczkomatów nie jest przedawniona. Do sprawdzenia wykorzystuje parametr @api.params[:last_update]. Jeśli przekazana zostanie wartość true jako parametr przy wywołaniu to metoda uaktualni najpierw parametry z systemu InPost Paczkomaty.

inpost_prices_cache_is_valid?(update_params=true)

Analogicznie jak sprawdzanie listy paczkomatów, metoda ta sprawdza lokalnie zapisane cenniki.

inpost_update_machine_list(update_params=false)

Ściąga kompletną listę Paczkomatów i zapisuje ją we wskazanym data adapterze.

inpost_update_price_list(update_params=false)

Pobiera cennik i zapisuje go w adapterze.

inpost_get_machine_list(options={})

Wyświetlenie paczkomatów w postaci tablicy zawierającej hashe z parametrami paczkomatów.

Przykład paczkomatu:

machine = {
  "name" => "GDY028",
  "street" => "Morska",
  "buildingnumber" => "290",
  "postcode" => "81-002",
  "town" => "Gdynia",
  "latitude" => "54.5505",
  "longitude" => "18.42789",
  "paymentavailable" => true,
  "operatinghours" => "Paczkomat: 24/7",
  "locationdescription" => "Stacja paliw LUKOIL po prawej stronie w kierunku Rumi",
  "paymentpointdescr" => "Płatność kartą wyłącznie w paczkomacie. Dostępność: 24/7",
  "partnerid" => 2,
  "paymenttype" => 2,
  "type" => "Pack Machine"
}

Możliwe opcje do przekazania to :town oraz :paymentavailable. W przypadku wskazania miasta - tylko paczkomaty z danego miasta zostaną wymienione. Paymentavailable określa czy wyświetlane paczkomaty mają obsługiwać pobranie.

Przykład:

@api.inpost_get_machine_list(:town => 'Gdynia', :paymentavailable => true)

inpost_get_pricelist

Metoda zwraca hash zawierający informacje o płatnościach takich jak: minimalny koszt dodatkowy nadania przesyłki za probraniem (on_delivery_payment), maksymalny koszt dodatkowy nadania przesyłki za pobraniem (on_delivery_limit), procentowej wartości pobrania (on_delivery_percentage), ceny przzesyłek o standardowych wielkościach A, B oraz C. Ceny podane są w PLN.

Dodatkowo klucz insurence zawiera hash z informacjami na temat cennika ubezpieczeń dla poszczególnych limitów kwoty ubezpieczenia.

Przykład:

prices = {
  "on_delivery_payment" => "3.50",
  "on_delivery_percentage" => "1.80",
  "on_delivery_limit" => "5000.00",
  "A" => "6.99",
  "B" => "8.99",
  "C" => "11.99",
  "insurance" => {"5000.00" => "1.50", "10000.00" => "2.50", "20000.00" => "3.00"}
}

inpost_get_towns

Tablica zawierająca nazwy miejscowości, w których znajdują się Paczkomaty InPost.

inpost_find_nearest_machines(postcode,paymentavailable=nil)

Zwraca tablice zawierającą 3 najbliższe paczkomaty dla przekazanego kodu pocztowego. Przyjmuje również opcjonalny parametr paymentavailable zawężający wyszukiwanie do paczkomatów obsługujących pobranie.

inpost_find_customer(email)

Sprawdza czy wskazany email znajduje się w bazie użytkowników Paczkomatów InPost. W przypadku odnalezienia zwraca hash z informacjami na temat preferowanych paczkomatów:

{"preferedBoxMachineName" => "KRA010", "alternativeBoxMachineName" => "AND039"}

Jeśli użytkownika nie odnaleziono, zwrócony zostaje błąd:

{"error" => {"OtherException" => "Klient nie istnieje paczkomaty_test@example.com"}}

inpost_prepare_pack(temp_id, adresee_email, phone_num, box_machine_name, pack_type, insurance_amount, on_delivery_amount, options={})

Metoda przygotowuje paczkę do wysyłki (zwraca obiekt klasy InpostPack). Wymagane parametry to:

  • temp_id - tymczasowy identyfikator paczki,
  • adresee_email - adres email odbiorcy,
  • phone_num - numer telefonu odbiorcy,
  • box_machine_name - oznaczenie paczkomatu,
  • pack_type - typ paczki,
  • insurance_amount - kwota ubezpieczenia
  • on_delivery_amount - kwota pobrania

Poza tym dopuszczalne są opcje:

  • customer_ref - dodatkowa informacja do umieszczenia na etykiecie,
  • alternative_box_machine_name - oznaczenie alternatywnego paczkomatu,
  • customer_delivering - wysyłka z paczkomatu nadawczego,
  • sender_address - hash za następującymi parametrami do umieszczenia na etykiecie:
    • name => imię nadawcy,
    • surname => nazwisko nadawcy,
    • email => adres email,
    • phone_num => numer telefonu nadawcy,
    • street => ulica,
    • building_no => numer budynku nadawcy,
    • flat_no => numer lokalu,
    • town => miasto,
    • zip_code => kod pocztowy nadawcy,
    • province => województwo nadawcy

Przykład utworzenia:

sender = {:name => 'Sender', :surname => 'Tester', :email => 'test@testowy.pl', :phone_num => '578937487',
          :street => 'Test Street', :building_no => '12', :flat_no => nil, :town => 'Test City',
          :zip_code => '67-248', :province => 'pomorskie'}
pack = @api.inpost_prepare_pack('pack_1', 'test01@paczkomaty.pl', '501892456', 'KRA010',
          'B', '1.5', '10.99', :customer_ref => 'testowa przesyłka', :sender_address => sender)

inpost_send_packs(packs_data, options = {})

Rejestruje paczki do wysłania w systemie Paczkomaty. Jako packs_data przekazana może być pojedynczy obiekt klasy InpostPack lub ich tablica. Dozwolone opcje:

  • :auto_labels - określa czy utworzone przesyłki mają mieć status ustawiony automatycznie na Prepared czy pozostawione na Created (default true),
  • :self_send - określa czy przesyłka będzie nadawana w oddziale (false) czy bezpośrednio w paczkomacie (true) (default false).

Metoda zwraca hash z przypisanymi packcode dla poszczególnych paczek (identyfikatorami są temp_id). W przypadku błędu przy danej paczce zwracany jest typ oraz opis błędu.

Przykład zwróconej wartości:

{
  "pack_1"=>
  {
    "packcode" => "622222042330624327700110"
  },
  "pack_2"=>
  {
    "error_key" => "IllegalPackType",
    "error_message" => "Illegal or empty pack type."
  }
}

inpost_get_pack_status(packcode)

Zwraca status przesyłki dla wskazanego packcode. Dopuszczalne zwracane wartości:

  • Created - oczekuje na wysyłkę
  • Prepared - gotowa do wysyłki
  • Sent - przesyłka nadana
  • InTransit - w drodze
  • Stored - oczekuje na odbiór
  • Avizo - ponowne avizo
  • Expired - nie odebrana
  • Delivered – dostarczona
  • RetunedToAgency - przekazana do oddziału
  • Cancelled – anulowana
  • Claimed - przyjęto zgłoszenie reklamacyjne
  • ClaimProcessed - rozpatrzono zgłoszenie reklamacyjne

Przykłady zwracanych wartości:

# Prawidłowy packcode
{"status"=>"Prepared"}

# Błędny packcode
{"error" => {"PACK_NO_ERROR" => "Błędny numer paczki"}}

inpost_cancel_pack(packcode)

Metoda umożliwia anulowanie paczki będącej w statusie Created (nieopłacone).

Zwraca true w przypadku anulowania, false w przeciwnym razie oraz błąd w postaci String'a w przypadku błędnych danych.

inpost_change_packsize(packcode, packsize)

Zmienia gabaryty wskazanej paczki. Paczka musi posiadac status Created by operacja powiodła się. Dopuszczalne wartości dla packsize to 'A', 'B' oraz 'C'.

Zwraca true w przypadku zmiany, false w przeciwnym razie oraz błąd w postaci String'a w przypadku błędnych danych.

inpost_pay_for_pack(packcode)

Zmienia status paczki ze statusu Created do Prepared lub CustomerDelivering (dla paczek do samodzielnego nadania) pobierając jednocześnie opłatę za nadanie. Tylko paczki w statusie Prepared lub CustomerDelivering mogą zostać nadane.

Zwraca true w przypadku zmiany, false w przeciwnym razie oraz błąd w postaci String'a w przypadku błędnych danych.

inpost_set_customer_ref(packcode, customer_ref)

Umieszcza dodatkową informację na etykiecie. Sugerowane zastosowanie to wydruk numeru zamówienia z systemu klienta, aby ułatwić naklejenie właściwej etykiety na odpowiednią paczkę.

Zwraca true w przypadku poprawnego wygenerowania etykiety, false w przeciwnym razie oraz błąd w postaci String'a w przypadku błędnych danych.

inpost_get_sticker(packcode, options = {})

Pobiera etykietę do umieszczenia na paczce w formacie PDF. Dopuszczalne opcje to:

  • sticker_path - ścieżka do zapisu pliku PDF, w przypadku braku wykorzystana zostanie scieżka głowna z data adapter'a,
  • label_type - typ etykiety ('' dla standardowego (default), 'A6P' dla etykiety A6 w orientacji poziomej).

Zwraca true w przypadku prawidłowego ściągnięcia i zapisania etykiety (nazwa pliku tworzona przy użyciu wskazanego packcode), false w przeciwnym razie oraz błąd w postaci String'a w przypadku błędnych danych.

inpost_get_stickers(packcodes, options = {})

Podobnie jak poprzedniczka pozwala pobrać etykietę dla paczki, z tą różnicą iż można do niej przekazać większą liczbą packcode'ów w postaci tablicy. Dopuszczalne opcje to również:

  • sticker_path - ścieżka do zapisu pliku PDF, w przypadku braku wykorzystana zostanie scieżka głowna z data adapter'a,
  • label_type - typ etykiety ('' dla standardowego (default), 'A6P' dla etykiety A6 w orientacji poziomej).

Zwraca true w przypadku prawidłowego ściągnięcia i zapisania etykiety (nazwa pliku tworzona przy użyciu przekazanych packcode'ów), false w przeciwnym razie oraz błąd w postaci String'a w przypadku błędnych danych.

inpost_get_confirm_printout(packcodes, options = {})

Pobiera potwierdzenia nadania paczek do wysłania w formacie PDF. Dopuszczalne dodatkowe opcje to:

  • printout_path - ścieżka do zapisu pliku PDF, w przypadku braku wykorzystana zostanie scieżka głowna z data adapter'a,
  • test_printout - gdy true pozwala na wielokrotne drukowanie próbne, w przypadku false (default) wydruk dopuszczalny tylko raz.

Zwraca true w przypadku prawidłowego ściągnięcia i zapisania potwierdzenia (nazwa pliku tworzona przy użyciu przekazanych packcode'ów), false w przeciwnym razie oraz błąd w postaci String'a w przypadku błędnych danych.

inpost_create_customer_partner(options={})

Metoda umożliwia zdalną rejestrację klienta w systemie Paczkomaty 24/7. Wymagane parametry:

  • prefered_box_machine_name - paczkomat domyślny
  • post_code - kod pocztowy
  • email
  • phone_num

Parametry opcjonalne:

  • mobile_number
  • alternative_box_machine_name - paczkomat zapasowy
  • street
  • town
  • building
  • flat
  • first_name
  • last_name
  • company_name
  • regon
  • nip

W przypadku błędu zwrócony zostanie jako wiadomość (String). W przypadku udanego załóżenia konta zwrócony zostanie podany adres mailowy klienta w postaci String'a, a klient otrzyma email z informacją o rejestracji.

inpost_get_cod_report(options={})

Zwraca informacje o zrealizowanych transakcjach pobraniowych (collect on delivery). Dopuszczalne opcje:

  • start_date - data początku wskazanego okresu,
  • end_date - data końcowa wskazanego okresu. Okres nie może przekraczać 60 dni. W przypadku braku parametrów metoda wskaże okres ostatnich 60 dni.

Zwraca false w przypadku problemów z uzyskaniem odpowiedzi. String z błędem w przypadku zwróconego błędu z API Paczkomatów 24/7. Prawidłowo zakończona operacja zwraca hash zawierający kolejne paczki:

{
  :packcode => {
    :amount => kwota_pobrania,
    :posdesc => opis_punktu_pos,
    :packcode => numer_paczki,
    :transactiondate => data_transakcji
  }
}

inpost_get_packs_by_sender(options={})

Metoda pozwala uzyskać informację na temat paczek wygenerowanych w systemie przez określonego nadawcę. Dopuszczalne opcje:

  • status - status paczek (w przypadku braku lub błędnie wprowadzonego statusu zwrócone zostaną paczki dla wszystkich możliwych),
  • start_date - data początkowa,
  • end_date - data końcowa,
  • is_conf_printed - czy potwierdzenie nadania wydrukowane (w przypadku braku domyślnie wskazane na false).

Zwraca hash z odnalezionymi przesyłkami. Kluczami do poszczególnych paczek są packcode'y. W przypadku braku paczek określonych parametrami metoda zwraca pusty Hash. Struktura zwróconej paczki wygląda następująco:

{
  :packcode => {
    :alternativeboxmachinename => paczkomat_alternatywny,
    :amountcharged => kwota_pobrana_z_konta_nadawcy,
    :calculatedchargeamount => cena_paczki,
    :creationdate => data_utworzenia_paczki, 
    :customerdeliveringcode => kod_samodzielnego_nadania,
    :is_conf_printed => czy_potwierdzenie_nadania_wydrukowane,
    :labelcreationtime => data_wydruku_etykiety,
    :labelprinted => czy_etykieta_wydrukowana,
    :ondeliveryamount => kwota_pobrania,
    :packcode => kod_paczki,
    :packsize => gabaryt_paczki,
    :preferedboxmachinename => docelowy_paczkomat,
    :receiveremail => email_odbiorcy,
    :status => status_paczki
  }
}

W przypadku błedu zwraca false lub wiadomość o błedzie w postaci String'a.

TODO:

Dalsze testy w drodze :)

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published