
門票表?ID產(chǎn)品名稱 價格
預訂信息表ID 下訂單的時間 出行時間 數(shù)量 總價 支付方式(微信支付、線下)手機號String num = "[1][35789]\\d{9}"?購買渠道
門票記錄表 記錄單筆交易門票的購買記錄 記錄交易的金額 時間等
客戶表ID 姓名 身份證號 手機號?用戶名 密碼
門票銷售表
門票退票表
門票購買和消費
本項目的官網(wǎng)提供游客的注冊和登錄
登錄后可以預訂門票
[if !vml]
[endif]
通過查詢數(shù)據(jù)庫,如果該手機號沒有在預訂表中,則可以進行預訂。
進入后端
如果選擇線下預訂,則在數(shù)據(jù)庫預訂表中插入該條訂單信息,前端頁面提示預訂成功,然后把訂單號返回給用戶,用戶憑借手機號和訂單號去景區(qū)預訂窗口取票。也可以在網(wǎng)站查詢自己的訂單信息。
如果選擇微信支付,則需要調(diào)用微信支付的接口。
點擊提交訂單按鈕后
1、首先是提交數(shù)據(jù)給微信,獲取預交易單,和用于生成支付二維碼的url。
把支付價格、appid、回調(diào)函數(shù)、等,放入sortedMap里,然后轉(zhuǎn)換(Set es = parameters.entrySet(); 遍歷獲取鍵值,湊)為xml類型的String字符串,然后利用HttpRequest的postData方法,參數(shù)為選定接口的網(wǎng)址,和剛才的String。返回也是xml格式的String,調(diào)用工具方法,生成Map,通過getKey獲取結(jié)果---一個預付款的Url,我們把這個url返回給前端。
2、此時彈出框中的圖片標簽的src為一個請求,參數(shù)帶上url,然后后端接收到這個請求根據(jù)這個url生成驗證碼圖片,以流的形式寫回。并開啟輪詢,發(fā)起驗證支付是否成功的請求,跳轉(zhuǎn)頁面。
3、用戶掃碼進行支付,支付后瀏覽器根據(jù)之前設置的回調(diào)函數(shù)返回,請求我們的后臺,通過簽名等驗證后,我們把xml格式的String轉(zhuǎn)換為map,然后讀出訂單的狀態(tài),并微信發(fā)送確認。此時如果支付成功,則我們獲取步驟1中存入session中的訂單實體類對象,然后將其寫入數(shù)據(jù)庫,在預訂表中插入一條數(shù)據(jù)。
4、當游客去現(xiàn)場取預約票時,工作人員根據(jù)游客提供的手機號(訂單號、身份證),查詢到預訂的信息,如果游客是付現(xiàn)金或者預付,取票的話就設置訂單狀態(tài)為已取票,并添加進銷售表中。如果游客選擇退票,則在退票表中,添加數(shù)據(jù)。
5.如果是新買票,則根據(jù)實際的購買情況,插入銷售表中。