Bán sản phẩm số qua chatbot AI: Không giữ tiền, chỉ nhận thanh toán

2026-07-09 · AgentPay VN

ai agentspython sdkvietqrmcp serverthanh toán

Tình huống thực tế: Sợ hãi kiểm soát tiền tệ

Bạn vừa xây dựng một chatbot AI để bán khoá học lập trình trực tuyến. Mỗi ngày hơn 100 khách hàng tương tác, một số quyết định mua. Nhưng bạn đứng trước một cuộc tranh cãi nội tâm:

Hai tuần trước, một startup fintech Việt Nam gặp vấn đề tương tự: bot AI bán vé sự kiện kiếm được ~200 triệu/tháng, nhưng không có cách nào để AI agent tự thực hiện thanh toán an toàn. Đó chính là lúc AgentPay VN ra đời.

AgentPay VN là gì?

AgentPay VN là một SDK Python (MIT license) + MCP server cho phép AI agents tạo yêu cầu thanh toán VietQR mà KHÔNG bao giờ giữ tiền. Dòng tiền đi thẳng từ khách hàng → tài khoản ngân hàng của merchant → bot xác nhận settlement qua bank feed.

Khác biệt cốt lõi:

Giải pháp Tiền đi đâu? Phí Khó độ Bảo mật
Gateway truyền thống Qua nền tảng → bạn 2-3% Dễ Phụ thuộc họ
AgentPay VN Thẳng vào ngân hàng bạn 0% Siêu đơn giản Bạn kiểm soát
Crypto/Direct Tự xử lý 0% Rất khó Bạn chịu risk
Chuyển khoản thủ công Ngân hàng 0% Rất phiền Khó quy mô

Quy trình 3 bước: Dễ như ăn bánh

AgentPay VN hoạt động theo một flow siêu đơn giản:

1. Bot tạo yêu cầu thanh toáncreate_payment_request() 2. Bot gửi link QR checkout cho khách → khách scan & thanh toán 3. Bot đợi xác nhận settlement → tự động kích hoạt trao sản phẩm

Không giữ tiền, không ủy quyền, không lo lắng.

Cài đặt và thiết lập ban đầu

Bước 1: Cài đặt SDK Python

pip install agentpay-vn

Xong, không cần config gì phức tạp.

Bước 2: Cấu hình MCP server cho Claude

Nếu bạn dùng Claude hoặc OpenAI qua MCP (Model Context Protocol), thêm vào .claude_config hoặc tệp cấu hình AI của bạn:

{
  "mcpServers": {
    "agentpay-mcp": {
      "command": "python",
      "args": ["-m", "agentpay_mcp.server"],
      "env": {
        "AGENTPAY_MERCHANT_ID": "your_merchant_id",
        "AGENTPAY_BANK_ACCOUNT": "your_vietqr_account",
        "AGENTPAY_API_KEY": "your_api_key"
      }
    }
  }
}

Các biến môi trường này bạn lấy từ https://agentpay.servicesai.vn/v1/docs sau khi đăng ký merchant.

Bước 3: Test kết nối

from agentpay_vn import AgentPayClient

client = AgentPayClient(merchant_id="demo_123", api_key="your_key")
response = client.health_check()
print(f"Kết nối thành công: {response['status']}")

Nếu in ra Kết nối thành công: healthy, bạn đã sẵn sàng bán hàng.

Mã ví dụ thực tế: Bot bán khoá học

Giả sử bạn có một chatbot bán khoá học "Lập trình Python từ 0" giá 299.000 VNĐ. Dưới đây là flow hoàn chỉnh:

import asyncio
from agentpay_vn import AgentPayClient, PaymentRequest

# Khởi tạo client
client = AgentPayClient(
    merchant_id="shop_laptrinhpython",
    api_key="sk_live_abc123xyz"
)

