Chuyện thường gặp
Khách chuyển tiền xong, anh chị gửi cho họ một đường dẫn Google Drive.
Tiện. Hai giây là xong.
Nhưng đường dẫn đó khách chuyển cho bạn bè được. Đăng lên nhóm được. Và anh chị không biết ai đã tải, tải bao nhiêu lần, từ đâu.
Một tháng sau, cái đường dẫn ấy nằm trong một nhóm Zalo bốn trăm người.
Thứ anh chị cần không phải phần mềm đắt tiền
Không cần mua hệ thống bảo vệ bản quyền. Chỉ cần làm đúng bốn nguyên tắc.
Một — việc kiểm tra "đã trả tiền chưa" phải chạy trên máy chủ. Không bao giờ chạy trên máy khách.
Hai — máy chủ phải kiểm đủ số tiền. Không chỉ kiểm "có giao dịch".
Ba — mỗi món một mã riêng, một khoá riêng. Lộ món này không mất món kia.
Bốn — có sổ ghi lại đơn đã mở. Để tuần sau khách tra lại mã vẫn lấy được hàng.
Bốn cái này miễn phí. Chỉ cần dựng đúng một lần.
Bước 1 — Đưa file hàng ra khỏi chỗ công khai
Trên hosting của anh chị có một thư mục chứa trang web. Thường tên là public_html hoặc www. Mọi thứ trong đó, ai có đường dẫn cũng mở được.
File hàng không được nằm trong đó.
Tạo một thư mục mới nằm ngoài thư mục web, ví dụ đặt tên kho-hang. Chuyển toàn bộ file sản phẩm vào đấy.
Từ giờ không ai gõ địa chỉ nào tới thẳng file được nữa. Muốn lấy hàng thì phải đi qua một cánh cửa do anh chị dựng.
Bước 2 — Dựng cánh cửa trên máy chủ
Cánh cửa này là một file duy nhất trên máy chủ. Nó làm đúng bốn việc, theo thứ tự:
Khách đưa mã đơn
↓
① Tra sổ: mã này có thật không?
↓
② Kiểm tiền: đã trả ĐỦ số tiền của món này chưa?
↓
③ Đọc file trong kho-hang (khách không thấy đường dẫn)
↓
④ Đẩy file về cho khách
Điểm mấu chốt: khách nhận được file nhưng không bao giờ nhìn thấy file nằm ở đâu. Họ chỉ thấy địa chỉ cánh cửa, không thấy địa chỉ kho.
Bước 3 — Nhờ máy viết cánh cửa
Dán nguyên đoạn này cho Claude:
📋 Câu lệnh — chép nguyên cả khối
Tôi bán sản phẩm số trên website chạy PHP. Khách chuyển khoản ngân hàng,
mỗi đơn có một mã đơn dạng: 3 chữ cái mã món + 5 ký tự ngẫu nhiên.
Hãy viết cho tôi một file PHP làm cửa giao hàng, chạy TRÊN MÁY CHỦ.
Nó phải làm đúng thứ tự:
1. Nhận mã đơn khách gửi lên
2. Tra trong sổ đơn hàng xem mã này có thật và đã ở trạng thái đã thanh toán chưa
3. So SỐ TIỀN đã nhận với giá của đúng món đó — thiếu tiền thì từ chối,
không được chỉ kiểm "có giao dịch"
4. Đọc file từ thư mục kho nằm NGOÀI thư mục web
5. Đẩy file về cho khách, KHÔNG để lộ đường dẫn thật của file
Bắt buộc:
- Mỗi món đọc khoá riêng, lấy từ file cấu hình ngoài thư mục web
- Không có bất kỳ khoá hay đường dẫn thật nào nằm trong mã trang
- Chặn người gõ bừa mã đơn: sai quá 5 lần thì tạm khoá theo địa chỉ mạng
- Ghi lại mỗi lần tải: thời gian, mã đơn, kết quả
Nói rõ bằng tiếng Việt tôi phải đặt file này ở đâu, đặt khoá ở đâu,
và tôi phải tự thay những thông tin gì trước khi dùng.
Chỗ nào nó bảo điền khoá, anh chị điền khoá của riêng mình. Đừng dùng khoá mẫu, đừng để khoá trong mã trang.
Bước 4 — Lập sổ đơn hàng
Sổ này là thứ khiến khách quay lại tuần sau vẫn lấy được hàng.
Mỗi đơn một dòng, đủ sáu cột:
| Mã đơn | Món | Số tiền đã nhận | Thời gian | Trạng thái | Số lần đã tải |
|---|---|---|---|---|---|
Sổ để trong cơ sở dữ liệu, hoặc một file nằm ngoài thư mục web. Không để trong thư mục web.
Có sổ này thì khách nhắn "em mất link rồi", anh chị bảo họ nhập lại mã đơn là xong. Không phải đi tìm file gửi tay.
Ba chỗ hay làm sai
Chỉ kiểm "có giao dịch" mà không kiểm đủ tiền. Khách chuyển 10 nghìn với đúng nội dung, máy thấy có tiền về, mở luôn món 5 triệu. Phải so đúng số tiền của đúng món.
Để khoá trong mã trang cho tiện. Mã trang ai cũng xem được. Khoá phải nằm ở file cấu hình ngoài thư mục web.
Dựng cửa xong quên dọn file cũ. File cũ vẫn nằm trong thư mục web từ hôm trước. Cửa mới khoá kỹ, đường cũ vẫn mở toang. Dựng xong phải quay lại xoá.
Sau bài này anh chị có gì
KHÁCH MÁY CHỦ CỦA ANH CHỊ
┌──────────────────────────────┐
nhập mã đơn ──────────→ │ ① tra sổ │
│ ② kiểm ĐỦ TIỀN │
│ ③ mở khoá riêng của món này │
nhận file ←────────── │ ④ đọc từ kho ngoài web │
└──────────────────────────────┘
│
[ kho-hang ] ← ngoài thư mục web
khách không thấy
Khách chỉ chạm được vào cánh cửa. Kho hàng nằm sau lưng cánh cửa đó, và họ không có địa chỉ của nó.
Bốn nguyên tắc trên áp cho mọi món hàng số anh chị bán về sau. Dựng đúng một lần, dùng mãi.