Bỏ qua điều hướng
HEAD Capital Project

How — Đường đi của một đồng hoàn tiền

Cập nhật lần cuối: 03/08/20268 phút đọc

Câu hỏi trang này trả lời: một đồng đi từ đâu tới đâu, hệ thống chặn gian lận bằng gì, doanh thu ở đâu, và tuân thủ ra sao.


Đường đi đầy đủ, cả hai nguồn

Sơ đồ: Hai nguồn tiền vào hội tụ về cùng một sổ cái append-only; số dư luôn là tổng của sổ, và tỷ giá bị đóng băng tại thời điểm chi tiền.

Ba điểm cần đọc kỹ trong sơ đồ:

  1. Cửa sổ đổi trả tra từ cấu hình cửa hàng trong hệ thống, không lấy từ dữ liệu đối tác gửi tới. Nếu lấy từ dữ liệu gửi tới, bên gửi sẽ tự quyết được khi nào tiền của người dùng chín.
  2. Ghi lượt bấm là bắn-và-quên — không chặn phản hồi cho người dùng, vì đây là bảng ghi nhiều nhất trong hệ.
  3. Không có mũi tên nào quay ngược vào sổ để sửa. Đảo một khoản là thêm một bút toán mới.

Sổ cái: bốn luật đường tiền

LuậtNội dungVấn đề nó chặn
So-sánh-rồi-đặt trong giao dịchKhông hành động dựa trên bản chụp đã đọc. Cập nhật phải kèm điều kiện trạng thái kỳ vọng, rồi kiểm xem có dòng nào bị ảnh hưởng không — không có thì bỏ quaTải gộp trên đường tiền nới cửa sổ tranh chấp lên khoảng nghìn lần và gây chi trả hai lần
Khoá chống lặp CHUNG cho các đường đối nghịch"Ghi có" và "thu hồi" dùng chung một khoáKhoá riêng nghĩa là chúng không chặn được nhau
Bất biến phải đến từ hai nguồn độc lậpTổng nợ bằng tổng có, cộng phép thử ngược, cộng tự gỡ hàng rào xem kiểm thử có đỏ khôngBất biến lấy từ cùng một biến thì không bao giờ sai — một lời nói dối tự đồng ý
Rà soát an ninh chạy độc lậpBắt buộc cho mọi việc chạm sổ cái, chi trả, đăng nhậpTự rà soát đã từng bỏ sót lỗi chặn thật

Luật thứ ba là câu về phương pháp, không phải về mã, và nó được dùng như một phép thử chung cho toàn dự án:

Một kiểm thử không đỏ lên khi bạn gỡ bỏ chính hàng rào mà nó nói là đang canh thì đó là một kiểm thử rỗng.

Hiện có 148 hàng rào loại này chạy trực tiếp trên cơ sở dữ liệu, kiểm rằng các ràng buộc thật sự tồn tại và thật sự chặn.


Chống gian lận: có từ mốc đầu, không phải mốc cuối

Rủi roBiện phápTrạng thái
Dùng lại một hoá đơn nhiều lần hoặc trên nhiều tài khoảnDấu vân ảnh + ràng buộc duy nhất trên bộ ba cửa hàng · tổng tiền · ngày✅ Đang chạy
Vòng tự giới thiệu — tự mời chính mình qua tài khoản phụPhát hiện chu trình trong đồ thị giới thiệu✅ Đang chạy
Trại tài khoản ảoDấu vân thiết bị lúc đăng ký✅ Đang chạy
Báo về bị gửi lặp từ đối tácKhoá chống lặp bắt buộc trên mọi báo về; gửi lại đúng báo cáo đó chỉ ghi có một lần✅ Có, và được chứng minh bằng kiểm thử ép lặp thật
Rút vượt số dưSố dư là tổng của sổ, không phải một cột có thể lệch

Lý do đặt tất cả ở mốc đầu được ghi thẳng: bị lạm dụng rồi mới làm thì dữ liệu đã bẩn, không dọn được — và vì sổ là append-only, bạn cũng không được phép xoá chúng đi cho gọn.


Kiến trúc: một khối, ba điểm cắm

Thành phầnViệc
Ứng dụng webGiao diện người dùng và quản trị + các đường API
Tiến trình nềnHàng đợi, việc chạy theo lịch, đối soát — tách khỏi web ngay từ đầu vì nhận báo về không được chạy trong chu kỳ xử lý yêu cầu
Gói dữ liệuLược đồ và di trú — một nguồn sự thật duy nhất
Gói miền nghiệp vụSổ cái, hạng, giới thiệu, luật hoàn tiền
Gói tích hợpBa điểm cắm

