Thêm thanh toán VietQR cho AI agent trong 10 phút với AgentPay

2026-09-04 · AgentPay VN

aipythonvietqrmcpthanh-toán

Bạn có một AI agent tuyệt vời, nhưng nó không thể nhận tiền

Hãy tưởng tượng: bạn vừa xây dựng một bot AI bán khoá học online. Nó trả lời câu hỏi học sinh, gợi ý bài tập phù hợp, thậm chí giáo dục cá nhân hóa. Tất cả hoạt động hoàn hảo... cho đến khi học sinh muốn thanh toán. Lúc đó bạn vẫn phải:

Mất rồi. Trải nghiệm bị gián đoạn. Khách hàng có thể bỏ ngang.

Nếu bạn đang có cảm giác này, AgentPay VN sẽ giúp bạn giải quyết nó chỉ trong 10 phút.

Vấn đề thực tế: Tại sao thêm thanh toán lại khó?

Hầu hết các giải pháp thanh toán hiện nay được thiết kế cho website hoặc ứng dụng di động—những giao diện có form, button, callback. Nhưng AI agent lại khác:

Kết quả: 80% các agent AI được xây dựng với Claude, GPT, hoặc Anthropic không bao giờ có khả năng thanh toán.

Giới thiệu AgentPay VN: Thanh toán cho agent chỉ bằng 3 dòng code

AgentPay VN là một Python SDK mã nguồn mở (MIT license) + MCP server cho phép AI agent của bạn:

  1. Tạo yêu cầu thanh toán → agent gửi URL checkout
  2. Khách hàng scan QR → thanh toán trực tiếp vào tài khoản ngân hàng của bạn
  3. Agent xác nhận → tự động tiếp tục logic kế tiếp

Quan trọng nhất: AgentPay không bao giờ giữ tiền. QR code trỏ thẳng tới tài khoản ngân hàng của bạn. Bank feed gửi về xác nhận, SDK chỉ cần chờ.

Agent AI ─── gọi create_payment_request() ──→ Nhận URL QR
              ↓
           Gửi checkout_url cho khách
              ↓
           Khách scan QR ──→ Thanh toán qua ngân hàng
              ↓
        await_settlement() nhận xác nhận
              ↓
           Agent tiếp tục logic (giao hàng, unlock khoá học...)

Hướng dẫn từng bước: Cài đặt trong 5 phút

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

Mở terminal và chạy:

pip install agentpay-vn

Tất cả xong. Không cần setup database, không cần chứng chỉ SSL, không cần tạo merchant account phức tạp.

Bước 2: Khởi tạo SDK trong code của bạn

from agentpay_vn import AgentPayClient, PaymentRequest

# Khởi tạo client với cấu hình đơn giản
client = AgentPayClient(
    merchant_account="your_bank_account@bank",  # VietQR format
    merchant_name="Your Shop Name",             # Tên hiển thị trên QR
    api_key="your_agentpay_api_key"             # Lấy từ dashboard
)

Giải thích: - merchant_account: Tài khoản ngân hàng của bạn (định dạng VietQR, ví dụ: 123456789@vietcombank) - merchant_name: Tên shop hiển thị khi khách hàng scan QR - api_key: Token để xác thực với AgentPay backend (lấy miễn phí từ dashboard)

Bước 3: Tạo yêu cầu thanh toán khi agent cần

Như đã nói, chỉ cần 3 bước. Dưới đây là code thực tế mà agent sẽ gọi:

# Step 1: Agent tạo yêu cầu thanh toán
payment_request = client.create_payment_request(
    amount_vnd=299000,                          # Số tiền: 299k VND
    description="Khoá học Python Advanced",    # Mô tả (hiển thị trên QR)
    customer_id="student_12345",                # ID khách (để tracking)
    timeout_seconds=600                         # QR hết hiệu lực sau 10 phút
)