async def handle_student_purchase(student_name: str, student_email: str):
    """
    Xử lý yêu cầu mua khoá học từ chatbot
    """

    # Bước 1: Tạo yêu cầu thanh toán
    payment_req = PaymentRequest(
        merchant_id="shop_laptrinhpython",
        amount_vnd=299_000,
        description=f"Khoá Python Cơ Bản - {student_name}",
        customer_name=student_name,
        customer_email=student_email,
        metadata={
            "course_id": "python_101",
            "course_name": "Lập trình Python từ 0",
            "access_duration_days": 365
        }
    )

    # Tạo payment request trên server
    payment = await client.create_payment_request(payment_req)

    print(f"✓ Yêu cầu thanh toán tạo thành công")
    print(f"  Payment ID: {payment['payment_id']}")
    print(f"  QR Code: {payment['qr_code_url']}")

    # Bước 2: Gửi checkout link cho khách
    checkout_message = f"""
    Bạn đã chọn khoá học "Lập trình Python từ 0" (299.000 VNĐ).

    👉 Quét mã QR để thanh toán:
    {payment['qr_code_url']}

    Hoặc copy link: {payment['checkout_url']}

    Sau khi thanh toán, bạn sẽ nhận được truy cập ngay lập tức!
    """

    # Bot gửi pesan này cho user (SMS, Telegram, email, tùy)
    # send_to_user(student_email, checkout_message)

    # Bước 3: Đợi settlement xác nhận
    print(f"\n⏳ Chờ khách thanh toán...")

    settlement = await client.await_settlement(
        payment_id=payment['payment_id'],
        timeout_seconds=600  # 10 phút
    )

    if settlement['status'] == 'settled':
        print(f"✅ THANH TOÁN THÀNH CÔNG!")
        print(f"   Tiền vào tài khoản: {settlement['amount_received']} VNĐ")
        print(f"   Thời gian: {settlement['settled_at']}")

        # Trao sản phẩm cho học sinh
        access_token = generate_course_access_token(
            student_email=student_email,
            course_id="python_101",
            expires_days=365
        )

        send_access_email(
            student_email,
            access_token,
            course_name="Lập trình Python từ 0"
        )

        return {"success": True, "message": "Trao khoá học thành công!"}

    else:
        print(f"❌ Thanh toán thất bại hoặc hết hạn")
        return {"success": False, "message": "Thanh toán không hoàn thành"}

# Chạy khi khách nói "Mua khoá Python"
asyncio.run(handle_student_purchase(
    student_name="Nguyễn Văn A",
    student_email="a@example.com"
))

Giải thích từng phần:

Ứng dụng thực tế: 5 kịch bản

1. Bot bán khoá học trực tuyến

2. Quán cà phê: Thanh toán trước để giữ chỗ

3. Shop online mini: Thanh toán ghi tên

4. Sự kiện / vé tham dự

5. Tư vấn + Booking dịch vụ

Nên và Không nên khi dùng AgentPay VN

✅ NÊN ❌ KHÔNG NÊN
Tạo payment request mỗi lần khách mua Giữ private key trong code hoặc git
Dùng await_settlement() để chờ xác nhận Tăng timeout quá cao (>1h) gây lag
Lưu payment_id để tracking & audit Xóa metadata sau khi trao sản phẩm
Test ở chế độ sandbox trước production Deploy mà chưa test flow end-to-end
Gửi email/SMS xác nhận ngay khi settled Trao sản phẩm trước khi settlement hoàn toàn
Retry settlement check nếu timeout Vội vàng, bỏ qua settlement confirmation

Câu hỏi thường gặp

Q1: Nếu khách thanh toán nhưng mạng mất, bot không nhận được settlement thông báo, thì sao?

A: AgentPay VN kết nối trực tiếp với bank feed của bạn (ví dụ API Vietcombank, BIDV). Nếu settlement thực sự xảy ra ở ngân hàng, bot sẽ retry kiểm tra mỗi vài giây. Nếu khách không thấy sản phẩm, họ có thể forward email xác nhận từ ngân hàng, bạn kiểm tra payment_id trong AgentPay dashboard và trao lại.