Ba điểm cắm và lý do tồn tại: nguồn hoàn tiền (liên kết · hoá đơn · thẻ) · bộ chuyển đổi mạng (khu vực, mạng) · nhà cung cấp chi trả (khu vực, kênh). Phần lõi chỉ thấy một hình dạng chung; mỗi bộ chuyển đổi tự lo định dạng riêng của nó. Thêm một mạng, một kênh rút hay một thị trường là thêm file.

Bảng lượt bấm được tách riêng: chỉ ghi thêm · chia mảnh theo tháng · không khoá ngoại, không nối bảng trong đường nóng · quyền ghi cài ở tầng cơ sở dữ liệu chứ không dựa vào mã ứng dụng nhớ làm đúng.


Mô hình doanh thu

Sơ đồ: Doanh thu là phần giữ lại từ hoa hồng, nên tỷ lệ hoàn tiền không bao giờ vượt được hoa hồng nhận về.

NguồnCơ chếGiai đoạn
Giữ lại một phần hoa hồng liên kếtNguồn chínhKhi mạng đối tác duyệt
Hợp tác thương hiệu / chiến dịchCửa hàng trả để được đẩy trong danh mục — phải có nhãnSau
Thẻ liên kếtChia doanh thu với tổ chức thẻCần hợp đồng

Ba ràng buộc được ghi trước: tỷ lệ hoàn tiền không thể cao hơn hoa hồng nhận về — hứa cao hơn nghĩa là trợ giá bằng vốn · giới thiệu tối đa hai tầng, không có chuỗi đa cấp · và hiện tại nền tảng chưa có doanh thu từ liên kết, vì chưa mạng nào duyệt hồ sơ.


Tuân thủ và vận hành

Lĩnh vựcCách làm
Bảo vệ sổ cáiChặn sửa · xoá · xoá sạch bảng ở tầng cơ sở dữ liệu, đối với mọi vai kể cả vai chủ sở hữu. Không có đường vòng cho quản trị viên
Đăng nhậpMật khẩu + mã một lần qua điện thoại + xác thực hai lớp
Chi tiền raHiện duyệt tay — tự động hoá chi tiền trước khi có đối tác thanh toán chính thức là chỗ dễ mất tiền nhất
Tỷ giáSống cho hiển thị, đóng băng tại thời điểm chi trả
Giao diệnBố cục phải-sang-trái bắt buộc ở tầng quy ước — cấm dùng thuộc tính cố định trái/phải · vùng chạm tối thiểu cho hành động chính · màu không được là kênh thông tin duy nhất · chữ phóng 1,25× ở màn hẹp không được vỡ · mọi màn có dữ liệu phải có đủ ba trạng thái đang tải · rỗng · lỗi
Khả năng tiếp cậnKiểm tự động đạt 0 vi phạm trên 7 màn
Khôi phục sau sự cốCó quy trình riêng được viết thành tài liệu

Nợ tuân thủ được ghi tên, không giấu: bảng lượt bấm có gắn định danh người dùng · bản chụp yêu cầu từ đối tác là bắt buộc và bị đóng băng · ứng dụng không có đường xoá dữ liệu. Đây là mâu thuẫn thật giữa sổ không sửa đượcquyền được xoá, và nó cần một quyết định chính sách — đã được đánh dấu là điều kiện phải xử lý trước khi mở rộng.


Một luật vận hành đắt giá

Được ghi bằng chữ in đậm trong tài liệu dự án, vì đã có tiền lệ phải huỷ cả một cơ sở dữ liệu:

Phép thử phá hoại trên đường tiền — loại cố ý gỡ hàng rào để xem kiểm thử có đỏ không — CHỈ chạy trên cơ sở dữ liệu nháp dùng một lần, tạo mới rồi xoá sạch. KHÔNG BAO GIỜ trên cơ sở dữ liệu phát triển hay dùng chung.

Cùng nhóm còn có: di trú lược đồ phải là mã lệnh được rà bằng mắt và áp bằng công cụ dừng-ngay-khi-lỗi — chế độ đồng bộ tự động bị cấm vì nó nuốt lỗi rồi thoát ra im lặng, tức là hỏng theo kiểu tệ nhất: không ai biết.


Câu chốt: cách vận hành của 9Cashback quy về một câu: mọi thứ chạm vào tiền đều phải để lại dấu vết không xoá được, và mọi hàng rào đều phải chứng minh được là nó thật sự chặn — bằng cách tự gỡ nó ra xem kiểm thử có đỏ lên không.

How — Đường đi của một đồng hoàn tiền — HEAD Capital Project