# Step 2: Lấy checkout URL để gửi cho khách
checkout_url = payment_request.checkout_url
print(f"Khách vui lòng thanh toán tại: {checkout_url}")

# Step 3: Chờ xác nhận từ bank
settlement = client.await_settlement(
    request_id=payment_request.request_id,
    timeout_seconds=600                        # Chờ tối đa 10 phút
)

if settlement.is_confirmed:
    print(f"✅ Thanh toán thành công! Số tiền: {settlement.amount_vnd} VND")
    print(f"   Người chuyển: {settlement.sender_account}")
    print(f"   Mã giao dịch: {settlement.transaction_id}")

    # Agent tiếp tục logic: ghi nhập học, gửi tài liệu, unlock content...
    deliver_course_materials(customer_id=payment_request.customer_id)
else:
    print("❌ Thanh toán chưa được xác nhận, vui lòng thử lại.")

Từng dòng chi tiết: - create_payment_request(): Tạo session thanh toán với số tiền, mô tả, và timeout - checkout_url: URL mà agent gửi cho khách (có thể là QR inline hoặc link Zalo Pay) - await_settlement(): Hàm non-blocking chờ xác nhận từ bank feed (không spam API) - settlement.is_confirmed: True nếu ngân hàng xác nhận thanh toán

Tích hợp với Claude / Anthropic (MCP Server)

Nếu bạn dùng Claude API với Model Context Protocol (MCP), agent của bạn có thể tự gọi thanh toán mà không cần lập trình từng bước.

Cấu hình MCP Server

Tạo file mcp-config.json:

{
  "mcpServers": {
    "agentpay": {
      "command": "python",
      "args": ["-m", "agentpay_mcp"],
      "env": {
        "AGENTPAY_API_KEY": "your_api_key_here",
        "MERCHANT_ACCOUNT": "123456789@vietcombank",
        "MERCHANT_NAME": "Your Shop"
      }
    }
  }
}

Cài MCP server:

pip install agentpay-mcp

Sau đó, Claude sẽ tự động có các tool: - create_payment_request – tạo yêu cầu thanh toán - check_settlement_status – kiểm tra trạng thái - cancel_payment_request – hủy nếu cần

Ví dụ hội thoại:

User: "Tôi muốn mua khoá học Python Advanced, giá 299k."

Claude Agent:
  → Gọi tool: create_payment_request(amount_vnd=299000, description="Python Advanced")
  → Nhận: checkout_url = "https://agentpay.servicesai.vn/pay/abc123"
  → Trả lời: "✅ Tuyệt vời! Bạn vui lòng scan QR hoặc click link này để thanh toán..."
  → Chờ backend thông báo (await_settlement)
  → Khi bank confirm: "🎉 Thanh toán thành công! Tài liệu khoá học đã gửi vào email."

Ví dụ kịch bản đời thực: Bot bán khoá học

Hãy xem một use case hoàn chỉnh:

from agentpay_vn import AgentPayClient
import anthropic

# Cấu hình
client = AgentPayClient(
    merchant_account="0123456789@vietcombank",
    merchant_name="AI Learning Hub",
    api_key="your_key"
)

clause_client = anthropic.Anthropic()

def handle_course_purchase(course_name, price_vnd, customer_email):
    """Xử lý mua khoá học qua AI agent"""

    # 1. Tạo yêu cầu thanh toán
    payment_req = client.create_payment_request(
        amount_vnd=price_vnd,
        description=f"Khoá học: {course_name}",
        customer_id=customer_email,
        timeout_seconds=900  # 15 phút
    )

    print(f"📲 Vui lòng thanh toán: {payment_req.checkout_url}")

    # 2. Agent chờ xác nhận (non-blocking, không tốn CPU)
    settlement = client.await_settlement(
        request_id=payment_req.request_id,
        timeout_seconds=900
    )

    # 3. Nếu thanh toán thành công
    if settlement.is_confirmed:
        print(f"✅ Nhận {settlement.amount_vnd} VND từ {settlement.sender_account}")
        print(f"📧 Gửi tài liệu tới {customer_email}")
        print(f"🔓 Unlock khoá học {course_name}")

        # Giả sử có hàm helper
        send_course_materials(customer_email, course_name)
        return True
    else:
        print("❌ Thanh toán hết hạn. Vui lòng thử lại.")
        return False

