Giá Cước Phiên Sử Dụng
HandyCafe sử dụng một cơ chế định giá theo phân đoạn để tính toán chi phí phiên sử dụng trong quán net hoặc trung tâm game của bạn. Thay vì áp dụng một mức giá cố định cho toàn bộ phiên, hệ thống chia mỗi phiên thành các phân đoạn, mỗi phân đoạn có ngữ cảnh giá riêng. Cách tiếp cận này đảm bảo tính toán chính xác ngay cả khi các phiên kéo dài qua nhiều khung giờ, thay đổi giá, tạm dừng hoặc mất kết nối.
Khái Niệm Cốt Lõi
Trước khi đi vào chi tiết, đây là các thuật ngữ chính:
| Thuật ngữ | Định nghĩa |
|---|---|
| Giá cơ bản theo giờ | Giá mỗi giờ trước khi áp dụng bất kỳ hệ số nhân nào. Được thiết lập trong Cài đặt > Giá Cước. |
| Khung giá | Một khoảng thời gian có tên với một hệ số nhân cụ thể. Có 8 khung, mỗi khung được mã hóa màu sắc. |
| Hệ số nhân | Một hệ số được áp dụng cho giá cơ bản. 1.0 = giá tiêu chuẩn, 0.5 = nửa giá, 2.0 = gấp đôi giá. |
| Phân đoạn | Một khoảng thời gian liên tục trong một phiên mà ngữ cảnh giá (khung, hệ số nhân, giá cơ bản) không thay đổi. |
| Thanh toán | Tính toán cuối cùng xác định số tiền khách hàng phải trả khi kết thúc phiên. |
Giá Cơ Bản Theo Giờ
Giá cơ bản theo giờ là nền tảng của tất cả các tính toán giá. Nó được thiết lập trong Cài đặt > Giá Cước và đại diện cho giá tiêu chuẩn mỗi giờ sử dụng PC.
Tất cả các tính toán nội bộ sử dụng đơn vị tiền tệ nhỏ (ví dụ, cent cho USD, kuruş cho TRY). Nếu giá cơ bản của bạn là $3.00 mỗi giờ, giá trị nội bộ là 300. Điều này loại bỏ các vấn đề làm tròn số thập phân.
Hỗ Trợ Hai Loại Tiền Tệ
HandyCafe hỗ trợ một loại tiền cơ bản và một loại tiền địa phương với tỷ giá hối đoái (FX). Nếu bạn hoạt động ở một quốc gia mà giá quốc tế khác với giá địa phương:
- Tiền cơ bản. Loại tiền được sử dụng cho các tính toán giá nội bộ.
- Tiền địa phương. Loại tiền hiển thị cho khách hàng và sử dụng để thanh toán.
- Tỷ giá FX. Hệ số chuyển đổi giữa tiền cơ bản và tiền địa phương.
Nếu cả hai loại tiền là như nhau, tỷ giá FX được coi là 1.0 và không có tác dụng.
Khung Giá
Có 8 khung giá mã hóa màu, mỗi khung đại diện cho một mức giá khác nhau:
| Khung | Màu sắc | Sử dụng thông thường |
|---|---|---|
| Xanh dương | Xanh dương | Giá tiêu chuẩn |
| Cam | Cam | Phụ phí buổi tối hoặc cuối tuần |
| Đỏ | Đỏ | Phí cao điểm |
| Xanh lá | Xanh lá | Giảm giá ngoài giờ cao điểm |
| Xanh ngọc | Xanh ngọc | Giá cho sinh viên hoặc thành viên |
| Xám | Xám | Giá ngày lễ hoặc đặc biệt |
| Xanh lơ | Xanh lơ | Giá ban đêm |
| Ngọc lục bảo | Ngọc lục bảo | Giá khuyến mãi |
Mỗi khung có ba thuộc tính:
- Tên. Một nhãn mô tả (ví dụ, "Giờ Cao Điểm" hoặc "Giảm Giá Ban Đêm").
- Hệ số nhân. Một giá trị thập phân điều chỉnh giá cơ bản. Các giá trị phổ biến bao gồm 1.0 (tiêu chuẩn), 0.5 (nửa giá), 1.5 (phụ phí 50%), 2.0 (gấp đôi giá). Hệ số nhân phải là số không hoặc dương.
- Dữ liệu lịch trình. Một biểu diễn nội bộ xác định giờ nào của ngày nào khung áp dụng. Điều này được quản lý tự động thông qua lưới lịch trình.
Các khung có thể được bật hoặc tắt riêng lẻ. Các khung bị tắt sẽ bị bỏ qua bởi hệ thống định giá.
Lưới Lịch Trình
Lịch trình giá là một ma trận 7 ngày x 24 giờ (tổng cộng 168 khối một giờ). Mỗi khối được gán cho một khung giá. Lịch trình xác định hệ số nhân nào áp dụng tại bất kỳ thời điểm nào.
Lưới được cấu hình trong Cài đặt > Lịch Trình Giá Cước. Ngày chạy từ Thứ Hai đến Chủ Nhật và giờ chạy từ 00:00 đến 23:00. Để gán một khung cho một khối thời gian, chọn khối trong lưới và chọn màu khung mong muốn.
Cách Hệ Thống Đọc Lịch Trình
Nội bộ, mỗi khối giờ ánh xạ đến một vị trí trong dữ liệu lịch trình. Hệ thống kiểm tra dữ liệu lịch trình của từng khung đã bật để xác định khung nào đang hoạt động cho bất kỳ ngày và giờ nào.
Nếu không có khung nào có bit được đặt cho một giờ nhất định, hệ thống sẽ quay lại giá cơ bản với hệ số nhân 1.0.
Khi tính năng lịch trình giá bị tắt hoàn toàn (trong Cài đặt > Giá Cước), tất cả các phiên sử dụng giá cơ bản với hệ số nhân 1.0 bất kể thời gian.
Phân Đoạn Giá
Một phân đoạn là một khoảng thời gian liên tục trong một phiên mà ngữ cảnh giá không thay đổi. Hệ thống định giá tạo ra một phân đoạn mới bất cứ khi nào xảy ra bất kỳ sự kiện ranh giới nào sau đây:
| Ranh giới | Kích hoạt |
|---|---|
| session_start | Một phiên mới bắt đầu |
| session_stop | Phiên bị dừng |
| pause | Thu ngân tạm dừng phiên |
| resume | Thu ngân tiếp tục một phiên bị tạm dừng |
| tick | Đồng hồ vượt qua ranh giới giờ vào một khung giá khác |
| disconnect | PC khách mất kết nối mạng |
| offline | PC khách ngoại tuyến |
| load_recovery | Máy chủ khởi động lại và khôi phục một phiên đang chạy |
Mỗi phân đoạn ghi lại:
| Trường | Mô tả |
|---|---|
| session_id | Phiên mà phân đoạn này thuộc về |
| segment_start | Dấu thời gian Unix khi phân đoạn bắt đầu |
| segment_end | Dấu thời gian Unix khi phân đoạn kết thúc (null nếu vẫn mở) |
| pricing_slot_id | ID của khung giá đang hoạt động (ví dụ, "blue", "red", hoặc "base") |
| multiplier | Giá trị hệ số nhân từ khung giá |
| base_price_snapshot | Giá cơ bản theo giờ được chụp tại thời điểm phân đoạn mở |
| amount | Chi phí được tính toán cho phân đoạn này (được đặt khi phân đoạn đóng) |
| boundary_reason | Lý do tại sao phân đoạn này được tạo |
Tại Sao Phải Chụp Giá Cơ Bản?
base_price_snapshot chụp giá cơ bản theo giờ tại thời điểm chính xác khi phân đoạn mở. Điều này rất quan trọng vì quản trị viên có thể thay đổi giá cơ bản giữa phiên. Bằng cách chụp lại, mỗi phân đoạn sử dụng giá có hiệu lực khi nó bắt đầu, đảm bảo tính toán công bằng và có thể kiểm tra.
Công Thức Tính Chi Phí
Chi phí của một phân đoạn đơn lẻ được tính như sau:
amount = ceil( (base_price_snapshot * multiplier * duration_seconds) / 3600 )
Chính xác hơn, hệ thống sử dụng số học nguyên mở rộng để tránh lỗi số thập phân:
- Hệ số nhân được mở rộng thành số nguyên cố định (nhân với 1,000,000).
- Tính toán được thực hiện hoàn toàn trong số nguyên 128-bit.
- Phép chia làm tròn lên được sử dụng. Kết quả luôn làm tròn lên đến đơn vị nhỏ tiếp theo.
Tính Toán Theo Phút
Nếu tùy chọn "tính toán theo phút" được bật trong Cài đặt > Giá Cước, công thức thay đổi một chút:
amount = ceil( (base_price_snapshot * multiplier * used_minutes) / 60 )
Trong đó used_minutes = ceil(duration_seconds / 60). Điều này có nghĩa là bất kỳ phút lẻ nào cũng được tính là một phút đầy đủ.
Tính Tổng Chi Phí Phiên
Tổng chi phí phiên được tính toán qua ba bước:
Bước 1: Tổng Hợp Tất Cả Các Phân Đoạn
raw_total = tổng của tất cả các số tiền phân đoạn đã đóng + số tiền phân đoạn mở tạm thời
Số tiền phân đoạn mở tạm thời được tính toán theo thời gian thực bằng công thức trên với dấu thời gian hiện tại làm điểm kết thúc phân đoạn.
Bước 2: Áp Dụng Làm Tròn
rounded_total = làm tròn lên(raw_total, bước làm tròn)
Làm tròn luôn lên (làm tròn lên) để bảo vệ doanh thu. Bước làm tròn có thể cấu hình trong Cài đặt > Giá Cước. Ví dụ, nếu bước làm tròn là 50 (đại diện cho $0.50 trong một loại tiền có 2 chữ số thập phân), tổng thô $3.27 sẽ làm tròn lên $3.50.
Bước 3: Áp Dụng Phí Khởi Động Tối Thiểu
final_total = max(rounded_total, startup_fee)
Phí khởi động là mức phí tối thiểu cho bất kỳ phiên nào, bất kể thời lượng. Nếu tổng đã làm tròn nhỏ hơn phí khởi động, phí khởi động sẽ được tính thay thế.
Thanh Toán
Thanh toán là quá trình hoàn tất việc tính toán chi phí cho một phiên. Có hai giai đoạn thanh toán:
Thanh Toán Bắt Đầu (Chỉ Trả Trước)
Khi một phiên trả trước bắt đầu, một bản ghi "bắt đầu" thanh toán được tạo. Điều này ghi lại:
- Chi phí tính toán. Chi phí do hệ thống tính toán cho thời gian đã mua.
- Số tiền đã tính. Số tiền khách hàng thực sự đã trả (thường giống với chi phí tính toán).
Đối với chế độ trả trước "Khóa khi Mua", số tiền khóa này xác định chi phí của phiên bất kể thay đổi giá trong suốt phiên.
Thanh Toán Kết Thúc
Khi bất kỳ phiên nào (trả trước hoặc trả sau) bị dừng, một bản ghi "kết thúc" thanh toán được tạo:
| Trường | Mô tả |
|---|---|
| Chi phí tính toán | Tổng số do hệ thống tính toán từ tất cả các phân đoạn giá |
| Số tiền đã tính | Số tiền thực sự đã tính (mặc định là chi phí tính toán) |
| Số tiền điều chỉnh thủ công | Nếu thu ngân điều chỉnh giá thủ công, chi phí tính toán gốc được lưu giữ ở đây |
| Tỷ lệ hoa hồng | Tỷ lệ hoa hồng phương thức thanh toán (dưới dạng phần trăm) |
| phí hoa hồng | Số tiền hoa hồng được tính toán |
| phí cố định | Phí cố định phương thức thanh toán |
| computed_timeline_snapshot | Một bản ghi JSON của mọi phân đoạn giá trong phiên |
Bản chụp dòng thời gian cung cấp một dấu vết kiểm toán hoàn chỉnh cho thấy chính xác cách chi phí được tính toán, từng phân đoạn một.
Phí Phương Thức Thanh Toán
Mỗi phương thức thanh toán có thể có hai loại phí:
Hoa Hồng (Điểm Cơ Bản)
Tỷ lệ hoa hồng được biểu thị dưới dạng phần trăm. Phí hoa hồng được tính bằng cách áp dụng tỷ lệ này cho số tiền đã tính.
Ví dụ: Nếu số tiền đã tính là $10.00 (1000 đơn vị nhỏ) và phương thức thanh toán có tỷ lệ hoa hồng 2.5%, phí hoa hồng là $0.25 (25 đơn vị nhỏ).
Phí Cố Định
Một khoản phí cố định được khấu trừ cho mỗi giao dịch, bất kể số tiền. Ví dụ, phí xử lý thẻ tín dụng là $0.30.
Cả hai loại phí đều mang tính thông tin. Chúng đại diện cho chi phí của doanh nghiệp khi chấp nhận phương thức thanh toán đó. Chúng được ghi lại trong thanh toán nhưng không được thêm vào hóa đơn của khách hàng.
VAT (Thuế Giá Trị Gia Tăng)
VAT được cấu hình dưới dạng phần trăm (0--100%) trong Cài đặt > Giá Cước. Nó được áp dụng trên tổng số tiền phiên đã tính toán:
VAT = số tiền đã tính x (tỷ lệ VAT / 100)
Số tiền VAT được hiển thị riêng trong hộp thoại thanh toán để thu ngân có thể thấy sự phân tích thuế.
Chế Độ Giá Trả Trước
Như đã mô tả trong Quản Lý Phiên, các phiên trả trước hỗ trợ hai chế độ giá:
Khóa khi Mua
Khi một phiên trả trước bắt đầu, thanh toán "bắt đầu" khóa số tiền đã tính. Trong suốt thời gian của phiên:
- Thời gian kết thúc phiên được cố định dựa trên số phút đã mua.
- Ngay cả khi lịch trình giá thay đổi, phiên vẫn tiếp tục cho đến khi thời gian khóa hết hạn.
- Thanh toán kết thúc sử dụng số tiền khóa từ thanh toán bắt đầu.
Lịch Trình Trực Tiếp
Thời gian còn lại của phiên được tính toán lại liên tục khi các khung giá thay đổi:
- Nếu phiên vào một khung giá rẻ hơn, thời gian còn lại kéo dài (khách hàng nhận được nhiều phút hơn cho số tiền của họ).
- Nếu phiên vào một khung giá đắt hơn, thời gian còn lại thu hẹp lại.
- Thanh toán kết thúc phản ánh giá thực tế áp dụng trong suốt phiên.
Số Chữ Số Thập Phân
Số chữ số thập phân được sử dụng để hiển thị tiền tệ có thể cấu hình (2--4 chữ số thập phân). Điều này ảnh hưởng đến cách số tiền được hiển thị trong giao diện người dùng nhưng không thay đổi các tính toán đơn vị nhỏ nội bộ.
Ví dụ: Với 2 chữ số thập phân, $3.50 được hiển thị là "3.50". Với 3 chữ số thập phân, nó sẽ hiển thị là "3.500".
Ví Dụ Thực Tế
Ví Dụ 1: Phiên Trả Sau Đơn Giản
- Giá cơ bản: $3.00/giờ (300 đơn vị nhỏ)
- Lịch trình: Khung tiêu chuẩn (hệ số nhân 1.0) cả ngày
- Phiên: 10:00 sáng đến 11:30 sáng (90 phút)
- Phí khởi động: $0.50
Tính toán:
Phân đoạn 1: (300 * 1.0 * 5400) / 3600 = 450 đơn vị nhỏ ($4.50)
Tổng: max($4.50, $0.50) = $4.50
Ví Dụ 2: Phiên Kéo Dài Qua Hai Khung
- Giá cơ bản: $4.00/giờ (400 đơn vị nhỏ)
- Lịch trình: Tiêu chuẩn (1.0) từ 10:00--12:00, Giờ Vui Vẻ (0.5) từ 12:00--14:00
- Phiên: 11:00 sáng đến 1:00 chiều (120 phút)
- Phí khởi động: $1.00
Tính toán:
Phân đoạn 1 (11:00-12:00, tiêu chuẩn): (400 * 1.0 * 3600) / 3600 = 400 ($4.00)
Phân đoạn 2 (12:00-13:00, giờ vui vẻ): (400 * 0.5 * 3600) / 3600 = 200 ($2.00)
Tổng: $4.00 + $2.00 = $6.00
Cuối cùng: max($6.00, $1.00) = $6.00
Ví Dụ 3: Phiên Có Tạm Dừng
- Giá cơ bản: $2.00/giờ (200 đơn vị nhỏ)
- Lịch trình: Khung tiêu chuẩn (hệ số nhân 1.0) cả ngày
- Phiên: Bắt đầu 10:00, Tạm dừng 10:30, Tiếp tục 11:00, Dừng 11:45
- Phí khởi động: $0.50
Tính toán:
Phân đoạn 1 (10:00-10:30, hoạt động): (200 * 1.0 * 1800) / 3600 = 100 ($1.00)
Thời gian tạm dừng (10:30-11:00): không tính phí
Phân đoạn 2 (11:00-11:45, hoạt động): (200 * 1.0 * 2700) / 3600 = 150 ($1.50)
Tổng: $1.00 + $1.50 = $2.50
Cuối cùng: max($2.50, $0.50) = $2.50
Bước Tiếp Theo
- Quản Lý Phiên: Tìm hiểu vòng đời phiên đầy đủ
- Cài Đặt: Giá Cước: Cấu hình giá cơ bản, làm tròn và phí khởi động
- Cài Đặt: Lịch Trình Giá Cước: Thiết lập lưới lịch trình 7x24
- Phương Thức Thanh Toán: Cấu hình phương thức thanh toán với hoa hồng và phí