Nguồn: Stripe Engineering Blog
Tóm tắt
Bài viết này là hành trình 10 năm thiết kế API thanh toán của Stripe — từ những dòng curl đơn giản ban đầu đến hệ thống PaymentIntents phức tạp hỗ trợ đa phương thức và xác thực 3D Secure. Điểm khởi đầu là API Charge ra mắt năm 2011, chỉ cần khoảng 7 dòng curl để tạo một giao dịch thẻ tín dụng thành công — điều này trở thành một meme văn hóa của Stripe.
Theo thời gian, mỗi yêu cầu mới (hỗ trợ nhiều quốc gia, nhiều loại thẻ, quy định SCA tại EU, ví điện tử) buộc Stripe phải tích lũy “product debt” — tương tự kỹ thuật debt nhưng trên tầng API. Vì API phải đảm bảo backwards compatibility, mỗi quyết định thiết kế sẽ ảnh hưởng đến người dùng trong nhiều năm tiếp theo.
Điểm bước ngoặt lớn là sự ra đời của PaymentIntents API — một mô hình đa giai đoạn mô phỏng vòng đời thực của một thanh toán (tạo → xác nhận → xác thực → hoàn thành). Thay vì gọi trực tiếp create Charge, developer tạo một PaymentIntent biểu diễn ý định thanh toán, sau đó hệ thống tự điều phối các bước tiếp theo tùy theo phương thức và quốc gia.
Bài viết cũng chia sẻ những framework tư duy về API design: “ít tham số hơn là tốt hơn”, “tên resource phải phản ánh domain model chứ không phải implementation”, và tầm quan trọng của việc thiết kế API để có thể mở rộng mà không cần breaking change. Đây là một case study quý giá về long-term API evolution trong hệ thống tài chính.