MCP Server thu phí VietQR: Để Claude thu tiền trong chat

2026-10-03 · AgentPay VN

aipythonmcpvietqragentpay

Tình huống: Khi AI agent cần thu tiền trong cuộc hội thoại

Bạn vừa xây dựng một chatbot bán khóa học online. Claude đáp ứng tuyệt vời: tư vấn khoá phù hợp, giải đáp câu hỏi, thậm chí tính toán lộ trình học tập. Nhưng vấn đề là... khi khách hàng muốn mua, bạn vẫn phải chuyển hướng sang form thanh toán bên ngoài. Người dùng phải rời khỏi chat, tìm form, điền thông tin rồi quay lại. Trải nghiệm gián đoạn, tỷ lệ chuyển đổi thấp.

Có cách nào để Claude trực tiếp tạo QR code thanh toán mà không cần ai can thiệp bên thứ ba? Câu trả lời là MCP server với AgentPay VN.


MCP là gì? Tại sao nó lại quan trọng cho AI

Model Context Protocol (MCP) là một chuẩn mở cho phép AI models (như Claude) gọi các function bên ngoài một cách an toàn. Thay vì Claude chỉ có thể viết text, nó giờ có thể gọi tools – ví dụ: - Truy vấn database - Gửi email - Tạo QR code thanh toán

MCP server là một dịch vụ nhỏ chạy trên máy của bạn (hoặc VPS) định nghĩa những tools mà Claude được phép sử dụng. Khi Claude cần tính giá tiền đơn hàng rồi yêu cầu khách hàng thanh toán, nó gọi đến MCP server của bạn – cái server này sử dụng AgentPay SDK để tạo QR code VietQR.


Tại sao chọn AgentPay VN thay vì các giải pháp khác?

Nhiều nền tảng thanh toán yêu cầu bạn tích hợp trực tiếp API, quản lý token, xử lý webhook phức tạp. AgentPay VN khác:

| Tiêu chí | AgentPay VN | Payment Gateway thường | | |---------|-------------|------------------------| | Cài đặt | 1 câu lệnh pip | Đăng ký, kiểm duyệt tài khoản | | Giữ tiền | Không – chuyền trực tiếp ngân hàng | Có (rủi ro) | | Xác nhận thanh toán | Bank feed tự động | Webhook (dễ mất dữ liệu) | | Open source | Có (MIT) | Không, proprietary | | Thiết lập MCP | Sẵn sàng (agentpay-mcp) | Phải viết code từ đầu |

Với AgentPay, bạn chỉ cần: 1. Có tài khoản ngân hàng Việt Nam 2. Cài SDK: pip install agentpay-vn 3. Chạy MCP server: agentpay-mcp 4. Claude tự động biết cách tạo thanh toán


Cách hoạt động: 3 bước đơn giản

Quy trình thanh toán AgentPay VN chỉ có 3 bước cơ bản (nhưng mạnh mẽ):

Bước 1: Tạo yêu cầu thanh toán (create_payment_request)

Claude gọi hàm này để tạo một yêu cầu thanh toán duy nhất cho đơn hàng:

from agentpay_vn import AgentPayClient

# Khởi tạo client (sử dụng credentials từ biến môi trường)
client = AgentPayClient()

# Tạo yêu cầu thanh toán
payment_request = client.create_payment_request(
    amount_vnd=500000,  # 500k VND – giá khoá học
    description="Khóa học Python Advanced",
    order_id="order_2024_001",  # ID duy nhất của đơn
    customer_email="student@example.com"
)

print(f"Payment ID: {payment_request.payment_id}")
print(f"QR Code URL: {payment_request.checkout_url}")

Giải thích: - amount_vnd: Số tiền cần thu (tính bằng đồng Việt Nam) - description: Mô tả thanh toán (khách hàng sẽ thấy trên điện thoại) - order_id: ID duy nhất để bạn tracking sau này - checkout_url: Đây là URL chứa QR code VietQR – Claude sẽ gửi cho khách

Bước 2: Gửi QR code đến khách (send_checkout_url)

Claude sẽ hiển thị QR code hoặc link cho khách hàng:

# Claude tự động trả về cho người dùng
response_to_user = f"""
Đơn hàng của bạn đã tạo! 🎉

Giá: 500,000 VND
Mô tả: Khóa học Python Advanced

Vui lòng quét QR code bên dưới (hoặc click link):
{payment_request.checkout_url}

Bạn có 15 phút để thanh toán.
"""

print(response_to_user)

Như vậy, khách hàng không cần rời khỏi chat. Họ quét QR code bằng app ngân hàng, chuyển tiền một phát là xong.

Bước 3: Chờ xác nhận thanh toán (await_settlement)

