Nhận Tiền Trong Ứng Dụng Của Bạn: Hướng Dẫn Đơn Giản Để Chấp Nhận Thanh Toán
Chấp nhận thanh toán trong một ứng dụng bạn xây dựng bằng AI nghĩa là kết nối với một nhà cung cấp như Stripe — nơi xử lý biểu mẫu thẻ và chuyển tiền — còn ứng dụng của bạn chỉ ghi lại đơn hàng và phản ứng khi thanh toán được xác nhận.
Có một khoảnh khắc rất cụ thể khi ứng dụng của bạn thôi là một dự án và trở thành một doanh nghiệp thực sự: lần đầu tiên có người trả tiền cho bạn qua đó. Đó cũng là khoảnh khắc một lỗi phần mềm không còn chỉ là chuyện xấu hổ, mà trở thành “bạn đã lấy tiền của tôi mà tôi chẳng nhận được gì.” Chấp nhận thanh toán là tính năng có rủi ro cao nhất mà hầu hết người xây dựng ứng dụng sẽ thêm vào, và tin tốt là những phần khó và đáng sợ nhất thực ra không phải do bạn xây dựng. Bạn chỉ cần kết nối chúng cho đúng và đừng bỏ qua những trường hợp tưởng chừng nhàm chán.
Đây là một hướng dẫn đơn giản về việc chấp nhận thanh toán trong một ứng dụng bạn xây dựng bằng AI — điều gì thực sự đang diễn ra bên dưới, ba điều thường sai, và một cách thiết lập để bắt đầu.
”Chấp nhận thanh toán” thực sự nghĩa là gì?
Chấp nhận thanh toán nghĩa là kết nối ứng dụng của bạn với một nhà cung cấp thanh toán — Stripe là cái tên hầu hết mọi người chọn, và đó là một lựa chọn mặc định ổn — thay vì tự mình xây dựng một hệ thống thanh toán. Đây là cách phân chia công việc, vì đây là điều dễ chịu nhất để hiểu:
Nhà cung cấp hiển thị biểu mẫu thẻ. Nhà cung cấp lấy số thẻ, kiểm tra nó, và chuyển tiền. Sau đó nhà cung cấp báo cho ứng dụng của bạn đúng một điều: “người này đã trả cho bạn $40.” Ứng dụng của bạn không bao giờ thấy số thẻ, không bao giờ lưu nó, không bao giờ chạm vào nó. Đó không phải là một giới hạn — đó chính là mấu chốt. Dữ liệu thẻ là một bãi mìn về pháp lý và bảo mật, và việc giữ nó hoàn toàn bên trong nhà cung cấp có nghĩa là bãi mìn đó là việc của họ, không phải của bạn. Nếu công cụ xây dựng của bạn từng đề nghị “lưu thẻ vào cơ sở dữ liệu của bạn,” câu trả lời luôn luôn là không.
Vì vậy, công việc thực sự của ứng dụng bạn trong một giao dịch thanh toán rất nhỏ: đưa khách hàng đến trang thanh toán của nhà cung cấp, rồi phản ứng đúng cách khi nhà cung cấp báo rằng tiền đã được chuyển thành công.
Nên chấp nhận thanh toán một lần hay đăng ký định kỳ trước?
Hãy bắt đầu với thanh toán một lần. Nó có cùng cơ chế kết nối cốt lõi như một gói đăng ký định kỳ nhưng không có bất kỳ trường hợp đặc biệt nào của việc lặp lại, và hầu hết các sản phẩm đầu tiên chỉ cần “trả một lần để nhận được thứ đó.” Hãy thêm các gói đăng ký sau, một cách có chủ đích, khi bạn thực sự có thứ gì đó xứng đáng để người ta trả tiền mỗi tháng.
Hai hình thức thanh toán này bao trùm gần như mọi trường hợp:
- Một khoản thu một lần — mua một tấm vé, một mẫu thiết kế, một buổi tư vấn riêng lẻ, một tài liệu hướng dẫn tải về. Tiền chuyển một lần, xong việc.
- Một gói đăng ký — một tư cách thành viên hàng tháng, một gói định kỳ. Tiền tự động chuyển mỗi tháng, nghĩa là bạn cũng đã đăng ký luôn cả “chuyện gì xảy ra khi thẻ của họ hết hạn,” “chuyện gì xảy ra khi họ hủy,” và “liệu khoản thanh toán tháng này có thực sự thành công hay không.”
Những lỗi thanh toán phổ biến nhất trong một ứng dụng xây bằng AI là gì?
Gần như mọi vấn đề thanh toán trong một ứng dụng xây bằng AI đều quy về ba lỗi: ứng dụng “quên” rằng một khoản thanh toán từng xảy ra, không có biên nhận nên khách hàng trả tiền hai lần, và chỉ kiểm thử luồng thu tiền thành công bằng tiền thật. Mỗi lỗi đi kèm một chỉ dẫn đơn giản mà bạn có thể dán thẳng vào công cụ xây dựng của mình.
1. Thanh toán thành công nhưng ứng dụng lại quên mất. Khách hàng trả tiền, tiền vào tài khoản nhà cung cấp của bạn — nhưng ứng dụng của bạn không có bất kỳ bản ghi nào về việc ai đã trả tiền cho cái gì. Một người tổ chức workshop đã bán 30 vé theo kiểu này và cuối cùng có tiền trong Stripe cùng một bảng tính với đúng không tên nào cả. Cô ấy hoàn toàn không biết phải cho ai vào cửa.
Cách khắc phục: ngay khi một khoản thanh toán được xác nhận, hãy lưu lại một bản ghi đơn hàng — ai đã trả, họ đã mua gì, bao nhiêu tiền, khi nào, và một trạng thái rõ ràng “đã thanh toán: có.” Hãy yêu cầu công cụ xây dựng của bạn: “Khi một khoản thanh toán thành công, hãy tạo một bản ghi đơn hàng gồm khách hàng, sản phẩm, số tiền, và trạng thái đã thanh toán. Dựa vào xác nhận thanh toán từ nhà cung cấp, không dựa vào việc khách hàng quay lại trang cảm ơn.” Phần cuối đó rất quan trọng — người dùng có thể đóng tab, mất kết nối, hoặc bấm hai lần. Tín hiệu đáng tin cậy cho biết tiền đã được chuyển là thông điệp mà nhà cung cấp gửi thẳng đến ứng dụng của bạn (một webhook), chứ không phải việc trình duyệt của khách hàng quay lại được màn hình thành công.
2. Không có biên nhận, nên họ trả tiền hai lần. Một người bấm thanh toán, thấy vòng xoay tải, không nhận được email, không có xác nhận, không có gì cả — nên họ nghĩ giao dịch thất bại và trả tiền lần nữa. Giờ bạn phải hoàn tiền cho một trong hai lần, và họ tin tưởng bạn ít hơn. Hãy yêu cầu công cụ xây dựng của bạn: “Ngay khi một khoản thanh toán được xử lý xong, hãy gửi một email xác nhận và hiển thị một màn hình rõ ràng cho biết họ đã thanh toán thành công và điều gì sẽ xảy ra tiếp theo.” Sự im lặng sau một khoản thanh toán là kiểu im lặng đắt giá nhất trong ứng dụng của bạn.
3. Kiểm thử bằng tiền thật. Đây là lỗi âm thầm khiến sản phẩm ra mắt trong tình trạng hỏng. Người xây dựng kiểm thử luồng thanh toán bằng cách tự mua sản phẩm của chính mình bằng thẻ của chính mình, thấy nó chạy được một lần, rồi coi như xong — mà không bao giờ kiểm tra chuyện gì xảy ra khi thẻ bị từ chối hoặc một khoản thanh toán được hoàn lại. Một ứng dụng đã đánh dấu đơn hàng “đã thanh toán” ngay cả khi thẻ bị từ chối, vì không ai kiểm thử luồng đó; khách hàng nhận được sản phẩm miễn phí và người sáng lập chỉ phát hiện ra vào cuối tháng.
Bạn không bao giờ cần tiền thật để kiểm thử chuyện này. Mọi nhà cung cấp đều có một chế độ thử nghiệm (test mode) với các số thẻ giả — bao gồm cả những số thẻ được thiết kế riêng để bị từ chối, để bạn thấy được ứng dụng của mình phản ứng ra sao. Hãy yêu cầu công cụ xây dựng của bạn: “Xây dựng và kiểm thử toàn bộ luồng thanh toán ở chế độ thử nghiệm trước. Xử lý cả trường hợp thẻ bị từ chối và trường hợp hoàn tiền, chứ không chỉ trường hợp thành công.” Chế độ thử nghiệm là tính năng bị bỏ quên nhiều nhất trong toàn bộ thế giới thanh toán.
Phần ít ai nhắc tới: giờ bạn chính là doanh nghiệp
Có hai điều mà mọi người thường quên. Thứ nhất, để thực sự nhận được tiền, nhà cung cấp cần thông tin thật của bạn — một tài khoản doanh nghiệp hoặc ngân hàng để chuyển tiền vào. Đó là một biểu mẫu bạn điền một lần, không phải thứ ứng dụng tự bịa ra. Thứ hai, thuế trên khoản bạn kiếm được là việc bạn phải tự lo, không phải việc của ứng dụng. Cả hai điều đều không khó; nhưng cả hai đều dễ khiến bạn bất ngờ nếu không ai nói thẳng ra từ đầu.
Nên xây dựng gì đầu tiên khi thêm tính năng thanh toán?
Hãy xây dựng đúng một thứ trước tiên: một sản phẩm, một mức giá, một khoản thanh toán một lần, ở chế độ thử nghiệm. Đừng vội với giỏ hàng, mã giảm giá, các gói bậc thang, hay các gói đăng ký cho đến khi luồng đó chạy trơn tru — tiền “chuyển đi,” một đơn hàng được ghi lại, một xác nhận hiện ra. Một luồng chạy được đó còn giá trị hơn một trang thanh toán đầy tính năng nhưng chưa từng sống sót qua một lần thẻ bị từ chối.
Sau đó, hãy chạy bài kiểm tra của “người lạ” hai lần. Đầu tiên, thanh toán ở chế độ thử nghiệm bằng một số thẻ được thiết kế để bị từ chối — ứng dụng của bạn có nói thật không (“giao dịch không thành công”), hay nó nói dối và đánh dấu đơn hàng là đã thanh toán? Sau đó thực hiện một giao dịch thử nghiệm thành công — bạn có nhận được một bản ghi đơn hàng và một xác nhận mà bạn sẽ tin tưởng nếu bạn là khách hàng không?
Chấp nhận thanh toán nghe có vẻ là tính năng đáng sợ nhất bạn sẽ thêm vào, nhưng thực chất đó chỉ là một công việc kết nối với ba kiểu lỗi thường gặp, cùng một chế độ thử nghiệm cho phép bạn diễn tập tất cả những kiểu lỗi đó hoàn toàn miễn phí. Hãy chọn ra một thứ đáng để người ta trả tiền, kết nối một luồng thanh toán duy nhất ở chế độ thử nghiệm, và cho một giao dịch giả chạy trọn vẹn từ đầu đến cuối — kể cả trường hợp thẻ bị từ chối — trước khi một chiếc thẻ thật chạm vào nó. Đó là toàn bộ công việc đầu tiên cần làm.