Thu tiền VietQR tự động cho AI agent – Hướng dẫn AgentPay VN
Bạn đang gặp vấn đề gì?
Nếu bạn đang xây dựng một chatbot bán khóa học online, một AI agent quản lý đơn hàng, hoặc thậm chí một ứng dụng tự động hóa cần thu tiền khách hàng—chắc hẳn bạn đã biết Stripe là "vua" ở thị trường Âu Mỹ. Nhưng ở Việt Nam? Stripe không hỗ trợ thẻ ngân hàng nội địa, phí cao (2.9% + $0.30), và chu trình rút tiền dài tới vài tuần. Bạn buộc phải tìm giải pháp khác—và nếu không cẩn thận, bạn sẽ lâm vào bẫy: dùng Paypal (cũng không có, hoặc phí 3.6%), hoặc tự xây dựng API thanh toán (tốn thời gian, tốn tiền, tốn bảo mật).
Có một cách tốt hơn. Nếu bạn đã từng quét mã VietQR tại quán cà phê, siêu thị, hoặc chợ trực tuyến—bạn đã biết nó là phương thức thanh toán phổ biến nhất của người Việt. Vậy tại sao AI agent của bạn không thể thu tiền VietQR luôn?
Nhập cuộc AgentPay VN—một SDK Python mã mở (MIT) giúp AI agent tự động tạo QR code thanh toán, gửi link checkout, và xác nhận thanh toán—tất cả trong vòng 3 dòng code.
Stripe ở Việt Nam: Tại sao nó không hoạt động?
Hãy so sánh nhanh giữa Stripe và VietQR thông qua AgentPay VN:
| Tiêu chí | Stripe | AgentPay VN |
|---|---|---|
| Hỗ trợ ngân hàng VN | Chỉ thẻ quốc tế | Mọi ngân hàng VietQR |
| Phí giao dịch | 2.9% + $0.30 | 0% (ngân hàng chịu) |
| Rút tiền | 7-14 ngày | Liền tay (qua bank feed) |
| Giữ tiền | Có (ký quỹ) | Không—QR trỏ thẳng account |
| Tích hợp AI agent | Phức tạp, dùng Webhooks | 3 dòng code, native MCP |
| Chi phí phát triển | Cao ($3K-10K) | Mở nguồn, miễn phí |
Khi dùng Stripe, bạn đang trả phí cho Stripe giữ tiền, xác minh giao dịch, rồi chuyển cho bạn. Với AgentPay VN, Stripe bị loại khỏi cuộc chơi—tiền đi trực tiếp từ khách hàng → tài khoản ngân hàng của bạn. AgentPay VN chỉ làm công việc "môi giới thông tin": tạo QR, nhận xác nhận từ ngân hàng, báo cáo cho agent.
AgentPay VN hoạt động như thế nào?
Giải pháp này bao gồm 2 phần chính:
1. SDK Python (agentpay-vn)
Thư viện giúp bạn: - Tạo payment request với số tiền, mô tả, và metadata - Sinh ra VietQR checkout URL - Lắng nghe xác nhận từ bank feed - Xử lý logic khi thanh toán thành công
2. MCP Server (agentpay-mcp)
Kết nối SDK vào claude (hoặc bất kỳ AI agent nào hỗ trợ MCP)—cho phép agent gọi hàm create_payment_request() mà không cần bạn viết wrapper.
Hướng dẫn cài đặt chi tiết
Bước 1: Cài đặt package
pip install agentpay-vn
Đó là nó. Không cần tạo account gì cả, không cần API key, không cần webhook URL phức tạp.
Bước 2: Cấu hình bank account
AgentPay VN kết nối với ngân hàng của bạn thông qua bank feed (một phương pháp tiêu chuẩn để đọc transaction history). Bạn cần:
- Đảm bảo tài khoản ngân hàng hỗ trợ VietQR (hầu hết ngân hàng Việt đều hỗ trợ)
- Kích hoạt "Open Banking" hoặc "Bank API" trong app ngân hàng của bạn
- Cung cấp credentials cho AgentPay VN (email + OTP, không phải password)
Bước 3: Code đầu tiên
from agentpay_vn import create_payment_request, await_settlement
# Bước 1: Tạo request thanh toán
payment = create_payment_request(
amount=299000, # 299K VND
description="Khóa học 'Lập trình AI với Python' của bạn",
merchant_account="0123456789@vietqr", # Tài khoản VietQR của bạn
metadata={"user_id": "12345", "course_id": "python_ai_101"}
)
# payment là object chứa:
# - payment.id: "pay_xyz123" (dùng để track)
# - payment.qr_url: "https://img.vietqr.io/image/..." (hình QR code)
# - payment.checkout_url: "https://vietqr.io/pay/xyz123" (link thanh toán)
# - payment.status: "PENDING"
print(f"Gửi link này cho khách: {payment.checkout_url}")
# Bước 2: Chờ thanh toán
settlement = await_settlement(
payment_id=payment.id,
timeout_seconds=3600 # chờ tối đa 1 giờ
)
# settlement là object chứa:
# - settlement.status: "CONFIRMED" (thanh toán thành công)
# - settlement.amount: 299000
# - settlement.bank_reference: "VCB20240115ABC123" (mã giao dịch ngân hàng)
# - settlement.payer_account: "0987654321" (tài khoản người trả)
if settlement.status == "CONFIRMED":
print(f"✓ Nhận được {settlement.amount}đ từ khách hàng!")
# Cập nhật database, gửi khóa học, ...thực hiện logic của bạn
else:
print(f"✗ Thanh toán thất bại hoặc timeout")
Dó là toàn bộ logic. Ba dòng: create_payment_request() → print(checkout_url) → await_settlement().
Ví dụ kịch bản thực tế: Bot Discord bán khóa học
Bạn có một bot Discord giáo dạy lập trình Python. Khi người dùng gõ /buy_course python_ai_101, bot cần:
- Tạo payment request
- Gửi link checkout
- Chờ thanh toán
- Nếu thành công, gửi khóa học qua DM
from agentpay_vn import create_payment_request, await_settlement
import discord
from discord.ext import commands
bot = commands.Bot(command_prefix="/")
COURSES = {
"python_ai_101": {"price": 299000, "name": "Lập trình AI cơ bản", "link": "https://course.example.com/course1"},
"advanced_ml": {"price": 599000, "name": "Machine Learning nâng cao", "link": "https://course.example.com/course2"},
}
@bot.command()
async def buy_course(ctx, course_id: str):
if course_id not in COURSES:
await ctx.send("❌ Khóa học không tồn tại")
return
course = COURSES[course_id]
# Bước 1: Tạo payment
payment = create_payment_request(
amount=course["price"],
description=course["name"],
merchant_account="0123456789@vietqr",
metadata={"discord_user": str(ctx.author.id), "course_id": course_id}
)
# Bước 2: Gửi checkout link
embed = discord.Embed(
title="💳 Thanh toán khóa học",
description=f"**{course['name']}**\n\nGiá: {course['price']:,}đ",
color=discord.Color.green()
)
embed.add_field(name="Cách thanh toán", value=f"[Quét mã VietQR tại đây]({payment.checkout_url})")
await ctx.send(embed=embed)
# Bước 3: Chờ thanh toán (non-blocking, trong background)
try:
settlement = await_settlement(payment_id=payment.id, timeout_seconds=1800)
if settlement.status == "CONFIRMED":
await ctx.author.send(f"✓ Thanh toán thành công!\n\n🎓 **{course['name']}**\n[Vào khóa học]({course['link']})")
else:
await ctx.author.send("❌ Thanh toán bị từ chối hoặc hết hạn.")
except Exception as e:
await ctx.author.send(f"❌ Lỗi: {e}")
Cơ chế ở đây rất đơn giản: khi khách hàng quét QR và thanh toán, bank feed của bạn sẽ ghi nhận giao dịch, AgentPay VN sẽ bắt sự kiện này và trả về settlement.status == "CONFIRMED". Bot Discord của bạn nhận được thông báo và gửi khóa học cho user. Không cần webhook, không cần polling database.
Tích hợp với Claude thông qua MCP
Nếu bạn muốn Claude (hoặc AI agent khác) tự động xử lý thanh toán mà không cần code thêm, hãy dùng agentpay-mcp server:
Cài đặt MCP server
pip install agentpay-mcp
agentpay-mcp --port 3000
Cấu hình Claude (claude_config.json)
{
"mcpServers": {
"agentpay": {
"command": "agentpay-mcp",
"args": ["--port", "3000"],
"env": {
"MERCHANT_ACCOUNT": "0123456789@vietqr",
"BANK_FEED_URL": "https://your-bank-api.example.com/feed"
}
}
}
}
Sau đó, Claude sẽ có thể gọi:
Claude: Tôi sẽ tạo payment request cho khách hàng này.
[Call MCP Tool] create_payment_request(
amount=199000,
description="Sản phẩm XYZ"
)
Result: payment_id=pay_abc123, checkout_url=https://vietqr.io/pay/abc123
Claude: Đây là link thanh toán: https://vietqr.io/pay/abc123
MCP giúp Claude (hoặc bất kỳ LLM nào) trở thành một "thương gia tự động" có khả năng thu tiền từ khách.
Cấu hình nâng cao
1. Webhook tùy chỉnh (Optional)
Nếu bạn muốn nhận thông báo real-time thay vì polling:
from agentpay_vn import create_payment_request, register_webhook
# Đăng ký webhook handler
def on_settlement(event):
print(f"💰 Thanh toán xác nhận: {event['payment_id']} - {event['amount']}đ")
# Cập nhật database, gửi email xác nhận, ...
register_webhook(event_type="settlement", callback=on_settlement)
# Bây giờ mỗi khi có giao dịch mới, on_settlement() sẽ được gọi tự động
2. Batch processing (Xử lý hàng loạt)
Nếu bạn có một cửa hàng online với hàng chục đơn hàng mỗi giờ:
from agentpay_vn import get_pending_payments, get_settlement
# Lấy tất cả payment chưa confirm
pending = get_pending_payments()
for payment in pending:
settlement = get_settlement(payment.id)
if settlement.status == "CONFIRMED":
print(f"✓ Đơn {payment.id} đã nhận tiền")
elif settlement.status == "EXPIRED":
print(f"✗ Đơn {payment.id} hết hạn, cần gửi lại QR")
3. Multi-account (Nhiều tài khoản)
Nếu bạn quản lý thanh toán cho nhiều người bán hàng:
payment = create_payment_request(
amount=500000,
merchant_account="0111111111@vietqr", # Tài khoản người bán 1
description="Đơn hàng #5432 từ shop XYZ"
)
# Tiền sẽ vào tài khoản 0111111111, không phải tài khoản mặc định
FAQ: Các câu hỏi thường gặp
Q1: AgentPay VN có giữ tiền của tôi không?
Không. AgentPay VN không bao giờ chạm vào tiền. QR code trỏ trực tiếp vào tài khoản ngân hàng của bạn. Tiền khách gửi sẽ lên tài khoản bạn trong vài giây. AgentPay VN chỉ đọc bank feed (transaction history) để xác nhận "giao dịch #123 đã về", rồi báo cáo cho agent của bạn.
Q2: Có phí nào phía AgentPay VN không?
Không. AgentPay VN là mã mở (MIT), hoàn toàn miễn phí. Ngân hàng sẽ tính phí duy nhất (nếu có) cho giao dịch, nhưng phần lớn ngân hàng Việt không tính phí nội địa VietQR.
Q3: Tôi có thể dùng với bất kỳ ngân hàng nào không?
Hầu hết ngân hàng Việt hỗ trợ VietQR: Vietcombank, Agribank, BIDV, Techcombank, MB, TPBank, SeABank, v.v. Miễn là ngân hàng của bạn cung cấp "Open Banking API" hoặc "Bank Feed API", bạn có thể dùng AgentPay VN.
Q4: Nếu khách hàng gửi sai số tiền thì sao?
AgentPay VN hỗ trợ "partial payment": bạn có thể kiểm tra settlement.amount và so sánh với payment.amount yêu cầu. Nếu khách gửi 200k nhưng bạn yêu cầu 299k, bạn có thể từ chối hoặc yêu cầu bổ sung. Tất cả được lưu trong metadata.
Tóm tắt nhanh
- Cài đặt:
pip install agentpay-vn - Quy trình:
create_payment_request()→ gửicheckout_url→await_settlement() - Tiền: Vào thẳng tài khoản ngân hàng của bạn, không qua trung gian
- Phí: Miễn phí AgentPay VN + phí ngân hàng (hầu hết 0%)
- AI integration: Dùng
agentpay-mcpđể Claude/agent có thể tạo QR tự động - Bảo mật: Không cần lưu mật khẩu, chỉ dùng bank feed (OAuth-like)
- Hỗ trợ: Mọi ngân hàng VietQR ở Việt Nam
Lời kết
Stipe ở Việt Nam không phải là giải pháp cuối cùng. Nếu bạn đang xây dựng: - Chatbot bán hàng (Discord, Telegram, website) - AI agent quản lý cửa hàng (tự động xử lý đơn hàng + thanh toán) - Ứng dụng SaaS Việt Nam (cần nhận tiền đơn giản) - Hệ thống tự động hóa (IoT, robot, máy bán hàng tự động)
…thì AgentPay VN có thể giúp bạn tiết kiệm hàng triệu đồng phí, hàng tháng thời gian phát triển, và hàng chục dòng code xử lý thanh toán.
Hãy thử nó ngay hôm nay:
pip install agentpay-vn
Và khám phá tài liệu chi tiết tại đây hoặc source code trên GitHub.
Xây dựng AI agent của bạn. Để AgentPay VN xử lý tiền.