MCP server liên tục kiểm tra xem tiền đã về tài khoản của bạn chưa:

# Chờ tối đa 15 phút để khách hàng thanh toán
settlement = await client.await_settlement(
    payment_id=payment_request.payment_id,
    timeout_seconds=900  # 15 phút
)

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

    # Bây giờ bạn có thể kích hoạt quyền truy cập khoá học
    activate_course_access(student_email=payment_request.customer_email)
else:
    print("❌ Thanh toán thất bại hoặc hết thời gian")

Điểm mạnh của await_settlement: - Kiểm tra trực tiếp bank feed (không phụ thuộc webhook) - Tiền không bao giờ lưu trong AgentPay – chuyển thẳng tài khoản của bạn - Bạn có control 100% về dòng tiền


Cấu hình MCP Server để Claude sử dụng

MCP server cần được cấu hình để Claude (hoặc bất kỳ AI client nào) biết về các tools. Tệp cấu hình (thường là mcp_config.json hoặc trong file claude_desktop_config.json):

{
  "mcpServers": {
    "agentpay-vn": {
      "command": "agentpay-mcp",
      "env": {
        "AGENTPAY_MERCHANT_ID": "merchant_your_id",
        "AGENTPAY_API_KEY": "your_api_key_here",
        "AGENTPAY_BANK_ACCOUNT": "1234567890"
      }
    }
  }
}

Khi Claude Desktop hoặc bất kỳ MCP client nào khởi động, nó sẽ: 1. Chạy lệnh agentpay-mcp 2. Kết nối tới MCP server này 3. Tự động biết có 3 tools: create_payment_request, send_checkout_url, await_settlement 4. Khi người dùng yêu cầu thanh toán, Claude gọi các tools này mà không cần prompt kỹ thuật


Ví dụ thực tế: Bot bán khóa học online

Hãy tưởng tượng một kịch bản hoàn chỉnh:

Khách hàng: "Mình muốn học Python nâng cao. Bao nhiêu tiền?"

Claude (powered by AgentPay):

"Khá tuyệt! Khóa Python Advanced của mình có:
- 12 buổi video (4 giờ/buổi)
- Bài tập thực hành từng ngày
- 1 project cuối khóa
- Hỗ trợ trực tiếp trong Telegram

Giá: 500,000 VND (còn 20% discount nếu bạn đăng ký hôm nay)

Mình tạo đơn hàng cho bạn ngay..."

[Claude gọi create_payment_request]

"✅ Xong! Đây là QR code thanh toán của bạn:
[QR code hiển thị]

Quét bằng app ngân hàng bạn (Vietcombank, Agribank, TPBank, v.v.) và chuyển tiền. Tiền sẽ về tài khoản mình ngay, mình sẽ kích hoạt khoá học cho bạn trong vòng 5 phút.

Bạn cần hỗ trợ không?"

[Khách hàng quét QR và chuyển tiền trong ứng dụng ngân hàng]

[MCP server nhận thông báo từ bank feed]

"🎉 Thanh toán thành công! Mình đã kích hoạt khoá học cho bạn. Link tham gia: [link]. Hoặc bạn có thể bắt đầu video đầu tiên ngay bây giờ—mình có thể hướng dẫn từng bước nếu cần!"

Toàn bộ trải nghiệm xảy ra trong 1 cửa sổ chat duy nhất. Không pop-up, không chuyển hướng, không form bên ngoài.


Hướng dẫn cài đặt từng bước

1. Cài đặt AgentPay SDK

pip install agentpay-vn

Lệnh này sẽ cài: - SDK Python chính - Tất cả dependencies (requests, pydantic, v.v.)

2. Lấy thông tin tài khoản

Bạn cần: - Merchant ID: ID của doanh nghiệp/shop của bạn (cấp từ AgentPay) - API Key: Khóa bí mật để xác thực (lưu trữ an toàn!) - Số tài khoản ngân hàng: Nơi tiền sẽ chuyển vào

Xem hướng dẫn chi tiết: https://agentpay.servicesai.vn/v1/docs

3. Cấu hình biến môi trường

# Tạo file .env
echo "AGENTPAY_MERCHANT_ID=merchant_xyz" >> .env
echo "AGENTPAY_API_KEY=sk_live_abc123" >> .env
echo "AGENTPAY_BANK_ACCOUNT=1234567890" >> .env

Lưu ý bảo mật: Không bao giờ commit .env vào Git!

4. Chạy MCP server

agentpay-mcp

Bạn sẽ thấy output như:

Starting AgentPay MCP Server...
Listening on stdio
Tools registered: create_payment_request, send_checkout_url, await_settlement

5. Kết nối với Claude

