Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Rezerwacje biletów
Forum PHP.pl > Forum > Przedszkole
bubx2k
Cześć,
poszukiwałem dłuższy czas rozwiązania (gotowego) dla rezerwacji biletów, głównie na spektakle. Na każdy spektakl może być kilka typów biletów w różnych cenach. Nie odnalazłem rozwiązania spełniającego takie wymagania. Stąd dzisiaj pomyślałem nad własną implementacją.

Kwestia logiki i bazy danych.

Każde wydarzenie ma tytuł, opis i obrazek. Do każdego wydarzenia mogą być różne bilety. Tą część realizują tabele "Wydarzenie", "Wydarzenie_typ_biletu" oraz "Typ_biletu".

Tabela "Kalendarz" ma za zadanie przechowywać listę wydarzeń.

Problem mam z dwiema ostatnimi tabelami "Rezerwacja" oraz "Klient". Rezerwacja biletów ma być dostępna bez rejestracji. Wybór biletów i ich ilości, następne potwierdzenie zakupu utworzy w tabeli "Rezerwacja" stosowną ilość wpisów. Następnie klient będzie musiał podać dane, które zostaną zapisane w tabeli "Klient".

Domyślnie wpis w tabeli "Rezerwacja" otrzyma status 'w trakcie', do momentu potwierdzenia płatności (przez np. DotPay).

W tabeli "Rezerwacja" jest też pole "timeout". Zadaniem pola jest przechowanie daty ważności rejestracji, np 20 minut od momentu rozpoczęcia procesu do momentu potwierdzenia płatności. Celem tego jest uniknięcie sytuacji sprzedania nadwymiarowych biletów. Czyli jeśli rezerwacja jest "w trakcie", timeout jeszcze nie upłynął to od ilości dostępnych biletów odejmuję ilość biletów z rezerwacji. W przypadku kiedy rezerwacja jest "w trakcie", timeout już upłynął to nie uwzględniam tej rezerwacji w obliczaniu ilości dostępnych biletów.

Co myślcie o takim rozwiązaniu? Jakieś zastrzeżenia, pomysły?

DamianRastMan
Myślę, że powinieneś rozdzielić czas oczekiwania na ukończenie czynności rezerwacji, od czasu oczekiwania na wpłynięcie wpłaty.

Tj. Aby użytkownik, który właśnie w tej chwili rezerwuje bilety(wybrał ich ilość i ją zaakceptował, a teraz podaje dane osobowe itd), miał pewność, że nikt mu ich nie zwinie sprzed nosa.

Ale również, aby użytkownik, który zakończył proces rezerwacji, ale nie wpłynęła zapłata, stracił ważność swojej rezerwacji po określonym czasie, o ile uwzględniasz możliwość zapłaty która może potrwać dłużej niż 20minut. Dajmy na to przelew bez konta internetowego.

Czyli: Użytkownik wpisuje ilość biletów i klika rezerwuj (od tej chwili ma 20 minut, na ukończenie procesu rezerwacji na stronie), następnie otrzymuje np. 3dni robocze na wpłatę pieniędzy w przeciwnym wypadku bilety wracają do puli. Tutaj ważne, żeby w jakiś sposób zabezpieczyć się przed osobami które zechcą specjalnie sabotować stronę rezerwując nieopłacone bilety.
bubx2k
Wpłata będzie możliwa tylko przez dotpay, wykluczam opcję normalnego przelewu, wymagałoby to interwencji użytkownika, a ją chcę zminimalizować.
Zakładam 20-30 minut na wpłatę, w moim odczuciu będzie to dobry przedział czasu.

Kwestia sabotowania - dałeś mi do myślenia smile.gif
Rysh
Cytat(bubx2k @ 10.01.2016, 18:17:25 ) *
Wpłata będzie możliwa tylko przez dotpay, wykluczam opcję normalnego przelewu, wymagałoby to interwencji użytkownika, a ją chcę zminimalizować.
Zakładam 20-30 minut na wpłatę, w moim odczuciu będzie to dobry przedział czasu.

Kwestia sabotowania - dałeś mi do myślenia smile.gif

Dotpay też umożliwia wpłatę na konto za pomocą zwykłego przelewu. Więc nie możesz wykluczyć że płatność dostaniesz po 1-2 dniach.
markonix
Można ustawić, że akceptowane są tylko formy płatności w trybie on-line (przynajmniej da się tak w tPay, w DP pewnie też).
Poza tym DotPay pewnie też może wysyłać informacje o zainicjowanej płatności i jej rodzaju - to można uznać jako punkt początkowy dla owej rezerwacji.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.