Hướng dẫn · Nhận tiền tự động
Khách quét mã QR đã điền sẵn số tiền và nội dung. Tiền về thẳng tài khoản ngân hàng của bạn, không qua trung gian. Bảng đơn tự chuyển sang “Đã thanh toán”.
Bạn chỉ phải tự tay đúng 2 việc — nối ngân hàng (cần OTP) và khai báo webhook. Phần còn lại: điền 6 ô một lần, dán khối lệnh, máy làm hết.
Ngân hàng chỉ báo cho SePay ba thứ: số tiền, thời gian, và nội dung. Không có tên khách, không có mã đơn. Vậy nên nội dung phải mang một thứ nhận ra được khách là ai.
Dùng thẳng số điện thoại khách là gọn nhất — vốn đã là thứ khách điền vào form, không phải nghĩ thêm mã mới, khách nhìn vào cũng hiểu, và không ai gõ nhầm được vì nó nằm sẵn trong mã QR.
Khách xoá dòng nội dung đó là hệ thống mù. Tiền vẫn về tài khoản bình thường, chỉ là bảng không tự đánh dấu được. Vì thế mã QR phải điền sẵn nội dung — đừng bao giờ bắt khách tự gõ.
DH123, cũng không cần tiền tố. Nội dung chuyển khoản chỉ là số điện thoại. Ngân hàng đôi khi chèn thêm số tham chiếu của họ vào nội dung, nên máy không đoán theo khuôn mà lấy mọi cụm 9–11 chữ số rồi đối chiếu ngược với danh sách số điện thoại đang có trong bảng đơn — chỉ khớp khi trúng đúng một đơn. Cách này chắc hơn bắt theo tiền tố.
Khoảng 15 phút, cầm sẵn điện thoại để nhận OTP. Đây là bước không ai làm hộ được, vì ngân hàng bắt buộc chính chủ xác thực.
Số tài khoản · tên chủ tài khoản đúng như trên ngân hàng · số điện thoại đã đăng ký với ngân hàng · tên đăng nhập app ngân hàng. Tài khoản công ty thì dùng app doanh nghiệp.
Miễn phí. Dùng email bạn hay mở, vì SePay gửi cảnh báo về đây khi hệ thống trục trặc.
Chọn đúng tab Cá nhân hay Doanh nghiệp theo loại tài khoản. Mã về điện thoại, hoặc phải duyệt trong app ngân hàng.
Tự chuyển 2.000đ vào chính tài khoản đó. SePay hiện giao dịch trong vài giây là xong. Không hiện thì dừng lại, đừng làm tiếp — mọi bước sau đều dựa trên bước này.
Sáu ô này nuôi cả mã QR bên dưới lẫn khối lệnh ở mục 04. Điền một lần, không phải nhập lại chỗ nào nữa.
ACB · VCB · TCB · MB · BIDV… Sai tên thì ô QR bên dưới báo ngay.
?table=tbl… — đó chính là thứ chỉ đúng bảng. Copy khi đang đứng ở bảng khác là máy đi vào nhầm chỗ. Trang chỉ đọc chuỗi link để soi giúp bạn, không gọi sang Lark (Lark chặn trình duyệt gọi API của họ — em đã đo).
Điền số tài khoản và ngân hàng để xem mã QR thật.
Quét thử bằng app ngân hàng để chắc chắn đúng tài khoản — nhưng đừng bấm chuyển. Số tiền và nội dung đã nằm sẵn trong mã, khách không phải gõ nên không gõ sai được.
Sao chép, dán vào Claude Code. Nó làm sáu việc rồi trả cho bạn đúng hai giá trị để mang sang SePay ở mục 05.
| Máy làm | Thay cho việc gì |
|---|---|
| Sinh khoá bí mật | Bạn không phải nghĩ ra chuỗi ngẫu nhiên, cũng không phải sợ nó lọt vào khung chat. |
| Dựng địa chỉ nhận tin | Toàn bộ phần lập trình webhook, gồm 6 lớp chống hớ. |
| Gắn QR vào trang bán hàng | Sửa thẳng trang, sinh mã QR theo từng đơn và ghi đơn vào bảng — không phải dán tay chỗ nào. |
| Nối vào bảng có sẵn | Bóc base_token + table_id thẳng từ link bạn dán, đi đúng bảng đó và chỉ bổ sung cột còn thiếu — không đụng cột sẵn có. Chưa có bảng thì dựng mới đúng cấu trúc 9 cột. |
| Chạy thử 3 lượt | Chứng minh khoá chặn được người lạ, trước khi mở bán. |
| In sẵn URL + API Key | Không phải mở file .env — hai giá trị hiện thẳng ở cuối, chép từ màn hình sang SePay là xong. |
Chưa điền ô nào — khối lệnh đang ở dạng mẫu.
Khoảng 3 phút. Claude vừa in sẵn khối DÁN VÀO SEPAY gồm URL và API Key — để nguyên cửa sổ đó rồi chép sang, không phải mở file nào.
Bước 1 của form: tên đặt gì cũng được, Sự kiện chọn Có tiền vào, URL dán địa chỉ Claude đưa.
Ô lọc theo tài khoản ảo (VA) hay tiền tố mã thanh toán thì bỏ trống, vì mình đối chiếu bằng nội dung chuyển khoản.
Chép dòng API Key trong khối Claude vừa in. Chép, đừng gõ tay — sai một ký tự là SePay bắn tin sang mà bị từ chối, im lặng, không ai biết cho tới lúc khách kêu.
Chọn email hoặc Telegram để SePay báo khi webhook lỗi. Bật đi — đây là thứ cho bạn biết hệ thống chết trước khi khách phát hiện.
.env, nhưng nếu bạn chụp màn hình gửi cho ai hoặc chia sẻ màn hình lúc đó, hãy coi như khoá đã lộ: bảo Claude sinh khoá mới rồi cập nhật lại đúng hai chỗ — .env và ô API Key trên SePay.
Mở webhook vừa tạo, bấm Gửi thử. Đúng là SePay báo mã 200 kèm success: true.
| Thấy gì | Nghĩa là |
|---|---|
| 200 · success true | Thông. Kèm dòng “không dò ra đơn” thì vẫn đúng — tin thử của SePay không có nội dung chuyển khoản thật nên không khớp được đơn nào. |
| 401 | Khoá hai bên lệch nhau. Chép lại khoá vào ô API Key của SePay. |
| 503 | Địa chỉ nhận chưa được nạp khoá. Bảo Claude deploy lại. |
| Không gọi được | Sai URL. Kiểm lại đúng đường dẫn Claude đưa, có https://. |
Đây mới là phép thử thật sự. Làm một lần trước khi mở bán.
Vào trang bán hàng, điền form như một khách thật.
Giữ nguyên nội dung, chỉ đổi số tiền. Trả thiếu là đúng ý — để xem hệ thống có phân biệt được “cọc” với “đủ” không.
Dòng đó phải có: số tiền đã nhận 2.000, trạng thái Đã cọc, kèm mã giao dịch và thời gian thanh toán.
Dọn sạch, đừng để đơn thử lẫn vào dữ liệu thật.
Cả ba trường hợp tiền vẫn về tài khoản bình thường, chỉ là bảng không tự đánh dấu. Người thu ngân cần biết trước để không hoảng.
| Tình huống | Vì sao · làm gì |
|---|---|
| Khách gõ đè nội dung | Một số app cho sửa nội dung sau khi quét. Mất số điện thoại là mất đường dò. → Đối chiếu tay theo số tiền và giờ chuyển. |
| Người chuyển khác người đăng ký | Vợ đăng ký, chồng chuyển từ tài khoản mình. Nội dung vẫn đúng thì vẫn khớp — chỉ hỏng khi họ gõ lại nội dung theo tên mình. |
| Chuyển trước khi điền form | Chưa có đơn nào trong bảng để khớp. → Bảo khách điền form, rồi sửa trạng thái tay. |