# Chạy
handle_course_purchase(
    course_name="Python Advanced",
    price_vnd=299000,
    customer_email="student@example.com"
)

Kịch bản này mô tả: 1. Bot gợi ý khoá học, khách hỏi giá 2. Agent tạo QR thanh toán ngay trong chat 3. Khách scan + chuyển khoản (từ ứng dụng ngân hàng yêu thích) 4. Agent nhận xác nhận trong 5-10 giây 5. Tài liệu được gửi tự động, unlock khoá học

Không cần redirect, không cần chờ, không cần email xác nhận thủ công.

Nên làm gì & Không nên làm gì

✅ Nên ❌ Không nên
Sử dụng await_settlement() để chờ async Gọi check_settlement_status() liên tục (spam API)
Lưu request_id để tracking Giả vờ thanh toán đã thành công trước khi bank confirm
Set timeout hợp lý (300-900 giây) Để QR hết hiệu lực sau 24h (khách quên, agent vẫn chờ)
Sử dụng merchant_account định dạng chuẩn VietQR Nhập sai tài khoản rồi tự hỏi tại sao tiền không vào
Ghi log transaction_id cho audit Bỏ qua transaction_id, khó debug sau
Test với amount nhỏ trước (1000 VND) Deploy thẳng lên production với logic chưa kiểm chứng

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

1. AgentPay có giữ lại tiền không? Phải chia lợi nhuận không?

Không. AgentPay không bao giờ chạm tiền của bạn. QR code trỏ thẳng tới tài khoản ngân hàng của bạn—tiền vào tài khoản, bạn kiểm soát 100%. AgentPay chỉ là "người câu kết" giữa agent và bank API. Không có phí ẩn, không có chia lợi nhuận, không có giữ tiền.

2. Bao lâu thì nhận được tiền sau khi khách thanh toán?

Tùy ngân hàng, thường 3-5 phút nếu cùng ngân hàng, 5-30 phút nếu khác ngân hàng. SDK của bạn nhận xác nhận qua bank feed API, không phải đợi T+1 hay batch processing.

3. Nếu khách cancel đơn hàng, có thể hoàn tiền không?

Có. Bạn gọi refund_transaction() với transaction_id từ settlement. Tiền quay lại tài khoản khách trong 1-3 giờ. AgentPay xử lý bên backend.

4. Cần phải tạo account, setup merchant gì không?

Không. Chỉ cần cung cấp: - Tài khoản ngân hàng (bất kỳ ngân hàng nào có hỗ trợ VietQR) - Email để nhận api_key (miễn phí từ dashboard agentpay.servicesai.vn)

Đó là tất cả. Không form dài, không giấy tờ, không audit 3 ngày.

Tóm tắt nhanh

Bước tiếp theo

Bạn đã sẵn sàng thêm thanh toán cho AI agent:

  1. Đọc docs đầy đủ: https://agentpay.servicesai.vn/v1/docs
  2. Clone example: https://github.com/phuocdu/agentpay-vn (folder examples/)
  3. Cài và test ngay: pip install agentpay-vn → tạo .env → chạy python example.py
  4. Lên production: Deploy MCP server, cấu hình Claude/GPT, kích hoạt agent

Các bot bán hàng, khoá học, dịch vụ AI sẽ không còn đơn giản chỉ "nói chuyện"—chúng sẽ bán, nhận tiền, giao hàng tất cả trong một cuộc hội thoại mượt mà.

Bắt đầu ngay. 10 phút là đủ.

Bắt đầu →

← Tất cả bài