update
This commit is contained in:
3
.env
Normal file
3
.env
Normal file
@@ -0,0 +1,3 @@
|
||||
url: https://softra.com.pl:8444/rent2www-ci-tst
|
||||
username: ci938221
|
||||
password: a29ZkiYEvKnjcK2
|
||||
Binary file not shown.
95
docs/rent-api-00-wstep-i-zasady.md
Normal file
95
docs/rent-api-00-wstep-i-zasady.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# Softra Rent API - Transkrypcja: Wst?p i zasady
|
||||
|
||||
> ?r?d?o: "Oferta 37 Softra_Rent_API - zaaczni k Specyfikacja_Rent_RESTAPI_1_15.pdf"
|
||||
|
||||
Specyfikacja serwisu wymiany danych
|
||||
SOFTRA_RENT_API
|
||||
|
||||
Wersja 1.15
|
||||
|
||||
Data utworzenia: 2023-03-20
|
||||
Data ostatniej modyfikacji: 2025-12-10
|
||||
|
||||
Spis treści
|
||||
Przedmiot opracowania ............................................................................................................. 4
|
||||
Technologia ................................................................................................................................ 4
|
||||
Architektura ................................................................................................................................ 4
|
||||
Bezpieczeństwo .......................................................................................................................... 4
|
||||
Opis metod ................................................................................................................................. 5
|
||||
1. Generowanie tokena JWT .............................................................................................. 5
|
||||
2. Pobranie listy oddziałów ................................................................................................ 6
|
||||
3. Pobranie listy dostępnych klas pojazdów ...................................................................... 7
|
||||
4. Pobranie listy dostępnych marek i modeli w danej klasie i oddziale ............................. 7
|
||||
5. Pobranie cen ................................................................................................................... 8
|
||||
6. Utworzenie klienta ....................................................................................................... 11
|
||||
7. Pobranie danych klienta ............................................................................................... 14
|
||||
8. Aktualizacja danych klienta .......................................................................................... 16
|
||||
9. Utworzenie rezerwacji.................................................................................................. 16
|
||||
10. Dodanie klienta do istniejącej rezerwacji................................................................... 20
|
||||
11. Potwierdzenie rezerwacji ........................................................................................... 20
|
||||
12. Anulowanie rezerwacji ............................................................................................... 21
|
||||
13. Pobieranie listy faktur dla rezerwacji ......................................................................... 21
|
||||
14. Pobieranie listy faktur związanych z klientem ........................................................... 22
|
||||
15. Pobieranie dokumentu faktury .................................................................................. 22
|
||||
16. Sprawdzenie poświadczeń klienta ............................................................................. 23
|
||||
17. Tworzenie tokena do zmiany hasła konta klienta ...................................................... 23
|
||||
18. Zmiana hasła konta klienta......................................................................................... 24
|
||||
19. Podsumowanie opłat przed złożeniem rezerwacji..................................................... 25
|
||||
20. Pobieranie listy wynajmów i rezerwacji klienta ......................................................... 27
|
||||
21. Pobieranie definicji oświadczeń/zgód marketingowych ............................................ 28
|
||||
22. Sprawdzenie czy istnieje konto dla podanego loginu ................................................ 28
|
||||
23. Dodawanie wpłat i kaucji do rezerwacji ..................................................................... 29
|
||||
24. Pobieranie listy opłat dodatkowych dla podanej rezerwacji / wynajmu ................... 30
|
||||
25. Pobieranie listy wpłat dla podanej rezerwacji / wynajmu ......................................... 30
|
||||
26. Dodawanie płatnika .................................................................................................... 31
|
||||
27. Wysłanie tokenu potwierdzający email dla podanego loginu klienta ....................... 32
|
||||
28. Potwierdzenie adresu email klienta ........................................................................... 33
|
||||
29. Pobieranie wszystkich symboli klas ............................................................................ 33
|
||||
30. Pobieranie wszystkich modeli pojazdów.................................................................... 34
|
||||
31. Pobieranie listy opłat zadeklarowanych w systemie ................................................. 34
|
||||
32. Przykład uzgodnień wdrożeniowych .......................................................................... 35
|
||||
|
||||
Przedmiot opracowania
|
||||
Specyfikacja określa API do systemu Flota Rent o nazwie „Softra_Rent_API”.
|
||||
Interface udostępniać będzie szereg funkcji służących do realizacji współpracy stron
|
||||
internetowych wypożyczalni samochodów z bazą danych systemu zarządzania wypożyczalnią
|
||||
„Flota Rent” produkcji firmy Softra Systemy Informatyczne.
|
||||
|
||||
Uwaga : Niemniejsze opracowanie stanowi utwór w rozumieniu prawa autorskiego. Prawa
|
||||
autorskie do niniejszego opracowania przysługują Wojciechowi Lewandowskiemu Softra
|
||||
Systemy Informatyczne.
|
||||
Opracowanie może być wykorzystywane tylko w celu uzgodnienia oferty składanej przez
|
||||
Softra oraz jej realizacji.
|
||||
Wykorzystywanie niniejszego opracowania w całości lub części bez zgody autora nie jest
|
||||
dozwolone.
|
||||
Zakres i sposób realizacji funkcji API Softra_Rent_API stanowi tajemnicę przedsiębiorstwa
|
||||
Softra Systemy Informatyczne.
|
||||
|
||||
Technologia
|
||||
Serwis tworzony jest w technologii REST API. Fomat wymiany danych - JSON
|
||||
|
||||
Architektura
|
||||
Architektura API uwzględnia zakłada utworzenie serwera usługi REST po stronie
|
||||
systemu Flota Rent oraz klienta usługi wykorzystywanego po stronie strony internetowej
|
||||
wypożyczalni. Oznacza to, że wywołanie metod odbywa się zawsze po stronie klienta.
|
||||
|
||||
Bezpieczeństwo
|
||||
|
||||
Zastosowano mechanizm uwierzytelniania JWT (Json Web Token). Zalecane jest
|
||||
ograniczenie dostępu do usługi do wskazanych przez klienta adresów IP.
|
||||
|
||||
Warianty odpowiedzi - statusy HTTP:
|
||||
|
||||
Status Opis
|
||||
200 Prawidłowa odpowiedź - zwrócony obiekt odpowiadający danej metodzie
|
||||
|
||||
400 Błędne dane w wysyłanym żądaniu ( brak wymaganych danych, dane
|
||||
niekompletne )
|
||||
|
||||
401 Błąd autoryzacji / token nieaktualny.
|
||||
|
||||
403 Nieautoryzowany dostęp
|
||||
|
||||
500 Błąd wewnętrzny usługi
|
||||
|
||||
Opis metod
|
||||
229
docs/rent-api-01-autoryzacja-i-flota.md
Normal file
229
docs/rent-api-01-autoryzacja-i-flota.md
Normal file
@@ -0,0 +1,229 @@
|
||||
# Softra Rent API - Transkrypcja: Autoryzacja i flota
|
||||
|
||||
> ?r?d?o: "Oferta 37 Softra_Rent_API - zaaczni k Specyfikacja_Rent_RESTAPI_1_15.pdf"
|
||||
|
||||
1. Generowanie tokena JWT
|
||||
Opis: Generuje token za JWT dla przesłanego loginu i hasła
|
||||
URL : /account/auth
|
||||
Typ metody : POST
|
||||
Nagłówki: Brak
|
||||
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
login Identyfikator użytkownika String Parametr
|
||||
wymagany
|
||||
|
||||
password hasło String Parametr
|
||||
wymagany
|
||||
|
||||
Odpowiedź : Obiekt LoginResponse
|
||||
|
||||
Obiekt LoginResponse
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
token token JWT String ważny 1h
|
||||
|
||||
2. Pobranie listy oddziałów
|
||||
|
||||
Opis: pobiera listę dostępnych odziałów
|
||||
Url : /branch/list
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry:
|
||||
Brak
|
||||
|
||||
Odpowiedź : Obiekt typu List<Branch>
|
||||
|
||||
Obiekt Branch
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
name symbol oddziału String
|
||||
description opis oddziału String
|
||||
zipCode kod pocztowy String
|
||||
street ulica String
|
||||
city miejscowość String
|
||||
voivodeship województwo String
|
||||
openingTime godziny otwarcia - dni robocze String
|
||||
closingTime godziny zamknięcia – dni robocze String
|
||||
isVirtual czy oddział wirtualny Boolean
|
||||
email adres email oddziału String
|
||||
phoneNo numer telefonu odziału String
|
||||
relatedBranchName symbol oddziału powiązanego String
|
||||
openingTimeSaturday godziny otwarcia - soboty String
|
||||
closingTimeSaturday godziny zamknięcia - soboty String
|
||||
openingTimeSunday godziny otwarcia - niedziele String
|
||||
closingTimeSunday godziny zamknięcia - niedziele String
|
||||
|
||||
3. Pobranie listy dostępnych klas pojazdów
|
||||
|
||||
Opis: zwraca listę kategorii pojazdów dostępnych we wskazanym oddziale i okresie
|
||||
spełniających określone warunki klienta ( np. rodzaj skrzyni biegów)
|
||||
URL : /car/class/list
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
dateFrom data początku wynajmu w
|
||||
formacie w formacie YYYY-MM-
|
||||
DDTHHT24:MI:SS np 2014-10-
|
||||
10T00:00:00
|
||||
String TAK
|
||||
dateTo data końca wynajmu w formacie
|
||||
YYYY-MM-DDTHH24:MI:SS np
|
||||
2014-10-10T00:00:00
|
||||
String TAK
|
||||
branchName symbol oddziału String TAK
|
||||
fuelType rodzaj paliwa 'DIESEL', 'NPB', 'LPG' String NIE
|
||||
carBodyType rodzaj pojazdu String NIE
|
||||
|
||||
Odpowiedź : Obiekt typu List< String > , gdzie każdy element to symbol klasy pojazdu
|
||||
|
||||
4. Pobranie listy dostępnych marek i modeli w danej klasie i
|
||||
oddziale
|
||||
|
||||
Opis: zwraca listę dostępnych marek i modeli w danej klasie pojazdów w danym oddziale na
|
||||
podany dzień początku najmu spełniających określone warunki klienta
|
||||
URL : /car/model/list
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Paremetry GET: includeBrandDetails true/false (opcjonalny)
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
dateFrom data początku wynajmu w
|
||||
formacie w formacie YYYY-MM-
|
||||
DDTHH24:MI:SS np 2014-10-
|
||||
10T00:00:00
|
||||
String TAK
|
||||
dateTo data końca wynajmu w formacie
|
||||
YYYY-MM-DDTHH24:MI:SS np
|
||||
2014-10-10T00:00:00
|
||||
String TAK
|
||||
branchName symbol oddziału String TAK
|
||||
category kategoria pojazdu, - empty string
|
||||
zwróci listę dostępnych modeli dla
|
||||
wszystkich klas pojazdów
|
||||
String NIE
|
||||
fuelType rodzaj paliwa 'DIESEL', 'NPB', 'LPG' String NIE
|
||||
carBodyType rodzaj pojazdu String NIE
|
||||
|
||||
Odpowiedź : Obiekt typu List< CarModel >
|
||||
|
||||
Obiekt CarModel
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
branchName symbol oddziału String
|
||||
bodyType rodzaj nadwozia String
|
||||
category kategoria String
|
||||
doorCount ilość drzwi Integer
|
||||
gearboxType rodzaj skrzyni biegów String
|
||||
seatCount ilość miejsc Integer
|
||||
fuelType rodzaj paliwa String
|
||||
bagCount Ilosć walizek Integer
|
||||
brandDesc Opis marki String Zwracany gdy
|
||||
includeBrandDetails
|
||||
=true
|
||||
|
||||
modelDesc Opis modelu String Zwracany gdy
|
||||
includeBrandDetails
|
||||
=true
|
||||
|
||||
5. Pobranie cen
|
||||
|
||||
Opis: zwraca ceny dla wskazanej kategorii pojazdów w raz z listą dostępnych dodatków i ich
|
||||
cenami dla podanego okresu wynajmu
|
||||
URL : /pricelist/list
|
||||
Typ metody : POST
|
||||
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
category kategoria pojazdu, empty string
|
||||
wróci listę dostępnych cenników
|
||||
dla wszystkich klas pojazdów
|
||||
String NIE
|
||||
dateFrom data początku najmu w formacie
|
||||
YYYY-MM-DDTHHT24:MI:SS
|
||||
|
||||
String TAK
|
||||
dateTo data końca najmu w formacie
|
||||
YYYY-MM-DDTHHT24:MI:SS
|
||||
String TAK
|
||||
pickUpLocation miejsce wydania (symbol odziału) String TAK
|
||||
language język String TAK
|
||||
currency Waluta String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu List< PriceList >
|
||||
|
||||
Obiekt PriceList
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
id identyfikator cennika String
|
||||
dateFrom data początku
|
||||
obowiązywania cennika
|
||||
String
|
||||
dateTo data końca obowiązywania
|
||||
cennika
|
||||
String
|
||||
kind rodzaj cennika String ['standard',
|
||||
'weekend',
|
||||
'specjalny']
|
||||
|
||||
name nazwa cennika String
|
||||
carCategory kategoria pojazdu String
|
||||
group grupa cennikowa String
|
||||
odoLimit limit dzienny kilometrów BigDecmial
|
||||
notes uwagi String
|
||||
currency symbol waluty np. PLN, EUR String
|
||||
type rodzaj kalkulacji Netto/Brutto String
|
||||
number numer cennika String
|
||||
isRes czy zaznaczona opcja okresu
|
||||
rezerwacji
|
||||
Boolean
|
||||
resDateFrom data od kiedy dopuszczalna
|
||||
rezerwacja
|
||||
String
|
||||
resDateTo data do kiedy dopuszczalna
|
||||
rezerwacja
|
||||
String
|
||||
depositValue wysokość kaucji BigDecmial
|
||||
|
||||
milageOverLimitCost koszt kilometra nadprzebiegu BigDecmial
|
||||
fuelLackCost koszt niedotankowanego
|
||||
paliwa za litr
|
||||
BigDecmial
|
||||
returnDelayCost koszt opoźnienia zwrotu za
|
||||
dobę
|
||||
BigDecmial
|
||||
carDamageFullValue opłata za szkodę całkowitą BigDecmial
|
||||
carDamagePartlyValue opłata za szkodę częściową BigDecmial
|
||||
rentPrice Opłata za dobę wynajmu BigDecmial
|
||||
rentMinPrice Minimalna opłata za dobę
|
||||
wynajmu
|
||||
BigDecmial
|
||||
rentDescription Opis usługi najmu String
|
||||
rentUnit jednostka miary String
|
||||
additionalItems lista zadeklarowanych
|
||||
elementów dodatkowych
|
||||
wraz z ceną
|
||||
List<AddItem>
|
||||
|
||||
Obiekt AddItem:
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
id identyfikator usługi dodatkowej String
|
||||
name nazwa usługi dodatkowej String
|
||||
unit jednostka miary String
|
||||
price cena jednostkowa BigDecmial
|
||||
minPrice minimalna cena jednostkowa BigDecmial
|
||||
maxQuanityOnPrincing maksymalna ilość dodatków na
|
||||
wycenie
|
||||
Integer
|
||||
code Symbol opłaty String
|
||||
431
docs/rent-api-02-klienci-i-konta.md
Normal file
431
docs/rent-api-02-klienci-i-konta.md
Normal file
@@ -0,0 +1,431 @@
|
||||
# Softra Rent API - Transkrypcja: Klienci i konta
|
||||
|
||||
> ?r?d?o: "Oferta 37 Softra_Rent_API - zaaczni k Specyfikacja_Rent_RESTAPI_1_15.pdf"
|
||||
|
||||
6. Utworzenie klienta
|
||||
|
||||
Opis: Tworzy obiekt klienta
|
||||
URL : /customer/add
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
name pełna nazwa klienta String(180) TAK
|
||||
address Adres zamieszkania CustomerAddress TAK
|
||||
bankAccount Nazwa banku I nr
|
||||
konta bankowego
|
||||
CustomerBank NIE
|
||||
nip numer nip String(13) TAK -gdy
|
||||
isCompany =
|
||||
true
|
||||
|
||||
nipKind rodzaj nip jeden z
|
||||
elementów
|
||||
String NIE ['krajowy',
|
||||
'unijny',
|
||||
'pozaunijny']
|
||||
|
||||
nipCountry kraj w formacie ISO String(2) NIE
|
||||
regon numer regon String(12) NIE
|
||||
pesel nr PESEL String(11) TAK* gdy -gdy
|
||||
isCompany =
|
||||
false
|
||||
|
||||
krs numer krs String(20) NIE
|
||||
country Kraj I kod kraju CustomerCountry NIE
|
||||
|
||||
phone nr telefonu
|
||||
stacjonarnego
|
||||
String(60) NIE
|
||||
email adres email String(50) NIE
|
||||
www adres strony www String(60) NIE
|
||||
paymentMethod metoda płatności String(10) TAK
|
||||
[ 'GOTÓWKA',
|
||||
'PRZELEW',
|
||||
'KARTA PL.' ]
|
||||
|
||||
paymentDays ilość dni zapłaty Integer TAK -gdy
|
||||
payment
|
||||
metod =
|
||||
PRZELEW
|
||||
|
||||
notes uwagi String(255) NIE
|
||||
phoneMobile telefon komórkowy String(20) NIE
|
||||
discountGroup nazwa grupy
|
||||
rabatowej
|
||||
String(10) NIE
|
||||
isForeign czy klient
|
||||
zagraniczny
|
||||
Boolean NIE [‘T’, ‘N’]
|
||||
domyślna
|
||||
wartość ‘N’
|
||||
|
||||
isCompany czy klient to firma Boolean TAK [‘T’, ‘N’]
|
||||
priceListGroup grup cennikowa
|
||||
klienta
|
||||
String(10) NIE
|
||||
firstName imię String(20) TAK* gdy -gdy
|
||||
isCompany =
|
||||
false
|
||||
|
||||
lastName nazwisko String(30) TAK* gdy -gdy
|
||||
isCompany =
|
||||
false
|
||||
|
||||
idCard Dowod osobisty CustomerIdDoc TAK* gdy -gdy
|
||||
isCompany =
|
||||
false
|
||||
|
||||
correspAddress Adres
|
||||
korespondencyjny
|
||||
CustomerAddress NIE
|
||||
birthDate data urodzenia nie
|
||||
wymagane w
|
||||
formacie YYYY-MM-
|
||||
DDTHH24:MI:SS np
|
||||
2014-10-
|
||||
10T00:00:00
|
||||
String NIE
|
||||
birthCity miejsce urodzenia String(30) NIE
|
||||
creditCard Dane karty
|
||||
kredytowej
|
||||
CustomerCreditCard NIE
|
||||
passportNo numer paszportu String(20) TAK* gdy -gdy
|
||||
isCompany =
|
||||
false
|
||||
|
||||
driveLicence Prawo jazdy CustomerDriveLicence NIE
|
||||
|
||||
groupCode kod grupy klienta String(10) NIE
|
||||
account Login I hasło klienta CustomerAccount TAK
|
||||
bookKeeping Dane dot.
|
||||
ksiegowości
|
||||
CustomerBookKeeping NIE
|
||||
skipAccountCreate tworzy klienta z
|
||||
flagą klient
|
||||
niezarejestrowany
|
||||
( nie zostanie
|
||||
utworzone konto
|
||||
klienta )
|
||||
Boolean NIE [‘T’ ‘N’]
|
||||
domyślnie ‘N’
|
||||
|
||||
emailVerified Zweryfikowany
|
||||
email
|
||||
Boolean TAK
|
||||
extCustomerId identyfikator klienta
|
||||
z systemu
|
||||
zewnętrznego
|
||||
Integer NIE
|
||||
|
||||
language kod językowy – pl,
|
||||
en, ru itp
|
||||
String(2) NIE
|
||||
|
||||
*W przypadku klienta będącego osobą ficzyną (isCompany = false) wymgane uzupełnienie
|
||||
jednego z pól pesel, passport_no, id_card
|
||||
|
||||
CustomerAddress
|
||||
Nazwa Opis pola Typ danych
|
||||
zipCode kod pocztowy String(10) TAK
|
||||
city miejscowość String(30) TAK
|
||||
street ulica String(60) TAK
|
||||
homeNo Nr domu/ mieszkania String(20) TAK
|
||||
|
||||
CustomerBank
|
||||
Nazwa Opis pola Typ danych
|
||||
bankName nazwa banku String(60) NIE
|
||||
bankAccountNo numer konta bankowego String(60) NIE
|
||||
|
||||
CustomerCountry
|
||||
Nazwa Opis pola Typ danych
|
||||
countryName nazwa kraju Strnig(40) NIE
|
||||
countryCode kod kraju String(2) NIE
|
||||
|
||||
CustomerIdDoc
|
||||
Nazwa Opis pola Typ danych
|
||||
idCardNo nr dowodu osobistego String(20) TAK* gdy -gdy
|
||||
isCompany =
|
||||
false
|
||||
|
||||
idCardReleasedBy jednostka wydająca d.o. String(50) NIE
|
||||
|
||||
CustomerCreditCard
|
||||
Nazwa Opis pola Typ danych
|
||||
cardIssuer nazwa karty kredytowej (VISA,
|
||||
MASTERCARD)
|
||||
String(20) NIE
|
||||
cardNo numer karty kredytowej (numer
|
||||
wraz z separatorami)
|
||||
String(20) NIE
|
||||
cardValidTo miesiąc I rok ważdności MM/RR String(5) NIE
|
||||
|
||||
CustomerDriveLicence
|
||||
Nazwa Opis pola Typ danych
|
||||
licenceNo numer prawa jazdy String(20) NIE
|
||||
|
||||
licenceReleasedBy organ wydający prawo jazdy String(50) NIE
|
||||
licenceCategory kategoria prawa jazdy String(10) NIE
|
||||
|
||||
CustomerAccount
|
||||
Nazwa Opis pola Typ danych
|
||||
login login do konta String(100) TAK
|
||||
password Hasło do konta String(100) TAK
|
||||
|
||||
CustomerBookKeeping
|
||||
Nazwa Opis pola Typ danych
|
||||
name nazwa firmy prowadzącej
|
||||
księgowość
|
||||
String(120) NIE
|
||||
zipCode kod pocztowy firmy prowadzącej
|
||||
księgowość
|
||||
String(10) NIE
|
||||
city miejscowość firmy prowadzącej
|
||||
księgowość
|
||||
String(30) NIE
|
||||
street ulica firmy prowadzącej
|
||||
księgowość
|
||||
String(60) NIE
|
||||
|
||||
Odpowiedź : Obiekt typu NewCustomerResponse
|
||||
|
||||
Nazwa Opis pola Typ danych
|
||||
customerId identyfikator klienta String
|
||||
|
||||
7. Pobranie danych klienta
|
||||
Opis: Pobiera dane klienta dla wskazanego identyfikatora klienta
|
||||
URL : /customer/item/{id}
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry:
|
||||
|
||||
Nazwa Opis pola Typ danych
|
||||
id identyfikator klienta z
|
||||
systemu FLOTA
|
||||
String
|
||||
|
||||
Odpowiedź : Obiekt typu Customer
|
||||
|
||||
Nazwa Opis pola Typ danych
|
||||
id Id w systemie Flota String
|
||||
name pełna nazwa klienta String(180)
|
||||
address Adres zamieszkania CustomerAddress
|
||||
bankAccount Nazwa banku I nr konta
|
||||
bankowego
|
||||
CustomerBank
|
||||
nip numer nip String(13)
|
||||
nipKind rodzaj nip jeden z
|
||||
elementów
|
||||
String
|
||||
nipCountry kraj w formacie ISO String(2)
|
||||
regon numer regon String(12)
|
||||
pesel nr PESEL String(11)
|
||||
krs numer krs String(20)
|
||||
country Kraj I kod kraju CustomerCountry
|
||||
|
||||
phone nr telefonu
|
||||
stacjonarnego
|
||||
String(60)
|
||||
email adres email String(50)
|
||||
www adres strony www String(60)
|
||||
paymentMethod metoda płatności String(10)
|
||||
paymentDays ilość dni zapłaty Integer
|
||||
notes uwagi String(255)
|
||||
phoneMobile telefon komórkowy String(20)
|
||||
discountGroup nazwa grupy rabatowej String(10)
|
||||
isForeign czy klient zagraniczny Boolean
|
||||
isCompany czy klient to firma Boolean
|
||||
priceListGroup grup cennikowa klienta String(10)
|
||||
firstName imię String(20)
|
||||
lastName nazwisko String(30)
|
||||
idCard Dowod osobisty CustomerIdDoc
|
||||
correspAddress Adres korespondencyjny CustomerAddress
|
||||
birthDate data urodzenia nie
|
||||
wymagane w formacie
|
||||
YYYY-MM-
|
||||
DDTHH24:MI:SS np
|
||||
2014-10-10T00:00:00
|
||||
String
|
||||
birthCity miejsce urodzenia String(30)
|
||||
creditCard Dane karty kredytowej CustomerCreditCard
|
||||
passportNo numer paszportu String(20)
|
||||
|
||||
driveLicence Prawo jazdy CustomerDriveLicence
|
||||
|
||||
groupCode kod grupy klienta String(10)
|
||||
account Login I hasło klienta CustomerAccount
|
||||
bookKeeping Dane dot. ksiegowości CustomerBookKeeping
|
||||
skipAccountCreate tworzy klienta z flagą
|
||||
klient niezarejestrowany
|
||||
( nie zostanie utworzone
|
||||
konto klienta )
|
||||
Boolean
|
||||
emailVerified Zweryfikowany email Boolean
|
||||
extCustomerId identyfikator klienta z
|
||||
systemu zewnętrznego
|
||||
Integer
|
||||
language kod językowy – pl, en, ru
|
||||
itp
|
||||
String(2)
|
||||
|
||||
8. Aktualizacja danych klienta
|
||||
Opis: Aktualizuje dane istniejącego klienta
|
||||
URL : /customer/update
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Obiekt typu Customer
|
||||
|
||||
Zalecana strategia: pobieramy obiekt istniejącego klienta metodą GetCustomer ,
|
||||
aktualizujemy jego właściwości i przekazujemy do metody UpdateCustomer
|
||||
|
||||
16. Sprawdzenie poświadczeń klienta
|
||||
|
||||
Opis: Metoda sprawdza czy dane do logowanie są prawidłowe
|
||||
URL : /customer/account/check
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
login login do konta klienta String TAK
|
||||
password hasło do konta klienta String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu AcountCheckResult
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
customerId Id klienta String
|
||||
emailVerified Email zweryfikowany Boolean
|
||||
|
||||
17. Tworzenie tokena do zmiany hasła konta klienta
|
||||
Opis: Metoda tworzy token niezbędny do zmiany hasła
|
||||
URL : /customer/account/password/token
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
login login do konta klienta String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu RestPwdToken
|
||||
|
||||
Obiekt RestPwdToken
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String
|
||||
token Token String Ważny 30
|
||||
minut
|
||||
|
||||
18. Zmiana hasła konta klienta
|
||||
|
||||
Opis: Metoda zmienia hasło konta klienta przy pomocy wcześniej utworzonego tokenu
|
||||
URL : /customer/account/password/change
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Parametry JSON Object
|
||||
Nazwa pola Opis pola Typ danych Wymagalność
|
||||
token tokenValue otrzymany z
|
||||
metody
|
||||
/customer/account/password/token
|
||||
String TAK
|
||||
newPassword nowe hasło String TAK
|
||||
|
||||
Odpowiedź :
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String
|
||||
|
||||
21. Pobieranie definicji oświadczeń/zgód marketingowych
|
||||
|
||||
Opis: Metoda zwraca listę definicji zgód marketingowych/oświadczeń
|
||||
URL : /agreement/def/list
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Odpowiedź : Obiekt typu List<AgrementDefItem>
|
||||
|
||||
Obiekt AgrementDefItem
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
id id oświadczenia String
|
||||
isRequired czy wymagana Boolean
|
||||
description treść zgody String
|
||||
|
||||
22. Sprawdzenie czy istnieje konto dla podanego loginu
|
||||
|
||||
Opis: Sprawdza czy istnieje konto klienta dla podanego loginu
|
||||
URL : /customer/account/check/exists
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Przyjmowane parametry:
|
||||
|
||||
Nazwa Opis pola Typ
|
||||
danych
|
||||
Wymagalność
|
||||
login login do konta klienta String TAK
|
||||
|
||||
Odpowiedź :
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String
|
||||
|
||||
27. Wysłanie tokenu potwierdzający email dla podanego loginu
|
||||
klienta
|
||||
|
||||
Opis: Wysyła token potwierdzający email – dla podanego loginu klienta
|
||||
URL : /customer/account/email/sendConfirmToken
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Parametry JSON Object
|
||||
|
||||
Przyjmowane parametry:
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
customerId id klienta String TAK
|
||||
|
||||
Odpowiedź :
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String
|
||||
|
||||
28. Potwierdzenie adresu email klienta
|
||||
|
||||
Opis: Ustawia flagę potwierdząjącą adres email klienta
|
||||
URL : /customer/account/email/confirm
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Parametry JSON Object
|
||||
|
||||
Przyjmowane parametry:
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
token token klienta String TAK
|
||||
|
||||
Odpowiedź :
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String
|
||||
422
docs/rent-api-03-rezerwacje-i-platnosci.md
Normal file
422
docs/rent-api-03-rezerwacje-i-platnosci.md
Normal file
@@ -0,0 +1,422 @@
|
||||
# Softra Rent API - Transkrypcja: Rezerwacje i p?atno?ci
|
||||
|
||||
> ?r?d?o: "Oferta 37 Softra_Rent_API - zaaczni k Specyfikacja_Rent_RESTAPI_1_15.pdf"
|
||||
|
||||
9. Utworzenie rezerwacji
|
||||
|
||||
Opis: Rezerwacja wstępna pojazdu na X minut dla wybranej kategorii pojazdu, okresu najmu,
|
||||
określonych warunków klienta ewentualnie podanej marki i modelu pojazdu, wraz podaną
|
||||
listą dodatków wyposażenia. Zwraca numer rezerwacji.
|
||||
URL : /rent/makebooking
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
dateFrom data początku najmu YYYY-
|
||||
MM-DDTHH24:MI:SS
|
||||
String TAK
|
||||
dateTo data końca najmu YYYY-MM-
|
||||
DDTHH24:MI:SS
|
||||
String TAK
|
||||
customerId identyfikator klienta String TAK
|
||||
payerId identyfikator płatnika String NIE
|
||||
pickUpLocation Miejsce/adres wydania
|
||||
pojazdu
|
||||
RentLocation TAK
|
||||
pickUpComments uwagi dot. podstawienia String(50) NIE
|
||||
pickUpCommentsEx uwagi dot. faktycznego
|
||||
podstawienia
|
||||
String(255) NIE
|
||||
returnLocation Miejsce/adres odbiotu
|
||||
pojazdu
|
||||
RentLocation TAK
|
||||
returnComments uwagi dot. odbioru String(50) NIE
|
||||
returnCommentsEx uwagi dot. faktycznego
|
||||
odbioru
|
||||
String(255) NIE
|
||||
carParameters Parametry pojazdu CarParameters TAK
|
||||
priceListId identyfikator cennika String TAK
|
||||
depositValue wysokość kaucji BigDecimal NIE
|
||||
validTime ilość minut określająća czas
|
||||
po którym rezerwacja
|
||||
zostanie anulowana w
|
||||
systuacji gdy nie zostanie
|
||||
dokonana płatność (nie
|
||||
nastąpi wywołanie meotdy
|
||||
rent/confirm). API cyklicznie
|
||||
(co 5 minut) sprawdza i
|
||||
anuluje nie opłacone
|
||||
rezerwacje po przekroczeniu
|
||||
limitu określonego przez
|
||||
parametr valid_time
|
||||
Integer TAK
|
||||
priceItems lista usług dodatkowych List<BookingPriceItem> NIE
|
||||
drivers lista kierowców List<DriverItem> NIE
|
||||
agreementItems lista zgód
|
||||
marketingowych/oświadczeń
|
||||
zaznaczonych przez klienta
|
||||
List<AgreementItem> NIE
|
||||
|
||||
comments Uwagi do rezerwacji String(500) NIE
|
||||
|
||||
Obiekt RentLocation:
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
branchName Symbol oddziału String(10) TAK
|
||||
outOfBranch jedna z wartości: [‘N’, ‘A’, ‘P’]
|
||||
'N' - brak podstawienia/zwrotu pod
|
||||
adres,
|
||||
String(1) TAK
|
||||
|
||||
'A' – podstawienie/zwrot pod
|
||||
adres,
|
||||
'P' - punkt z listy oddziałów
|
||||
address Podstawienei/zwrot pod adres String(100) TAK/NIE
|
||||
pointName Podstawienie/zwrot do puktu.
|
||||
Punkt
|
||||
String(10) TAK/NIE
|
||||
|
||||
Obiekt CarParameters:
|
||||
Nazwa pola Opis pola Typ danych Wymagalność
|
||||
brand Marka pojazdu String(40) NIE
|
||||
model Model pojazdu String(40) NIE
|
||||
categoryName Klasa pojazdu String(10) TAK
|
||||
gearBoxType Rodzaj skrzyni biegów String(10) NIE
|
||||
bodyType Rodzaj nadwozia String(10) NIE
|
||||
seatCount Ilość miejsc Integer NIE
|
||||
doorCount Ilość drzwi Integer NIE
|
||||
bagCount Ilość walizek Integer NIE
|
||||
drivingGearType Rodzaj napędu String(10) NIE
|
||||
fuelType Rodzaj paliwa String(10) NIE
|
||||
group Grupa modelowa pojazdu String(10) NIE
|
||||
|
||||
Obiekt BookingPriceItem:
|
||||
|
||||
Nazwa pola Opis pola Typ danych Wymagalność
|
||||
id idetyfikator elementu usługi
|
||||
dodatkowej
|
||||
String TAK
|
||||
name nazwa usługi dodatkowej String(50) TAK
|
||||
unit jednostka miary usługi
|
||||
dodatkowej
|
||||
String(10) TAK
|
||||
amount ilość BigDecmial TAK
|
||||
priceBeforeDiscount cena przed rabatem BigDecmial TAK
|
||||
discount wysokosc rabatu BigDecmial TAK
|
||||
priceAfterDiscount cena po rabacie BigDecmial TAK
|
||||
|
||||
Obiekt DriverItem:
|
||||
|
||||
Nazwa pola Opis pola Typ danych Wyamgalność
|
||||
firstName imię String(20) TAK
|
||||
lastName nazwisko String(30) TAK
|
||||
address adres DriverAddress TAK
|
||||
pesel PESEL String(11) TAK
|
||||
phone telefon String(60) NIE
|
||||
phoneMobile telefon kom. String(60) NIE
|
||||
email e-mail String(50) NIE
|
||||
idCard dane dot.
|
||||
dowodu os.
|
||||
CustomerIdDoc NIE
|
||||
passportNo numer paszportu String(20) NIE
|
||||
driveLicence dane dot prawa
|
||||
jazdy
|
||||
CustomerDriveLicence NIE
|
||||
country kraj String(10) NIE
|
||||
birthDate data urodzenia
|
||||
format YYYY-
|
||||
MM-DD
|
||||
HH24:MI:SS
|
||||
String NIE
|
||||
birthCity miejsce
|
||||
urodzenia
|
||||
String(30) NIE
|
||||
|
||||
Obiekt DriverAddress:
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
city miejscowość String(30) TAK
|
||||
zipCode kod pocztowy String(10) TAK
|
||||
street ulica String(60) TAK
|
||||
|
||||
Obiekt AgreementItem:
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
id dentyfiaktor oświadczenia (patrz
|
||||
metoda GetAgreementsDefList)
|
||||
String TAK
|
||||
value Zgoda /brak zgody Boolean TAK
|
||||
|
||||
Odpowiedź : Obiekt typu BookingResult
|
||||
|
||||
Obiekt BookingResult
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
|
||||
success Sukces/Bąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String CAR_NOT_FOUND
|
||||
reservationId identyfikator rezerwacji String
|
||||
reservationNo numer rezerwacji String
|
||||
grossValue wartość brutto rezerwacji wraz z
|
||||
kaucją
|
||||
BigDecimal
|
||||
|
||||
10. Dodanie klienta do istniejącej rezerwacji
|
||||
Opis: Dodaje klienta do istniejącej rezerwacji ( przypadek z rezerwacją na klienta
|
||||
anonimowego)
|
||||
URL : /customer/addToReservation
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
customerId identyfikator klienta z systermu
|
||||
Flota. Parametr customer_id
|
||||
otrzymujemy metodą GetCustomer
|
||||
lub AddCustomer
|
||||
String TAK
|
||||
reservationId identyfikator rezerwacji String TAK
|
||||
|
||||
Odpowiedź :
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String
|
||||
|
||||
11. Potwierdzenie rezerwacji
|
||||
Opis: Zmienia rezerwację na potwierdzoną
|
||||
URL : /rent/confirm
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
reservationId identyfikator rezerwacji String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu ConfirmResult
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String
|
||||
|
||||
12. Anulowanie rezerwacji
|
||||
Opis: Anuluje rezerwację dla podanego identyfikatora rezerwacji
|
||||
URL : /rent/cancel
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa pola Opis pola Typ danych Wymagalność
|
||||
reservationId id wynajmu/rezerwacji String TAK
|
||||
reason przyczyna anulowania String(255) TAK
|
||||
|
||||
Odpowiedź : Obiekt typu CancelBookingResponse
|
||||
|
||||
Obiekt CancelBookingResponse
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
success Sukces/Błąd Boolean
|
||||
rejectReason Przyczyna niepowodzenia String
|
||||
|
||||
19. Podsumowanie opłat przed złożeniem rezerwacji
|
||||
|
||||
Opis: Metoda zwraca podsumowanie rezerwacji z elementami wyceny. W zwróconej
|
||||
odpowiedzi mogą pojawiać się elementy dodatkowe - np. doliczona opłata za zwrot w innym
|
||||
oddziale, opłata za obsługę po godzinach pracy itp.
|
||||
URL : /rent/princingSummary
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Przyjmowane parametry:
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
dateFrom data początku najmu String TAK
|
||||
dateTo data końca najmu String TAK
|
||||
customerId identyfikator klienta String TAK
|
||||
payerId identyfikator płatnika String NIE
|
||||
pickUpLocation Miejsce/adres
|
||||
wydania pojazdu
|
||||
RentLocation TAK
|
||||
returnLocation Miejsce/adres odbiotu
|
||||
pojazdu
|
||||
RentLocation TAK
|
||||
carParameters Parametry pojazdu CarParameters TAK
|
||||
priceListId identyfikator cennika String TAK
|
||||
depositValue wysokość kaucji BigDecimal NIE
|
||||
priceItems lista usług
|
||||
dodatkowych
|
||||
List<BookingPriceItem> NIE
|
||||
|
||||
Obiekt BookingPriceItem:
|
||||
|
||||
Nazwa pola Opis pola Typ danych Wymagalność
|
||||
id idetyfikator elementu usługi
|
||||
dodatkowej
|
||||
String TAK
|
||||
name nazwa usługi dodatkowej String(50) TAK
|
||||
unit jednostka miary usługi dodatkowej String(10) TAK
|
||||
amount ilość BigDecmial TAK
|
||||
priceBeforeDiscount cena przed rabatem BigDecmial TAK
|
||||
|
||||
dicount wysokosc rabatu BigDecmial TAK
|
||||
priceAfterDiscount cena po rabacie BigDecmial TAK
|
||||
|
||||
Odpowiedź : Obiekt typu SummaryResponse
|
||||
|
||||
Obiekt SummaryResponse
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
totalNetValue wartość netto rezerwacji BigDecimal
|
||||
totalVatValue wartość vat rezerwacji BigDecimal
|
||||
totalGrossValue wartość brutto rezerwacji BigDecimal
|
||||
pricelist lista elementów wyceny List<PriceItem>
|
||||
|
||||
Obiekt PriceItem
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
id id opłaty String
|
||||
name nazwa opłaty String(50)
|
||||
code symbol opłaty String
|
||||
unit jednostka miary String(10)
|
||||
amount ilość BigDecmial
|
||||
priceBeforeDiscount cena przed rabatem BigDecmial
|
||||
dicount wysokosc rabatu % BigDecmial
|
||||
priceAfterDiscount cena po rabacie BigDecmial
|
||||
netValue wartosc netto BigDecmial
|
||||
vatRate stopa vat "23%" String
|
||||
vatValue wartość vat BigDecmial
|
||||
grossValue wartość brutto BigDecmial
|
||||
addedBySystem true oznacza że jest to dodatkowa
|
||||
opłata doliczona przez system z
|
||||
automatu
|
||||
Boolean
|
||||
systemItemType rodzaj doliczonej automatycznie
|
||||
opłaty:
|
||||
1 - opłata za zwrot w innym
|
||||
oddziale,
|
||||
2 - wydanie auta po godzinach
|
||||
pracy
|
||||
3 - wydanie auta w godzinach
|
||||
pracy
|
||||
4 - zdanie auta po godzinach pracy
|
||||
5 - zdanie auta w godzinach pracy
|
||||
Integer
|
||||
|
||||
23. Dodawanie wpłat i kaucji do rezerwacji
|
||||
|
||||
Opis: Pozwala na dodawanie wpłat i kaucji do zamówienia/rezerwacji
|
||||
URL : /rent/payment/add
|
||||
Typ metody : POST
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa pola Opis pola Typ danych Wymagalność
|
||||
reservationId id zamówienia/rezerwacji String TAK
|
||||
paymentDate data płatności String TAK
|
||||
paymentMethod sposób płatności ['GOTÓWKA',
|
||||
'PRZELEW', 'KARTA PŁ.', 'PREAUTORYZ',
|
||||
'INNE']
|
||||
String TAK
|
||||
paymentType rodzaj płatności
|
||||
['wpłata','kaucja','preautoryzacja','zaliczka
|
||||
częściowa','zaliczka całkowita']
|
||||
String TAK
|
||||
currency symbol waluty String(3) TAK
|
||||
grossValue kwota wpłaty w walucie BigDecimal TAK
|
||||
paymentNo numer płatności String(20) NIE
|
||||
paymentState „Do pobrania”, „Pobrano”, „Zwrócono” TAK
|
||||
|
||||
Odpowiedź : Obiekt typu PaymentAddResponse
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
paymentId Id utworzenego obiektu płatności
|
||||
String
|
||||
|
||||
24. Pobieranie listy opłat dodatkowych dla podanej rezerwacji /
|
||||
wynajmu
|
||||
|
||||
Opis: Zwraca listę opłat dodatkowych dla podanego id wynajmu/rezerwacji
|
||||
URL : /rent/pricelist/list
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
rentId id wynajmu/rezerwacji String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu List< RentAdditionalPriceItem>
|
||||
|
||||
Obiekt RentAdditionalPriceItem
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
itemId id opłaty dodatkowej String
|
||||
name nazwa opłaty dodatkowej String
|
||||
nameCode symbol nazwy String
|
||||
vatRate stopa va BigDecimal
|
||||
symbolVat symbol vat String
|
||||
amount ilość String
|
||||
currency waluta String
|
||||
netPrice cena netto BigDecimal
|
||||
grossPrice cena brutto BigDecimal
|
||||
unit jednostka miary String
|
||||
discountValue wartość rabatu BigDecimal
|
||||
discountPercent procent rabatu BigDecimal
|
||||
netValue wartość netto BigDecimal
|
||||
vatValue wartość vat BigDecimal
|
||||
grossValue wartość brutto BigDecimal
|
||||
payerShortName symbol płatnika String
|
||||
|
||||
25. Pobieranie listy wpłat dla podanej rezerwacji / wynajmu
|
||||
|
||||
Opis: Zwraca listę wpłat dla podanego id wynajmu/rezerwacji
|
||||
URL : /rent/payment/list
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Przyjmowane parametry:
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
rentId id wynajmu/rezerwacji String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu List< RentPaymentItem>
|
||||
|
||||
Obiekt RentPaymentItem
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
itemId Id wpłaty String
|
||||
rentId id wynajmu/rezerwacji Integer
|
||||
type rodzaj wpłat/kaucja/zaliczka itp String
|
||||
comments uawgi String
|
||||
date data wpłaty String
|
||||
grossValue wartość brutto w walucie BigDecimal
|
||||
paymentMethod metoda płatności String
|
||||
paymentDirection Pobrano/Zwrócono/Do pobrania String
|
||||
currency waluta String
|
||||
grossPlnValue wartość brutto PLN BigDecimal
|
||||
payerShortName symbol płatnika String
|
||||
|
||||
26. Dodawanie płatnika
|
||||
|
||||
Opis: Dodaje klienta (będącego płatnikiem) do kartoteki klientów w systemie Flota Rent
|
||||
|
||||
URL : /payer/add
|
||||
Typ metody : POST
|
||||
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Przyjmowane parametry:
|
||||
|
||||
jak dla metody customer/add
|
||||
|
||||
Odpowiedź : taka jak dla metody customer/add
|
||||
96
docs/rent-api-04-faktury-i-historia.md
Normal file
96
docs/rent-api-04-faktury-i-historia.md
Normal file
@@ -0,0 +1,96 @@
|
||||
# Softra Rent API - Transkrypcja: Faktury i historia
|
||||
|
||||
> ?r?d?o: "Oferta 37 Softra_Rent_API - zaaczni k Specyfikacja_Rent_RESTAPI_1_15.pdf"
|
||||
|
||||
13. Pobieranie listy faktur dla rezerwacji
|
||||
Opis: Zwraca listę faktur dla podanego identyfikatora zlecenia
|
||||
URL : /invoice/rent/list
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
reservationId id rezerwacji w systemie Flota String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu List<DocItem >
|
||||
|
||||
Obiekt DocItem
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
docId identfikator dokumentu String
|
||||
docDate data wystawienia dokumentu String YYYY-MM-
|
||||
DDTHH24:MI:SS
|
||||
|
||||
docType typ dokumentu: FAKTURA VAT,
|
||||
KOREKTA VAT
|
||||
String
|
||||
docNo nr dokumentu String
|
||||
docNetValue wartość netto BigDecimal
|
||||
docVatValue wartość vat BigDecimal
|
||||
docGrossValue wartość brutto BigDecimal
|
||||
|
||||
14. Pobieranie listy faktur związanych z klientem
|
||||
Opis: Zwraca listę faktur dla podanego identyfikatora klienta
|
||||
URL : /invoice/customer/list
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Parametry:
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
customerId id klienta w systemie Flota String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu List< DocItem> (opisany w metodzie /invoice/rent/list )
|
||||
|
||||
15. Pobieranie dokumentu faktury
|
||||
|
||||
Opis: Zwraca plik faktury
|
||||
URL : /invoice/item/{:id}
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
id id dokumentu w systemie Flota String TAK
|
||||
|
||||
Odpowiedź : http 200 ContentType = "application/octet-stream" (plik)
|
||||
|
||||
20. Pobieranie listy wynajmów i rezerwacji klienta
|
||||
|
||||
Opis: Metoda zwraca listę wydań i rezerwacji wybranego klienta
|
||||
URL : /customer/rent/list
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
|
||||
Przyjmowane parametry:
|
||||
|
||||
Nazwa Opis pola Typ danych Wymagalność
|
||||
customerId Id klient w systemie Flota String TAK
|
||||
|
||||
Odpowiedź : Obiekt typu List< RentItem>
|
||||
|
||||
Obiekt RentItem
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
rentId id wynajmu/rezerwacji String
|
||||
dateFrom data początku String
|
||||
dateTo data końca String
|
||||
carRegNo nr rejestracyjny pojazdu String
|
||||
carMark marka pojazdu String
|
||||
carCategory kategoria pojazdu String
|
||||
orderNo nr zlecenia String
|
||||
agreementNo nr umowy String
|
||||
currency waluta String
|
||||
status Status wynajmu/rezerwacji-
|
||||
'REZERWACJA', 'REZ. POTW',
|
||||
'WYDANY', 'ZDANY', 'ODMOWA'
|
||||
String
|
||||
pickupLocation miejsce wydania String
|
||||
returnLocation miejsce zdania String
|
||||
totalNetValue wartosc netto w walucie BigDecimal
|
||||
totalVatValue wartość vat BigDecimal
|
||||
|
||||
totalGrossValue wartość brutto BigDecimal
|
||||
95
docs/rent-api-05-slowniki-i-uzgodnienia.md
Normal file
95
docs/rent-api-05-slowniki-i-uzgodnienia.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# Softra Rent API - Transkrypcja: S?owniki i uzgodnienia wdro?eniowe
|
||||
|
||||
> ?r?d?o: "Oferta 37 Softra_Rent_API - zaaczni k Specyfikacja_Rent_RESTAPI_1_15.pdf"
|
||||
|
||||
29. Pobieranie wszystkich symboli klas
|
||||
|
||||
Opis: Zwraca wszystkie zdefiniowane klasy pojazdów w systemie
|
||||
URL : /car/class/listAll
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Przyjmowane parametry: Brak
|
||||
|
||||
Odpowiedź : Obiekt typu List< String > , gdzie każdy element to symbol klasy pojazdu
|
||||
|
||||
30. Pobieranie wszystkich modeli pojazdów
|
||||
|
||||
Opis: Zwraca wszystkie zdefiniowane modele pojazdów w systemie
|
||||
URL : /car/model/listAll
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Paremetry GET: includeBrandDetails true/false (opcjonalny)
|
||||
|
||||
Odpowiedź : Obiekt typu List< CarModel > opisany w pkt 4.
|
||||
|
||||
31. Pobieranie listy opłat zadeklarowanych w systemie
|
||||
|
||||
Opis: Zwraca wszystkie zdefiniowane opłaty w sytemie które mogą użyte w cennikach
|
||||
URL : /pricelist/defList
|
||||
Typ metody : GET
|
||||
Nagłówki:
|
||||
"Authorization: Bearer [token]"
|
||||
Parametry JSON Object
|
||||
|
||||
Przyjmowane parametry: Brak
|
||||
|
||||
Odpowiedź : Obiekt typu List< PriceItem > ,
|
||||
|
||||
Parametry PriceItem
|
||||
|
||||
Nazwa pola Opis pola Typ danych Uwagi
|
||||
code Symbol opłaty String
|
||||
description Nazwa opłaty String
|
||||
|
||||
32. Przykład uzgodnień wdrożeniowych
|
||||
|
||||
Przed przystąpieniem do wdrożenia zleceniodawca, wykonawca strony www i Softra
|
||||
powinni:
|
||||
- uzgodnić scenariusz obsługi klienta na stronie internetowej
|
||||
- zweryfikować użycie metod API zgodnie z uzgodnionym scenariuszem
|
||||
- uzgodnić ewentualne konieczne zmiany w API
|
||||
|
||||
Przykładowy scenariusz obsługi klienta na stronie www
|
||||
|
||||
Poniżej zamieszczono przykład scenariuszy użycia dla podstawowej wersji interface
|
||||
SOFTRA_RENT_API.
|
||||
Scenariusze obsługi klienta mogą być modyfikowane na potrzeby użytkownika systemu.
|
||||
Poniższy scenariusz należy traktować tylko jako przykład.
|
||||
Zakłada się dwa scenariusze użycia :
|
||||
1. Dla nowego klienta
|
||||
2. Dla klienta zarejestrowanego w systemie.
|
||||
Fragmenty scenariusz specyficzne dla w/w rodzajów scenariusza zaznaczono kolorem.
|
||||
|
||||
1. Potencjalny klient wchodzi na stronę www wypożyczalni i dokonuje podaje okres
|
||||
wynajmu oraz lokalizacje odbioru i zwrotu pojazdu
|
||||
2. Następuje sprawdzenie dostępnych klas pojazdów spełniających w/w kreteria i
|
||||
prezentacja możliwych do wyboru modeli wraz z cenami
|
||||
3. Potencjalny klient wybiera klasę pojazdu oraz wskazuje opocjonalne elementy
|
||||
wyposażenia lub usługi (foteliki , pakiety znoszące odpowiedzialnosć itp)
|
||||
4. Następnie prezentowane jest podsumowanie oraz wybór czy klient chce:
|
||||
- dokonać rezerwacji bez rejestracji (jako anonim)
|
||||
- zalogować się na wcześniej utworzone konto
|
||||
- utworzyć konto
|
||||
4. Jeżeli klient wskaże ,że jest zarejestrowanym klientem strona www wysyła do
|
||||
Softra_Rent_API dane uwierzytelniające klienta i następuje weryfikacja konta kloenta.
|
||||
Softra_Rent_API zwraca potwierdzenie o statusie autoryzacji.
|
||||
5. Jeśli klient wskaże ,że chce utworzyć konto lub składa rezerwację bez rejestracji to
|
||||
zostanie proszony jest o wypełnienie formularza rejestracji danych klienta.
|
||||
6. Klient następnie zatwierdza formularz rezerwacji i następuje złożenie rezerwacji.
|
||||
7. Jeśli przy próbie rezerwacji system stwierdza brak samochodu następuje zapisanie
|
||||
zamówienia i zgłoszenie informacji do operatora przez SMS o braku pojazdu.
|
||||
9. Klient proszony jest o wykonanie płatności za rezerwację. Potwierdzenie wykonania
|
||||
płatności wysyłane jest do Softra_Rent_API
|
||||
10. Jeśli płatność została wykonana to status rezerwacji jest zmieniany na „Potwierdzone”
|
||||
i wysyłany jest SMS oraz e-mail do wskazanego operatora systemu oraz e-mail
|
||||
potwierdzający przyjęcie rezerwacji do klienta.
|
||||
|
||||
11. Jeśli płatność nie została wykonana w ciągu X minut to następuje zmiana statusu
|
||||
rezerwacji na „Anulowano” powód „z winy klienta” Jeśli klient był zautoryzowany tzn. inny
|
||||
niżto wysłany zostaje e-mail o anulowaniu rezerwacji.
|
||||
10
docs/rent-api-transkrypcja-index.md
Normal file
10
docs/rent-api-transkrypcja-index.md
Normal file
@@ -0,0 +1,10 @@
|
||||
# Softra Rent API - Transkrypcja (podzia? na dzia?y)
|
||||
|
||||
- [00 - Wst?p i zasady](./rent-api-00-wstep-i-zasady.md)
|
||||
- [01 - Autoryzacja i flota](./rent-api-01-autoryzacja-i-flota.md)
|
||||
- [02 - Klienci i konta](./rent-api-02-klienci-i-konta.md)
|
||||
- [03 - Rezerwacje i p?atno?ci](./rent-api-03-rezerwacje-i-platnosci.md)
|
||||
- [04 - Faktury i historia](./rent-api-04-faktury-i-historia.md)
|
||||
- [05 - S?owniki i uzgodnienia](./rent-api-05-slowniki-i-uzgodnienia.md)
|
||||
|
||||
Dokument ?r?d?owy: `Oferta 37 Softra_Rent_API - zaaczni k Specyfikacja_Rent_RESTAPI_1_15.pdf`
|
||||
220
softra-test.php
Normal file
220
softra-test.php
Normal file
@@ -0,0 +1,220 @@
|
||||
<?php
|
||||
declare(strict_types=1);
|
||||
|
||||
/**
|
||||
* Softra API smoke test:
|
||||
* 1) reads credentials from .env (format: "key: value")
|
||||
* 2) authenticates (/account/auth)
|
||||
* 3) fetches branches (/branch/list)
|
||||
* 4) fetches car models (/car/model/list?includeBrandDetails=true)
|
||||
*
|
||||
* Usage:
|
||||
* php softra-test.php
|
||||
* php softra-test.php branch=BYDGOSZCZ from=2026-03-30T12:00:00 to=2026-04-02T12:00:00 category=
|
||||
*/
|
||||
|
||||
function fail(string $message, int $code = 1): never
|
||||
{
|
||||
if (PHP_SAPI !== 'cli') {
|
||||
http_response_code(500);
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
echo json_encode(['ok' => false, 'error' => $message], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . PHP_EOL;
|
||||
exit($code);
|
||||
}
|
||||
|
||||
if (defined('STDERR')) {
|
||||
fwrite(STDERR, $message . PHP_EOL);
|
||||
} else {
|
||||
echo $message . PHP_EOL;
|
||||
}
|
||||
exit($code);
|
||||
}
|
||||
|
||||
function parseEnvFile(string $path): array
|
||||
{
|
||||
if (!is_file($path)) {
|
||||
fail("Brak pliku .env: {$path}");
|
||||
}
|
||||
|
||||
$result = [];
|
||||
$lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
|
||||
if ($lines === false) {
|
||||
fail("Nie mogę odczytać pliku .env");
|
||||
}
|
||||
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line);
|
||||
if ($line === '' || str_starts_with($line, '#')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// supports:
|
||||
// key: value
|
||||
// key=value
|
||||
$sepPos = strpos($line, ':');
|
||||
if ($sepPos === false) {
|
||||
$sepPos = strpos($line, '=');
|
||||
}
|
||||
if ($sepPos === false) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$key = trim(substr($line, 0, $sepPos));
|
||||
$value = trim(substr($line, $sepPos + 1));
|
||||
$value = trim($value, "\"'");
|
||||
if ($key !== '') {
|
||||
$result[strtolower($key)] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
function parseInputArgs(?array $argv = null): array
|
||||
{
|
||||
$args = [];
|
||||
|
||||
if (PHP_SAPI === 'cli') {
|
||||
$argv = $argv ?? [];
|
||||
foreach (array_slice($argv, 1) as $arg) {
|
||||
$pos = strpos($arg, '=');
|
||||
if ($pos === false) {
|
||||
continue;
|
||||
}
|
||||
$k = strtolower(trim(substr($arg, 0, $pos)));
|
||||
$v = trim(substr($arg, $pos + 1));
|
||||
$args[$k] = $v;
|
||||
}
|
||||
return $args;
|
||||
}
|
||||
|
||||
foreach ($_GET as $k => $v) {
|
||||
if (!is_string($k)) {
|
||||
continue;
|
||||
}
|
||||
$args[strtolower($k)] = is_string($v) ? trim($v) : '';
|
||||
}
|
||||
|
||||
return $args;
|
||||
}
|
||||
|
||||
function requestJson(string $method, string $url, ?array $payload = null, array $headers = []): array
|
||||
{
|
||||
$ch = curl_init($url);
|
||||
if ($ch === false) {
|
||||
fail('Nie udało się zainicjować cURL');
|
||||
}
|
||||
|
||||
$httpHeaders = array_merge(['Accept: application/json'], $headers);
|
||||
if ($payload !== null) {
|
||||
$httpHeaders[] = 'Content-Type: application/json';
|
||||
}
|
||||
|
||||
curl_setopt_array($ch, [
|
||||
CURLOPT_CUSTOMREQUEST => strtoupper($method),
|
||||
CURLOPT_RETURNTRANSFER => true,
|
||||
CURLOPT_HTTPHEADER => $httpHeaders,
|
||||
CURLOPT_TIMEOUT => 30,
|
||||
CURLOPT_CONNECTTIMEOUT => 15,
|
||||
]);
|
||||
|
||||
if ($payload !== null) {
|
||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
|
||||
}
|
||||
|
||||
$raw = curl_exec($ch);
|
||||
$err = curl_error($ch);
|
||||
$status = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||
curl_close($ch);
|
||||
|
||||
if ($raw === false) {
|
||||
fail("Błąd połączenia cURL: {$err}");
|
||||
}
|
||||
|
||||
$decoded = json_decode($raw, true);
|
||||
if (!is_array($decoded)) {
|
||||
$decoded = ['raw' => $raw];
|
||||
}
|
||||
|
||||
return [
|
||||
'status' => $status,
|
||||
'body' => $decoded,
|
||||
'raw' => $raw,
|
||||
];
|
||||
}
|
||||
|
||||
$env = parseEnvFile(__DIR__ . DIRECTORY_SEPARATOR . '.env');
|
||||
$args = parseInputArgs($argv ?? null);
|
||||
|
||||
$baseUrl = rtrim($env['url'] ?? '', '/');
|
||||
$username = $env['username'] ?? '';
|
||||
$password = $env['password'] ?? '';
|
||||
|
||||
if ($baseUrl === '' || $username === '' || $password === '') {
|
||||
fail('W .env muszą być pola: url, username, password');
|
||||
}
|
||||
|
||||
$authRes = requestJson('POST', $baseUrl . '/account/auth', [
|
||||
'login' => $username,
|
||||
'password' => $password,
|
||||
]);
|
||||
|
||||
if ($authRes['status'] !== 200 || empty($authRes['body']['token'])) {
|
||||
fail("Auth nieudany (HTTP {$authRes['status']}): {$authRes['raw']}");
|
||||
}
|
||||
|
||||
$token = (string) $authRes['body']['token'];
|
||||
$authHeader = ['Authorization: Bearer ' . $token];
|
||||
|
||||
$branchesRes = requestJson('GET', $baseUrl . '/branch/list', null, $authHeader);
|
||||
if ($branchesRes['status'] !== 200 || !is_array($branchesRes['body'])) {
|
||||
fail("Pobranie oddziałów nieudane (HTTP {$branchesRes['status']}): {$branchesRes['raw']}");
|
||||
}
|
||||
|
||||
$branches = $branchesRes['body'];
|
||||
if (count($branches) === 0) {
|
||||
fail('API działa, ale /branch/list zwróciło pustą listę oddziałów');
|
||||
}
|
||||
|
||||
$branch = $args['branch'] ?? ($branches[0]['relatedBranchName'] ?? $branches[0]['name'] ?? '');
|
||||
if ($branch === '') {
|
||||
fail('Nie udało się ustalić branchName (podaj ręcznie: branch=NAZWA)');
|
||||
}
|
||||
|
||||
$from = $args['from'] ?? (new DateTimeImmutable('+7 days'))->format('Y-m-d\TH:i:s');
|
||||
$to = $args['to'] ?? (new DateTimeImmutable('+10 days'))->format('Y-m-d\TH:i:s');
|
||||
$category = $args['category'] ?? ''; // empty = all categories
|
||||
|
||||
$modelsRes = requestJson(
|
||||
'POST',
|
||||
$baseUrl . '/car/model/list?includeBrandDetails=true',
|
||||
[
|
||||
'dateFrom' => $from,
|
||||
'dateTo' => $to,
|
||||
'branchName' => $branch,
|
||||
'category' => $category,
|
||||
],
|
||||
$authHeader
|
||||
);
|
||||
|
||||
if ($modelsRes['status'] !== 200 || !is_array($modelsRes['body'])) {
|
||||
fail("Pobranie listy aut nieudane (HTTP {$modelsRes['status']}): {$modelsRes['raw']}");
|
||||
}
|
||||
|
||||
$models = $modelsRes['body'];
|
||||
|
||||
$result = [
|
||||
'ok' => true,
|
||||
'baseUrl' => $baseUrl,
|
||||
'branch' => $branch,
|
||||
'dateFrom' => $from,
|
||||
'dateTo' => $to,
|
||||
'modelsCount' => count($models),
|
||||
'models' => $models,
|
||||
];
|
||||
|
||||
if (PHP_SAPI !== 'cli') {
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
}
|
||||
|
||||
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . PHP_EOL;
|
||||
Reference in New Issue
Block a user