Tự động thu tiền VietQR cho AI agent – Thay thế Stripe ở Việt Nam
Vấn đề: Tại sao AI agent của bạn vẫn chưa có khả năng thu tiền?
Hình dung bạn vừa xây dựng một chatbot AI giúp khách hàng đặt mua khóa học trực tuyến. Bot nắm rõ các bước: xác định nhu cầu → giới thiệu sản phẩm → lập hóa đơn. Nhưng rồi... khi đến bước thanh toán, bot bó tay. Nó phải nói "Vui lòng truy cập trang web để thanh toán", ngắt kết nối hoàn toàn.
Đây chính là vấn đề mà hàng ngàn startup, shop online, và doanh nghiệp nhỏ vừa và nhỏ tại Việt Nam đang gặp phải.
Tại sao Stripe không phải giải pháp tốt nhất cho thị trường Việt? - Chủ yếu hỗ trợ thẻ quốc tế (khó khăn với khách Việt) - Phí giao dịch cao: 3.6% + $0.30/lần - Yêu cầu tài khoản ngân hàng ngoài nước - Độ trễ thanh toán 3-5 ngày
AgentPay VN ra đời để giải quyết chính xác điểm đau này.
AgentPay VN là gì? Sự khác biệt cơ bản
AgentPay VN là một SDK Python mã nguồn mở (MIT License) kết hợp với MCP server cho phép AI agent của bạn tự động tạo yêu cầu thanh toán VietQR, gửi link thanh toán cho khách, và xác nhận khi tiền đã vào tài khoản ngân hàng. Tất cả đều diễn ra hoàn toàn tự động, không cần can thiệp thủ công.
Điểm khác biệt chính:
| Tiêu chí | Stripe | AgentPay VN |
|---|---|---|
| Thanh toán yêu thích ở Việt Nam | Thẻ quốc tế | VietQR/Ngân hàng |
| Giữ tiền | Có (2-3 ngày) | Không – trực tiếp vào tk của bạn |
| Phí giao dịch | 3.6% + $0.30 | Miễn phí (bạn thanh toán phí ngân hàng nếu có) |
| Độ trễ thanh toán | 3-5 ngày | Tức thời |
| Hỗ trợ AI agent | Không trực tiếp | Có (MCP server sẵn sàng) |
| Mã nguồn | Đóng | Mở (MIT) |
Cách hoạt động: Quy trình 3 bước đơn giản
AgentPay VN tuân theo một logic cực kỳ đơn giản mà mạnh mẽ:
Bước 1: Tạo yêu cầu thanh toán → Bước 2: Gửi checkout_url cho khách → Bước 3: Chờ xác nhận settlement từ ngân hàng
Không có trung gian, không có việc chuyển tiền qua nhiều bước. VietQR code trỏ thẳng vào tài khoản ngân hàng của bạn.
Cài đặt và thiết lập ban đầu
Bước 1: Cài đặt SDK Python
pip install agentpay-vn
Gói này chứa toàn bộ logic cần thiết để tạo payment request, xử lý webhook, và theo dõi trạng thái.
Bước 2: Cấu hình ngân hàng của bạn
Bạn sẽ cần: - Mã ngân hàng Việt Nam (VPBank, Vietcombank, Techcombank, v.v.) - Số tài khoản nhận tiền - Tên chủ tài khoản
Các thông tin này được AgentPay VN mã hóa và chỉ dùng để tạo QR code. Bạn vẫn toàn quyền kiểm soát tài khoản.
Bước 3: Tích hợp với AI agent của bạn
Nếu dùng Claude hoặc OpenAI, cấu hình MCP server:
{
"mcpServers": {
"agentpay-mcp": {
"command": "agentpay-mcp",
"args": [
"--bank-code=VPB",
"--account=1234567890",
"--account-holder=Cty ABC",
"--webhook-url=https://yourdomain.com/webhook"
]
}
}
}
Sau đó, agent của bạn có thể gọi các hàm như create_payment_request() một cách tự nhiên trong conversation.
Ví dụ code thực tế: Bot bán khóa học trực tuyến
Tình huống
Bot tên "EduBot" giúp khách chọn khóa học và thanh toán. Khi khách nói "Mình muốn mua khóa React", bot sẽ: 1. Xác định giá (500.000 đ) 2. Tạo payment request 3. Gửi QR code 4. Chờ xác nhận
Code chi tiết
from agentpay_vn import PaymentClient, PaymentRequest
import asyncio
# Khởi tạo client
client = PaymentClient(
bank_code="VPB",
account_number="1234567890",
account_holder="Công ty Giáo dục XYZ"
)
async def process_course_payment(customer_name, course_name, amount_vnd):
"""
Tạo và xử lý yêu cầu thanh toán cho khóa học.
Args:
customer_name (str): Tên khách hàng
course_name (str): Tên khóa học
amount_vnd (int): Số tiền (VND)
Returns:
dict: Thông tin thanh toán (checkout_url, qr_code, payment_id)
"""
# Bước 1: Tạo yêu cầu thanh toán
payment_request = PaymentRequest(
order_id=f"course_{customer_name}_{course_name}",
amount=amount_vnd,
description=f"Khóa học {course_name} - {customer_name}",
customer_name=customer_name,
return_url="https://yourdomain.com/success"
)
# Bước 2: Gửi tới server AgentPay VN
response = await client.create_payment_request(payment_request)
print(f"✓ Đã tạo yêu cầu: {response['payment_id']}")
print(f"✓ QR Code: {response['qr_code']}")
print(f"✓ Link thanh toán: {response['checkout_url']}")
# Bước 3: Chờ khách thanh toán (với timeout 5 phút)
payment_status = await client.await_settlement(
payment_id=response['payment_id'],
timeout_seconds=300
)
if payment_status['settled']:
print(f"✅ Thanh toán thành công! Số tiền: {payment_status['amount']} VND")
print(f"✅ Mã giao dịch ngân hàng: {payment_status['bank_ref']}")
return {
"status": "success",
"message": f"Cảm ơn bạn đã mua khóa {course_name}! Link học: https://..."
}
else:
print(f"❌ Thanh toán không hoàn tất trong thời gian quy định.")
return {"status": "timeout", "message": "Vui lòng thử lại"}
# Ví dụ sử dụng
if __name__ == "__main__":
result = asyncio.run(process_course_payment(
customer_name="Nguyễn Văn A",
course_name="Khóa React Pro",
amount_vnd=500000
))
print(result)
Giải thích từng phần:
- PaymentClient: Đối tượng chính để giao tiếp với AgentPay VN
- PaymentRequest: Định nghĩa các chi tiết đơn hàng (số tiền, mô tả, thời gian hết hạn)
- create_payment_request(): Tạo QR code VietQR (không lưu tiền)
- await_settlement(): Lắng nghe webhook từ ngân hàng, chờ xác nhận (tối đa 300 giây)
Code ví dụ 2: Webhook handler (xác nhận thanh toán)
from flask import Flask, request, jsonify
from agentpay_vn import verify_webhook_signature
app = Flask(__name__)
@app.route('/webhook', methods=['POST'])
def handle_payment_webhook():
"""
Endpoint nhận thông báo từ ngân hàng khi khách thanh toán.
AgentPay VN sẽ gửi POST request tới URL này.
"""
payload = request.json
signature = request.headers.get('X-AgentPay-Signature')
# Bước 1: Xác minh chữ ký (đảm bảo request từ AgentPay VN)
if not verify_webhook_signature(payload, signature, secret_key='YOUR_SECRET'):
return jsonify({"error": "Invalid signature"}), 401
# Bước 2: Xử lý thông báo
payment_id = payload['payment_id']
status = payload['status'] # 'settled' hoặc 'failed'
amount = payload['amount']
bank_ref = payload['bank_reference']
if status == 'settled':
# Cập nhật database, gửi email xác nhận, cấp quyền truy cập, v.v.
print(f"💰 Tiền đã vào: {amount} VND (ref: {bank_ref})")
send_confirmation_email(payment_id)
grant_course_access(payment_id)
return jsonify({"ok": True}), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Các kịch bản ứng dụng thực tế
1. Quán cà phê tính tiền trực tuyến
Khách nhắn tin bot: "Mình muốn order 2 cà phê espresso" → Bot tính giá (80k) → Tạo QR code → Khách quét → Tiền về tk quán tức thì → Bot tự động in hóa đơn / thông báo nhân viên pha chế
2. Shop bán hàng online
Khách bấm nút "Thanh toán" trên chatbot → Bot tạo invoice tự động → Gửi QR VietQR → Sau khi khách thanh toán → Tự động update status đơn hàng thành "Đã thanh toán" → Xếp hàng lên ưu tiên
3. Lớp học online
Học sinh hỏi: "Muốn nâng cấp lên premium?" → Bot tính phí hàng tháng (200k) → Hiển thị QR code → Lập tức cấp quyền truy cập tài liệu cao cấp
Nâng cao: Tích hợp với MCP Server
Nếu bạn dùng Claude (qua Claude Desktop App), bạn có thể cấu hình agentpay-mcp sao cho Claude có thể gọi lệnh thanh toán mà không cần viết code:
{
"mcpServers": {
"agentpay": {
"command": "npx",
"args": ["agentpay-mcp"],
"env": {
"AGENTPAY_BANK_CODE": "VPB",
"AGENTPAY_ACCOUNT": "1234567890",
"AGENTPAY_HOLDER": "Tên Công Ty",
"AGENTPAY_WEBHOOK_SECRET": "your_secret_key"
}
}
}
}
Con người chỉ cần nói chuyện, Claude tự gọi API thanh toán phía sau.
So sánh: Nên và không nên dùng AgentPay VN
✅ Nên dùng AgentPay VN khi:
- Khách hàng chủ yếu ở Việt Nam (VietQR là phương thức lý tưởng)
- Bạn muốn thanh toán tức thời, không chờ 2-3 ngày
- AI agent của bạn cần tính năng tự động tạo hóa đơn & xác nhận
- Bạn muốn mã nguồn mở, kiểm soát penuh
- Phí giao dịch nhạy cảm (muốn tiết kiệm)
❌ Không nên (hoặc chưa tối ưu) khi:
- Khách toàn quốc tế, cần thẻ credit card nước ngoài
- Bạn cần nhiều phương thức thanh toán khác nhau (Apple Pay, Google Pay, ví điện tử)
- Yêu cầu hỗ trợ 24/7 của một công ty lớn (AgentPay VN là project open-source, hỗ trợ qua community)
- Cần chứng chỉ PCI compliance cao (mặc dù AgentPay VN không giữ tiền, vẫn nên review)
FAQ – Những câu hỏi thường gặp
1. AgentPay VN có thực sự không giữ tiền?
Đúng 100%. Mọi tiền đều được gửi trực tiếp tới tài khoản ngân hàng của bạn. AgentPay VN chỉ đóng vai trò "cầu nối", tạo QR code và ghi nhận khi ngân hàng xác nhận. Không có bước "chuyển tiền" thêm nào.
2. Phí của AgentPay VN là bao nhiêu?
Miễn phí! SDK là mã nguồn mở MIT. Bạn chỉ chi trả: - Phí của ngân hàng (nếu có) – thường 0% cho chuyển khoản nội bộ - Chi phí infrastructure của riêng bạn (server webhook, v.v.)
3. Nếu khách không thanh toán sẽ sao?
QR code sẽ hết hạn sau khoảng thời gian bạn quy định (mặc định 10 phút). Nếu quá hạn, khách sẽ phải yêu cầu tạo QR mới.
4. Tôi cần ngân hàng nào để dùng AgentPay VN?
Bất kỳ ngân hàng Việt Nam nào hỗ trợ VietQR đều được. Danh sách: Vietcombank, VPBank, Techcombank, Agribank, Sacombank, BIDV, MB, ACB, v.v. (gần như toàn bộ).
Tóm tắt nhanh
- 🚀 Cài đặt:
pip install agentpay-vn(5 phút) - 💰 Thanh toán: VietQR – phương thức yêu thích ở Việt Nam
- ⚡ Tốc độ: Tiền vào tk tức thì (không chờ 2-3 ngày)
- 🔓 Mã nguồn: Mở (MIT License), bạn toàn quyền kiểm soát
- 🤖 AI Agent: Tích hợp MCP server, Claude gọi thanh toán như gọi hàm
- 📚 Hỗ trợ: Docs tại https://agentpay.servicesai.vn/v1/docs
- 🐙 GitHub: https://github.com/phuocdu/agentpay-vn
Các bước tiếp theo
-
Cài đặt ngay:
bash pip install agentpay-vn -
Xem ví dụ: Truy cập GitHub repository
https://github.com/phuocdu/agentpay-vn -
Đọc tài liệu chi tiết:
https://agentpay.servicesai.vn/v1/docs -
Tích hợp với AI agent của bạn: Thêm MCP server, bắt đầu nhận thanh toán tự động.
-
Chia sẻ feedback: Nếu bạn thích dự án, hãy star trên GitHub hoặc report issue để cộng đồng cải thiện.
AgentPay VN không chỉ là công cụ thanh toán – nó là chìa khóa để AI agent của bạn hoạt động như một nhân viên bán hàng thực sự, từ chào hỏi, tư vấn, tính giá, cho đến... nhận tiền. Đó là khác biệt.