Bán hàng số qua chatbot AI không cần giữ tiền: Hướng dẫn AgentPay VN
Nỗi đau khi bán sản phẩm số qua AI chatbot
Bạn vừa xây dựng một AI chatbot bán khoá học trực tuyến, phần mềm, hoặc dịch vụ kỹ thuật. Mỗi khi khách yêu cầu mua, bot phải:
- Tạo hoá đơn, ghi lại thông tin thanh toán
- Chuyển tiền vào ví trung gian (Stripe, PayPal, hay ngân hàng công ty)
- Quản lý tài khoản trung gian, lo lắng về an toàn dữ liệu
- Chờ hàng ngày hoặc hàng tuần mới rút được tiền về tài khoản cá nhân
- Xử lý khiếu nại, hoàn tiền một cách thủ công
Vấn đề: bạn chính mình đang giữ tiền của khách hàng, rủi ro pháp lý, phức tạp kế toán, và người dùng không thấy an tâm.
Nếu bạn là startup hoặc cá nhân, việc này thực sự không cần thiết. Tại sao không cho khách trả tiền trực tiếp vào tài khoản ngân hàng của bạn mà vẫn tự động hóa toàn bộ quy trình bán hàng?
Đó là lý do AgentPay VN được sinh ra.
AgentPay VN là gì? Tại sao nó khác biệt?
AgentPay VN là một bộ công cụ mã nguồn mở (MIT license), viết bằng Python, cho phép AI agent và chatbot của bạn:
- Tạo yêu cầu thanh toán (payment request) với số tiền cụ thể
- Phát hành QR code VietQR — QR code này trỏ trực tiếp vào tài khoản ngân hàng của bạn (không có trung gian)
- Xác nhận thanh toán tự động khi ngân hàng báo cáo khoản tiền đã nhận
- Giao hàng số (nội dung, API key, file tải về) ngay sau khi thanh toán thành công
Điểm khác biệt quan trọng nhất: AgentPay VN KHÔNG BAOGIỜ giữ tiền bạn. Đó là lý do tại sao nó an toàn và nhẹ nhàng.
Kiến trúc đơn giản: 3 bước
1. create_payment_request(amount=99000, description="Khoá học Python")
↓
2. send_checkout_url_to_user(checkout_url)
↓
3. await_settlement(payment_id)
↓ (Xác nhận từ ngân hàng) ↓
Giao hàng tự động
Cài đặt AgentPay VN: Chỉ cần một lệnh
Nếu bạn đã có môi trường Python 3.8+:
pip install agentpay-vn
Xong! SDK đã sẵn sàng để import trong code Python của bạn.
Nếu bạn muốn chạy AgentPay dưới dạng MCP server (để dùng với Claude hoặc các AI model khác):
pip install agentpay-vn
agentpay-mcp start --port 3000
Quy trình 3 bước: Tạo → Gửi → Chờ nhận tiền
Bước 1: Tạo yêu cầu thanh toán
from agentpay_vn import PaymentClient
# Khởi tạo client (cần config ngân hàng: số tài khoản, tên chủ tài khoản)
client = PaymentClient(
account_number="1234567890",
account_holder="Nguyen Van A",
bank_code="970418" # MB Bank
)
# Tạo yêu cầu thanh toán
payment_request = client.create_payment_request(
amount=99000, # VNĐ
description="Khoá học Python cơ bản",
reference_id="COURSE_001_2024" # ID duy nhất của hóa đơn
)
print(f"Payment ID: {payment_request.payment_id}")
print(f"VietQR URL: {payment_request.checkout_url}")
Giải thích:
- amount: số tiền khách phải trả (tính bằng VNĐ)
- description: lý do thanh toán (khách sẽ thấy trên ứng dụng banking)
- reference_id: ID riêng để bạn theo dõi trong hệ thống của bạn
- checkout_url: QR code / link mà bạn gửi cho khách (để khách quét hoặc click)
Bước 2: Gửi checkout_url cho khách qua chatbot
# Ví dụ: AI agent gửi tin nhắn cho khách
async def send_invoice_to_customer(customer_id, payment_request):
message = f"""
🎉 Đơn hàng của bạn đã được tạo!
💰 Tổng tiền: {payment_request.amount:,} VNĐ
📦 Sản phẩm: {payment_request.description}
Vui lòng thanh toán bằng cách quét mã QR dưới đây:
{payment_request.checkout_url}
Sau khi thanh toán, bạn sẽ nhận được link tải khoá học ngay lập tức.
"""
# Gửi qua Telegram, WhatsApp, hoặc bất kỳ kênh nào
await send_message(customer_id, message)
Bước 3: Chờ và xác nhận thanh toán
import asyncio
from agentpay_vn import await_settlement
async def process_payment_and_deliver(payment_id, customer_id, course_data):
# Chờ xác nhận từ ngân hàng (timeout = 30 phút)
settlement = await await_settlement(
payment_id=payment_id,
timeout=1800 # giây
)
if settlement.confirmed:
print(f"✅ Thanh toán thành công: {settlement.amount} VNĐ")
# Giao hàng tự động
delivery_link = generate_course_access_link(course_data, customer_id)
await send_message(
customer_id,
f"🎓 Đây là link truy cập khóa học của bạn:\n{delivery_link}"
)
else:
print(f"❌ Thanh toán bị hủy hoặc hết hạn")
# Gửi thông báo cho khách
Điểm quan trọng: await_settlement() là hàm async, nó sẽ chặn cho đến khi ngân hàng xác nhận tiền đã vào tài khoản của bạn. Bạn có thể để chạy nền (background task) trong ứng dụng.
Tích hợp với Claude / AI agents: Cấu hình MCP Server
Nếu bạn dùng Claude hoặc các AI model hỗ trợ MCP (Model Context Protocol), bạn có thể để AI tự gọi các hàm của AgentPay:
Bước 1: Khởi động MCP server
agentpay-mcp start --port 3000 --account-number 1234567890 --account-holder "Nguyen Van A" --bank-code 970418
Bước 2: Cấu hình Claude (hoặc AI client)
Tạo file claude_config.json:
{
"mcpServers": {
"agentpay": {
"command": "agentpay-mcp",
"args": [
"start",
"--port", "3000"
],
"env": {
"AGENTPAY_ACCOUNT_NUMBER": "1234567890",
"AGENTPAY_ACCOUNT_HOLDER": "Nguyen Van A",
"AGENTPAY_BANK_CODE": "970418"
}
}
}
}
Sau đó, Claude sẽ có thể gọi trực tiếp:
- create_payment_request → tạo đơn hàng
- await_settlement → kiểm tra thanh toán
- generate_checkout_url → phát hành QR code
Bước 3: Prompt cho Claude
Bạn là chatbot bán hàng số. Khi khách yêu cầu mua sản phẩm:
1. Xác nhận sản phẩm và giá tiền
2. Dùng AgentPay để tạo payment request
3. Gửi checkout_url (QR code) cho khách
4. Chờ xác nhận từ await_settlement
5. Nếu thanh toán thành công, giao hàng ngay (gửi link, file, hoặc thông tin)
Ví dụ thực tế: Bot bán khoá học trực tuyến
Giả sử bạn chạy một platform bán khoá học, và có một Telegram bot hỏi khách:
Khách: "Mình muốn mua khoá học Python nâng cao. Giá bao nhiêu?"
Bot:
📚 Khoá học "Python Nâng Cao" của chúng tôi:
- Giá: 299,000 VNĐ
- Bao gồm: 50 video, 10 bài tập, 1 project cuối khóa
- Truy cập trọn đời
Bạn có muốn mua không?
Khách: "Có, mình mua"
Backend (Python code):
async def handle_purchase(customer_id, course_id="python_advanced"):
course = get_course_info(course_id)
# Bước 1: Tạo thanh toán
payment = client.create_payment_request(
amount=299000,
description=f"Khoá học: {course['name']}",
reference_id=f"{customer_id}_{course_id}_{int(time.time())}"
)
# Bước 2: Gửi QR cho khách
await telegram_bot.send_message(
customer_id,
f"🔗 Quét mã QR để thanh toán:\n{payment.checkout_url}"
)
# Bước 3: Chờ thanh toán (background task)
asyncio.create_task(
wait_and_deliver(payment.payment_id, customer_id, course_id)
)
async def wait_and_deliver(payment_id, customer_id, course_id):
settlement = await await_settlement(payment_id, timeout=1800)
if settlement.confirmed:
# Tạo access link cho khách
access_token = create_course_access(
customer_id=customer_id,
course_id=course_id
)
await telegram_bot.send_message(
customer_id,
f"✅ Thanh toán thành công!\n🎓 Link khóa học: https://academy.example.com/course/{course_id}?token={access_token}"
)
Kết quả: Khách quét QR, trả tiền vào tài khoản bạn, và ngay lập tức bot gửi link truy cập. Bạn không giữ tiền, không cần ví trung gian, đơn giản và an toàn.
So sánh: AgentPay vs. Các giải pháp khác
| Tiêu chí | AgentPay VN | Stripe | PayPal | Ngân hàng thông thường |
|---|---|---|---|---|
| Mã nguồn mở | ✅ | ❌ | ❌ | N/A |
| Không giữ tiền | ✅ | ❌ (giữ 2-3 ngày) | ❌ (giữ tiền) | ❌ (phức tạp) |
| Hỗ trợ VietQR | ✅ | ❌ | ❌ | ✅ (nhưng phức tạp) |
| Cài đặt ≤ 5 phút | ✅ | ❌ (phải KYC, tài liệu) | ❌ (phải KYC) | ❌ (hàng ngày) |
| Hỗ trợ AI/MCP | ✅ | ❌ (chỉ API) | ❌ (chỉ API) | N/A |
| Phí giao dịch | 0% | 2.9% + 0.3 USD | 2.2% + 0.3 USD | ~0% (nhưng phí duy trì) |
| Tích hợp Python SDK | ✅ Dễ | ✅ Bình thường | ✅ Bình thường | ❌ Phức tạp |
Các câu hỏi thường gặp (FAQ)
1. AgentPay có an toàn không? Có bị hack?
AgentPay chỉ là cầu nối — nó tạo QR code và chờ xác nhận từ ngân hàng. Tiền luôn đi thẳng vào tài khoản ngân hàng của bạn, không qua bất kỳ máy chủ trung gian nào. Bạn chỉ cần bảo vệ tài khoản ngân hàng của mình (2FA, mật khẩu mạnh), giống như bình thường. Vì mã nguồn mở, bạn có thể xem code để kiểm tra.
2. Làm sao để khách biết được tiền đã chuyển thành công?
Ngân hàng sẽ báo cáo trong vòng vài giây đến vài phút qua bank feed (API hoặc tệp CSV định kỳ). Hàm await_settlement() chờ xác nhận này, sau đó bot sẽ thông báo cho khách. Nếu ngân hàng không báo cáo trong 30 phút, ứng dụng sẽ hết thời gian chờ (timeout).
3. Có thể hoàn tiền không?
Có, nhưng quá trình hoàn tiền là thủ công — khách phải yêu cầu, bạn kiểm tra, rồi chuyển tiền lại qua tài khoản ngân hàng của họ. AgentPay chưa tự động hoá phần này, vì nó tập trung vào nhận tiền, không phải quản lý hoàn tiền.
4. Có thể cài đặt trên Windows/Mac/Linux không?
Có. Miễn là bạn cài Python 3.8+. Chạy pip install agentpay-vn trên bất kỳ hệ điều hành nào. Nếu chạy MCP server, chỉ cần đảm bảo cổng 3000 (hoặc cổng khác) không bị chiếm.
Những điểm cần lưu ý (Nên & Không nên)
✅ NÊN làm
- Lưu
reference_id(ID hoá đơn) trong database để theo dõi - Thiết lập timeout hợp lý cho
await_settlement()(vd: 30-60 phút) - Ghi log tất cả payment request và settlement để kiểm toán
- Bảo mật API key / token ngân hàng (nếu có) trong environment variable
- Thử nghiệm trên staging/sandbox trước khi chạy production
- Tạo thông báo lỗi rõ ràng cho khách (nếu thanh toán thất bại)
❌ KHÔNG nên làm
- Không lưu trữ hoặc chia sẻ số tài khoản ngân hàng trong code hardcode
- Không giả lập thanh toán thành công trong production (chỉ để test)
- Không giao hàng cho khách trước khi
await_settlement()xác nhận (vì tiền chưa chắc đã tới) - Không quên xử lý timeout — nếu khách không thanh toán sau 30 phút, nên gửi nhắc nhở
- Không bỏ qua error handling — hàm
await_settlement()có thể raise exception
Tóm tắt nhanh
- AgentPay VN = Python SDK mã nguồn mở để AI agent tạo payment request VietQR
- Không giữ tiền: QR trỏ trực tiếp vào tài khoản ngân hàng bạn
- 3 bước:
create_payment_request()→ gửi checkout_url →await_settlement() - Cài đặt:
pip install agentpay-vn(chỉ 1 dòng) - MCP Server: Tích hợp với Claude / AI model khác để tự động hoá toàn bộ
- Ví dụ thực tế: Bot Telegram, chatbot Discord, hoặc website bán khoá học
- An toàn: Vì là mã nguồn mở + tiền vào thẳng account của bạn, không trung gian
- Phí: 0% (chỉ phí chuyển tiền ngân hàng bình thường, nếu có)
Bước tiếp theo: Hãy thử ngay!
Nếu bạn đã sẵn sàng tích hợp thanh toán VietQR vào AI agent của mình:
-
Cài đặt SDK:
bash pip install agentpay-vn -
Đọc tài liệu chi tiết: https://agentpay.servicesai.vn/v1/docs
-
Clone repo (hoặc fork) để xem code mẫu:
bash git clone https://github.com/phuocdu/agentpay-vn cd agentpay-vn pip install -e . -
Chạy ví dụ:
bash python examples/simple_payment.py -
Khởi động MCP server (nếu muốn dùng Claude):
bash agentpay-mcp start
Không có lý do gì để chuyển tiền khách vào ví trung gian nữa. Làm đơn giản, làm nhanh, làm an toàn — đó là triết lý của AgentPay VN.
Hãy bắt đầu bán sản phẩm số của bạn qua AI chatbot, mà không cần lo giữ tiền. 🚀