A: Mặc định link QR có hiệu lực 10 phút (thông qua timeout_seconds=600). Nếu khách quá 10 phút chưa thanh toán, yêu cầu hết hạn. Khách phải chat lại, bot tạo yêu cầu mới.

Q3: Có được dùng AgentPay VN để bot tự rút tiền ra ngân hàng khác không?

A: Không, AgentPay VN chỉ nhận tiền vào tài khoản merchant của bạn. Rút tiền là chuyện riêng của bạn với ngân hàng. Điều này vừa an toàn (bot không cần quyền rút), vừa tuân thủ (tài chính do bạn kiểm soát).

Q4: AgentPay VN có hỗ trợ payment plan (thanh toán theo kỳ) không?

A: Phiên bản hiện tại tập trung vào one-time payments. Tuy nhiên bạn có thể lập trình: sau mỗi tháng, bot tự tạo payment request mới và gửi yêu cầu thanh toán định kỳ.

Các tính năng nâng cao

Webhook & Event Listener

Ngoài await_settlement() chờ đồng bộ, bạn có thể dùng webhook để bot nhận thông báo bất đồng bộ:

from agentpay_vn import WebhookListener

listener = WebhookListener(port=8000)

@listener.on("payment.settled")
async def handle_settlement(event):
    payment_id = event['payment_id']
    amount = event['amount_vnd']

    print(f"Payment {payment_id} settled: {amount} VNĐ")
    # Trao sản phẩm, gửi email, update database...

listener.start()

Refund & Cancellation

Nếu khách muốn hoàn tiền (ví dụ không hài lòng khoá học):

refund = await client.refund_payment(
    payment_id="pay_abc123",
    reason="Khách hàng yêu cầu hoàn tiền"
)

print(f"Refund status: {refund['status']}")
# Tiền sẽ hoàn lại tài khoản khách trong 1-3 ngày làm việc

So sánh tổng quan: Giải pháp thanh toán cho AI agents

Tiêu chí AgentPay VN Stripe PayPal Direct Bank
Bảo mật ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐
Phí 0% 3.6% 3.5% 0%
Bot giữ tiền? KHÔNG KHÔNG KHÔNG CÓ (rủi ro)
Settlement tự động KHÔNG
Dùng VietQR KHÔNG KHÔNG
Quy mô từ 0 KHÔNG
Dễ tích hợp AI ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐

Tóm tắt nhanh

AgentPay VN là gì? SDK Python (MIT) + MCP server cho AI agents tạo payment request VietQR mà không giữ tiền.

3 bước chính: create_payment_request() → gửi QR → await_settlement()

Cài đặt: pip install agentpay-vn

Tiền đi đâu? Thẳng vào tài khoản ngân hàng merchant, bot chỉ là trung gian xác nhận.

Ai nên dùng? Bot bán sản phẩm số (khoá học, ebook, plugin), dịch vụ booking, quản lý sự kiện, shop online mini.

Ưu điểm: Phí 0%, settlement tự động, bảo mật cao, quy mô không giới hạn, tuân thủ pháp luật.

Khó khăn? Cần account VietQR, bank feed, setup MCP nếu dùng Claude.

Bước tiếp theo

  1. Truy cập docs chính thức: https://agentpay.servicesai.vn/v1/docs
  2. Clone GitHub repository: https://github.com/phuocdu/agentpay-vn
  3. Cài đặt: pip install agentpay-vn
  4. Chạy ví dụ demo: python examples/simple_checkout.py
  5. Tích hợp vào bot của bạn: Copy pattern ở phần "Mã ví dụ" ở trên
  6. Test ở sandbox: Dùng account test trước khi go live
  7. Deploy & thu tiền: Bạn đã sẵn sàng bán hàng tự động!

Nhớ rằng: AI agents không cần quyền giữ tiền để bán hàng tốt. AgentPay VN chứng minh điều đó. Thanh toán đơn giản, bảo mật cao, dòng tiền rõ ràng — đó là cách bán hàng của tương lai.

Chúc bạn thành công! 🚀

Bắt đầu →

← Tất cả bài