Nếu dùng Claude Desktop: 1. Mở ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) hoặc Windows equivalent 2. Thêm cấu hình MCP ở trên 3. Restart Claude Desktop

Nếu dùng API Claude trực tiếp, bạn cần MCP client library (xem docs).


Nâng cao: Tùy chỉnh flow và error handling

Xử lý thanh toán thất bại

from agentpay_vn import AgentPayClient, PaymentTimeoutError

client = AgentPayClient()

try:
    payment = client.create_payment_request(
        amount_vnd=1000000,
        description="Premium Membership 1 năm",
        order_id="order_premium_2024"
    )

    settlement = client.await_settlement(
        payment_id=payment.payment_id,
        timeout_seconds=1800  # 30 phút
    )

    if settlement.is_confirmed:
        # Kích hoạt membership
        grant_premium_access(user_id=payment.customer_email)
    else:
        # Gửi email nhắc nhở
        send_reminder_email(
            email=payment.customer_email,
            checkout_url=payment.checkout_url
        )
except PaymentTimeoutError:
    print("Khách hàng không thanh toán trong thời gian quy định")
except Exception as e:
    print(f"Lỗi: {e}")
    # Ghi log và thông báo cho admin

Kiểm tra trạng thái thanh toán bất kỳ lúc nào

# Sau khi tạo payment, bạn có thể query trạng thái sau đó
status = client.get_payment_status(payment_id="pay_xyz")
print(f"Trạng thái: {status.status}")  # pending, confirmed, failed
print(f"Số tiền: {status.amount_vnd}")

FAQ: Những câu hỏi thường gặp

1. Nếu khách hàng quét QR nhưng chuyển tiền sai số, sao?

AgentPay sẽ kiểm tra transaction ID từ ngân hàng. Nếu số tiền không khớp hoặc mô tả sai, nó sẽ không xác nhận (is_confirmed = false). Bạn có thể yêu cầu khách hàng quét lại hoặc chuyển lại.

2. Tiền có về tài khoản mình không? Mất không?

Có. AgentPay không bao giờ lưu trữ tiền. QR code VietQR trỏ trực tiếp đến số tài khoản ngân hàng của bạn (đã khai báo). Tiền chuyển từ khách → ngân hàng của bạn. AgentPay chỉ là "người canh chừng" để xác nhận transaction đã xảy ra.

3. Tôi có thể dùng nhiều loại ngân hàng khác nhau không?

Có. Miễn là ngân hàng hỗ trợ VietQR (Vietcombank, Agribank, Techcombank, TPBank, v.v.—gần như tất cả). Bạn chỉ cần cung cấp 1 số tài khoản duy nhất khi setup.

4. MCP server có cần chạy 24/7?

Có. Để await_settlement hoạt động, server phải liên tục kiểm tra bank feed. Nếu server shutdown, bạn sẽ miss các thông báo thanh toán. Khuyến khích deploy trên VPS hoặc dùng Docker container với auto-restart.


Nên & Không nên khi tích hợp AgentPay

✅ NÊN: - Lưu AGENTPAY_API_KEY trong biến môi trường, không hardcode - Kiểm tra settlement.is_confirmed trước khi kích hoạt dịch vụ - Cấu hình timeout hợp lý (15-30 phút) để khách có đủ thời gian - Ghi log tất cả transactions để audit sau - Gửi email xác nhận cho khách khi thanh toán thành công

❌ KHÔNG NÊN: - Gửi API key qua email hoặc Slack - Kích hoạt dịch vụ trước khi đợi is_confirmed - Dùng cùng 1 order_id cho nhiều đơn hàng - Deploy MCP server trên máy tính cá nhân (sẽ offline) - Tin rằng webhook sẽ lúc nào cũng hoạt động (dùng bank feed thay vào)


Tóm tắt nhanh


Bắt đầu ngay hôm nay

Nếu bạn muốn Claude của mình có thể thu tiền mà không cần middleware, hãy thử AgentPay VN:

  1. Cài đặt: pip install agentpay-vn
  2. Xem docs đầy đủ: https://agentpay.servicesai.vn/v1/docs
  3. Repository GitHub: https://github.com/phuocdu/agentpay-vn (star nếu thích!)
  4. Deploy MCP: agentpay-mcp + cấu hình Claude Desktop

Lần tới khi khách hàng hỏi "Bao nhiêu tiền?", Claude sẽ không chỉ tính toán—mà còn tạo QR code, đợi xác nhận, và thông báo khoá học đã sẵn sàng, tất cả trong vài giây.

Đó chính là future of AI payments—không cần backend, không cần form, không cần chuyển hướng. Chỉ pure conversation + tiền vào tài khoản của bạn.

Happy selling! 🚀

Bắt đầu →

← Tất cả bài