Cho AI Agent Thu Tiền VietQR Tự Động Bằng Python
Tình Huống Đau Đớn: Khi AI Gặp Tiền Mặt
Bạn vừa xây xong một con bot AI giáo dục, nó giải bài tập tốt lắm. Nhưng có một vấn đề:
Làm sao nó thu tiền từ học sinh?
Bạn không thể bảo học sinh gửi tiền vào một tài khoản bot — thật ngớ ngẩn. Cách thông thường? Tích hợp Stripe, Paypal, rồi chờ 5-10 ngày thanh toán. Hoặc tệ hơn: viết script tay để xử lý QR code, nhưng rồi bạn phải quản lý tiền — gánh nặng pháp lý, bảo mật, và rất dễ sai.
Nếu bot AI của bạn không cần giữ tiền, mà chỉ cần tạo QR code trỏ thẳng vào tài khoản merchant của bạn, rồi chờ xác nhận thanh toán? Đó chính là nơi AgentPay VN vào cuộc.
AgentPay VN Là Gì? Tại Sao Nó Khác Biệt?
AgentPay VN là một SDK Python mã nguồn mở (MIT) giúp AI agent thực hiện thanh toán VietQR một cách đơn giản nhất có thể. Điểm nổi bật:
- Không bao giờ giữ tiền: QR code trỏ trực tiếp vào tài khoản ngân hàng của bạn.
- Mã nguồn mở: Bạn kiểm soát toàn bộ, không bị khóa vào dịch vụ.
- MCP Server tích hợp: Dễ kết nối với Claude, ChatGPT hoặc AI agent bất kỳ.
- Kiểm tra thanh toán tự động: Xác nhận tiền về tài khoản real-time qua bank feed.
Thay vì bạn lo lắng về bảo mật, thanh toán, hay tuân thủ, AgentPay VN chỉ làm một việc duy nhất: tạo QR, nhận thông báo, xong.
Kiến Trúc Hoạt Động: 3 Bước Đơn Giản
Quy trình thanh toán của AgentPay VN chỉ có 3 bước cốt lõi:
Bước 1: Tạo Yêu Cầu Thanh Toán (Create Payment Request)
AI agent của bạn gọi create_payment_request() để tạo một invoice với số tiền cụ thể.
Bước 2: Gửi QR Checkout
Hệ thống trả lại một checkout_url — đây chính là QR code hoặc link thanh toán trỏ tới tài khoản merchant.
Bước 3: Chờ Xác Nhận Thanh Toán
AgentPay VN lắng nghe bank feed của bạn, khi tiền về → tự động xác nhận và kích hoạt callback.
Tất cả diễn ra không giữ tiền ở giữa — ngân hàng ghi nhận, bot biết.
Cài Đặt AgentPay VN: 5 Phút Là Xong
Trước tiên, chuẩn bị môi trường Python 3.8+:
# Cài đặt SDK từ pip
pip install agentpay-vn
# Nếu muốn dùng MCP server (cho Claude/Agent AI)
pip install agentpay-mcp
Đó là tất cả. Không cần config phức tạp.
Code Thực Hành: Thu Tiền Bằng Python
Dưới đây là ví dụ hoàn chỉnh để một bot AI thu tiền khoá học:
from agentpay_vn import PaymentClient, PaymentRequest
import asyncio
from datetime import datetime
# 1. Khởi tạo client (cần merchant_id và api_key từ AgentPay VN)
client = PaymentClient(
merchant_id="YOUR_MERCHANT_ID",
api_key="YOUR_API_KEY"
)
# 2. Tạo yêu cầu thanh toán cho một học sinh
async def collect_course_payment(student_name: str, course_price: int):
# Tạo đối tượng yêu cầu thanh toán
payment_req = PaymentRequest(
amount=course_price, # Giá tiền tính bằng VNĐ
description=f"Khoá học Python - {student_name}",
order_id=f"COURSE_{student_name}_{datetime.now().timestamp()}",
return_url="https://your-site.com/success"
)
# 3. Gửi request tạo QR
payment_response = await client.create_payment_request(payment_req)
# payment_response chứa checkout_url (link QR hoặc mã QR)
checkout_url = payment_response.checkout_url
payment_id = payment_response.payment_id
print(f"✓ QR tạo xong cho {student_name}")
print(f" Link thanh toán: {checkout_url}")
print(f" Payment ID: {payment_id}")
return payment_id, checkout_url
# 4. Chờ xác nhận thanh toán
async def wait_for_settlement(payment_id: str, timeout_seconds: int = 300):
"""
Lắng nghe bank feed, chờ tiền về.
- timeout_seconds: chỉ chờ tối đa 5 phút (để tránh bot mắc kẹt)
"""
settlement = await client.await_settlement(
payment_id=payment_id,
timeout=timeout_seconds
)
if settlement.confirmed:
print(f"✅ Tiền đã về! Transaction: {settlement.transaction_id}")
print(f" Số tiền: {settlement.amount:,} VNĐ")
print(f" Ngân hàng xác nhận lúc: {settlement.confirmed_at}")
return True
else:
print(f"❌ Hết timeout chờ thanh toán (hoặc đã bị hủy)")
return False
# 5. Chạy end-to-end flow
async def main():
student = "Nguyễn Văn A"
course_fee = 299_000 # 299k VNĐ
print(f"🤖 AI Agent bắt đầu thu tiền khoá học...\n")
# Tạo QR
payment_id, qr_url = await collect_course_payment(student, course_fee)
print(f"\n⏳ Agent chờ học sinh quét QR...")
input("(Nhấn Enter sau khi thanh toán xong)\n")
# Chờ xác nhận
success = await wait_for_settlement(payment_id)
if success:
print(f"\n🎉 Cấp quyền truy cập khoá học cho {student}!")
else:
print(f"\n⚠️ Gửi nhắc nhở thanh toán lại cho {student}")
# Chạy
if __name__ == "__main__":
asyncio.run(main())
Giải thích từng phần:
PaymentClient: Kết nối với AgentPay VN backend.PaymentRequest: Đóng gói thông tin thanh toán (số tiền, mô tả, order_id).create_payment_request(): Gọi API tạo QR, trả lại checkout_url.await_settlement(): Chặn code cho đến khi tiền xác nhận hoặc hết timeout.settlement.confirmed: Bool, true nếu thanh toán thành công.
Kết quả: Bot đã thu tiền của học sinh mà không một xu nào ở lại tay bot.
Tích Hợp MCP Server Cho Claude & AI Agent
Nếu bạn muốn Claude hoặc ChatGPT tương tác với AgentPay VN, dùng MCP server:
# Cài MCP server
pip install agentpay-mcp
# Chạy server (nghe trên port 5000 mặc định)
agentpay-mcp --port 5000
Trong Claude/Agent configuration, thêm:
{
"mcpServers": {
"agentpay": {
"command": "agentpay-mcp",
"args": ["--port", "5000"],
"env": {
"AGENTPAY_MERCHANT_ID": "YOUR_MERCHANT_ID",
"AGENTPAY_API_KEY": "YOUR_API_KEY"
}
}
}
}
Sau đó, Claude có thể gọi trực tiếp:
Claude: "Tạo QR thanh toán 500k cho đơn hàng #12345"
→ MCP server xử lý → checkout_url trả lại → Claude gửi cho người dùng.
Ví Dụ Kịch Bản Thực Tế: Quán Cà Phê Tự Động
Hãy tưởng tượng bạn chạy một quán cà phê nhỏ với bot AI nhận đơn hàng:
Sáng: Khách vào, nói "Cho tôi cappuccino và croissant"
→ Bot nhận đơn, tính tiền: 75,000 VNĐ
→ Gọi create_payment_request(75_000, description="Cappuccino + Croissant")
→ QR hiển thị trên bảng menu
→ Khách quét → Tiền vào tài khoản quán ngay
→ Bot nhận callback → In bill tự động → Chuẩn bị cà phê
Không cần: POS machine đắt tiền, training nhân viên, lo lắng tiền mặt.
Chỉ cần: Bot, điện thoại, kết nối internet.
Bảng So Sánh: Các Lựa Chọn Thanh Toán
| Yếu tố | AgentPay VN | Stripe | PayPal | Tự viết |
|---|---|---|---|---|
| Setup phức tạp | Rất đơn giản (1 line) | Trung bình (nhiều config) | Trung bình | Cực kỳ phức tạp |
| Giữ tiền | Không bao giờ | Có (2-3 ngày) | Có (24h) | Có (rủi ro lớn) |
| Hỗ trợ VietQR | ✅ Có | ❌ Không | ❌ Không | Tự xử (hay sai) |
| Mã nguồn mở | ✅ MIT | ❌ Không | ❌ Không | Tùy bạn |
| MCP integration | ✅ Có | ❌ Phải tự làm | ❌ Phải tự làm | Phải tự làm |
| Chi phí | Miễn phí (open-source) | 2.9% + 0.3$ mỗi giao dịch | 3.49% + 0.49$ | Phụ thuộc |
| Độ tin cậy | Cao (bank feed) | Rất cao | Rất cao | Thấp |
| Lý tưởng cho | Bot AI, startup | E-commerce lớn | Quốc tế | Không ai |
Nên & Không Nên Khi Dùng AgentPay VN
✅ Nên Làm
- Dùng async/await để chờ settlement (tránh block thread).
- Lưu
payment_idvào database, để tìm kiếm lại nếu cần. - Đặt
timeouthợp lý (300-600 giây), tránh bot chờ vĩnh viễn. - Log tất cả transaction cho audit trail.
- Test với số tiền nhỏ trước khi deploy.
❌ Không Làm
- ❌ Không xoá
payment_idngay sau khi tạo (bạn cần nó để track). - ❌ Không bỏ timeout trong
await_settlement()(bot sẽ mắc kẹt). - ❌ Không làm bot yêu cầu user thanh toán trước khi tạo QR (dữ thừa).
- ❌ Không store API key trong code (dùng environment variable).
- ❌ Không kỳ vọng settlement xảy ra "ngay tức khắc" (ngân hàng cần 1-2 phút).
Xử Lý Lỗi & Edge Case
Thực tế không lúc nào hoàn hảo. Dưới đây là code xử lý tình huống đặc biệt:
from agentpay_vn import PaymentError, SettlementTimeout
async def robust_payment_flow(amount: int, description: str):
try:
# Tạo QR
payment_req = PaymentRequest(
amount=amount,
description=description,
order_id=f"ORDER_{int(datetime.now().timestamp())}"
)
response = await client.create_payment_request(payment_req)
print(f"✓ QR created: {response.checkout_url}")
except PaymentError as e:
# Lỗi từ API (merchant_id sai, api_key hết hạn, v.v.)
print(f"❌ API Error: {e}")
return None
payment_id = response.payment_id
try:
# Chờ thanh toán
settlement = await client.await_settlement(payment_id, timeout=300)
if settlement.confirmed:
print(f"✅ Payment confirmed: {settlement.amount:,} VNĐ")
return settlement
else:
print(f"⚠️ Settlement failed or cancelled")
return None
except SettlementTimeout:
# User quên thanh toán hoặc mạng bị gián đoạn
print(f"⏱️ Payment timeout. Remind user to pay or check later.")
# Lưu payment_id, kiểm tra lại sau
save_to_db(payment_id, status="PENDING")
return None
except Exception as e:
print(f"❌ Unexpected error: {e}")
return None
FAQ: Câu Hỏi Thường Gặp
Q1: "Tiền sẽ về tài khoản của tôi mất bao lâu?"
A: AgentPay VN nhận thông báo từ bank feed trong vòng 30-120 giây sau khi bạn chuyển khoản xong. Chính ngân hàng thì thường xác nhận trong 1-5 phút. Bot bạn có thể hoạt động mà không cần chờ ngân hàng.
Q2: "Có phí gì không? Có bị trừ hoa hồng không?"
A: AgentPay VN miễn phí (mã nguồn mở). Bạn chỉ bị trừ phí chuyển khoản bình thường của ngân hàng (thường là 0-5k VNĐ tùy bank). Không có hoa hồng thêm.
Q3: "Làm sao nếu user thanh toán sai số tiền?"
A: Settlement callback sẽ chứa số tiền thực tế (settlement.amount). Bạn có thể so sánh với expected amount:
if settlement.amount != expected_amount:
print(f"Mismatch: expected {expected_amount}, got {settlement.amount}")
# Log, gửi cảnh báo, hoặc yêu cầu thanh toán lại
Q4: "Có hỗ trợ lập kế hoạch thanh toán không (ví dụ: trả góp)?"
A: Hiện tại AgentPay VN không có built-in subscription. Nhưng bạn có thể tự xây: lưu payment_id vào database, schedule job tạo QR mới vào các kỳ hạn sau. Hoặc góp ý lên GitHub!
Tóm Tắt Nhanh
- AgentPay VN = SDK Python mã nguồn mở để AI agent thu tiền VietQR.
- Không giữ tiền: QR trỏ trực tiếp vào tài khoản merchant.
- 3 bước:
create_payment_request()→send checkout_url→await_settlement(). - Cài đặt:
pip install agentpay-vn(5 phút). - MCP Server: Kết nối với Claude, ChatGPT sẵn sàng.
- Lý tưởng cho: Bot bán khoá học, quán ăn, shop online, SaaS trial-to-paid.
- Lợi ích: Đơn giản, an toàn, miễn phí, mã mở.
- Nhược điểm: Chỉ hỗ trợ VietQR (nhưng nếu bạn ở VN, đó là tất cả bạn cần).
Bước Tiếp Theo: Hành Động Ngay
Bạn đã hiểu rõ cách hoạt động. Giờ đến lúc bắt tay vào làm:
- Cài đặt SDK:
pip install agentpay-vn - Lấy Merchant ID & API Key: Đăng ký tại https://agentpay.servicesai.vn/v1/docs
- Copy-paste ví dụ code ở trên, chạy test.
- Tích hợp vào bot của bạn.
- Deploy & kiếm tiền.
Không biết bắt đầu từ đâu? Đọc tài liệu đầy đủ hoặc xem mã nguồn trên GitHub — đều dễ hiểu.
Còn câu hỏi? Mở Issue trên GitHub, team AgentPay VN rất tán thành feedback.
Hãy nhớ: Thế giới không còn cần bot AI chỉ biết trò chuyện. Thế giới cần bot kiếm tiền. AgentPay VN giúp bạn làm điều đó — một cách đơn giản, an toàn, và minh bạch.
Chúc bạn thành công! 🚀