Tạo MCP Server Có Thu Phí: Cho Claude Thanh Toán Ngay Trong Chat

2026-10-01 · AgentPay VN

aipythonmcpvietqrthanh-toán

Vấn đề: AI Agent Của Bạn Có Thể Kiếm Tiền, Nhưng Chưa Bao Giờ Thử

Hãy tưởng tượng: Bạn xây dựng một chatbot AI bán khoá học trực tuyến. Khách hàng yêu thích nội dung, thậm chí muốn mua ngay trong cuộc hội thoại — nhưng dừng lại ở "hãy chuyển khoản qua...". Họ rời đi. Giao dịch mất.

Hoặc bạn chạy một bot quản lý đơn đặt hàng cho quán cà phê. Khách yêu cầu "thanh toán ngay đây", nhưng bot không làm được gì ngoài tạo hoá đơn. Bạn mất cơ hội bán hang.

Vấn đề thực là: AI agents hiện tại không thể xử lý thanh toán một cách tự nhiên và an toàn. Hầu hết giải pháp yêu cầu khách chuyển hướng, hoặc yêu cầu ứng dụng của bạn "lưu giữ tiền" — điều rủi ro và phức tạp.

AgentPay VN thay đổi điều này hoàn toàn.


AgentPay VN Là Gì? Tại Sao Lại Dùng MCP?

AgentPay VN là một SDK Python mã nguồn mở (MIT) cho phép AI agents thu tiền thông qua VietQR — hệ thống mã QR thanh toán ngân hàng của Việt Nam. Điểm khác biệt lớn nhất:

Ứng dụng của bạn KHÔNG bao giờ giữ tiền. QR code trỏ thẳng vào tài khoản ngân hàng của merchant (bạn). Khi khách quét và thanh toán, tiền về tài khoản bạn ngay. Một feed từ ngân hàng xác nhận giao dịch.

MCP (Model Context Protocol) là một tiêu chuẩn cho phép Claude và các AI agents khác "gọi các công cụ bên ngoài" một cách an toàn. Thay vì viết code Claude không hiểu, bạn tạo một MCP server có các hàm như create_payment_request(), await_settlement() — Claude sẽ tự động sử dụng chúng khi cần thanh toán.

Kết quả: "Bạn có thể bán gì đó trực tiếp trong cuộc hội thoại với Claude."


Cài Đặt: 3 Lệnh, Bạn Sẵn Sàng

Bước 1: Cài SDK

pip install agentpay-vn

Có thế. SDK Python của AgentPay VN sẽ được tải về máy bạn.

Bước 2: Cài MCP Server

pip install agentpay-mcp

MCP server là cái "cầu nối" giữa Claude và SDK. Nó chạy ở background, lắng nghe các lệnh từ Claude.

Bước 3: Cấu Hình Thông Tin Merchant

Bạn cần cung cấp thông tin ngân hàng của bạn (tên ngân hàng, số tài khoản, tên chủ tài khoản). AgentPay VN hỗ trợ hầu hết các ngân hàng lớn ở Việt Nam.


Quy Trình 3 Dòng: Từ Yêu Cầu Thanh Toán Đến Xác Nhận

Mọi giao dịch qua AgentPay VN tuân theo một quy trình đơn giản:

1. Tạo Yêu Cầu Thanh Toán

from agentpay_vn import PaymentRequest

# Claude gọi hàm này khi khách muốn mua
payment = create_payment_request(
    merchant_id="your_merchant_id",        # ID của bạn từ AgentPay
    amount_vnd=299000,                     # Giá bán: 299,000 VND
    description="Khoá học Python Advanced",# Mô tả sản phẩm
    order_id="order_20250115_001",        # ID đơn hàng duy nhất
    customer_email="khach@example.com"    # Email khách
)

checkout_url = payment.checkout_url
print(f"Gửi QR này cho khách: {checkout_url}")

Giải thích: - create_payment_request() tạo một yêu cầu thanh toán mới. - amount_vnd là số tiền khách phải trả (tính bằng đồng Việt). - order_id là một mã duy nhất để bạn theo dõi đơn hàng này (không được trùng). - Hàm trả về một object có checkout_url — URL chứa QR code VietQR.

2. Gửi URL Checkout Cho Khách

Claude (hoặc bot của bạn) gửi checkout_url cho khách. Khách quét QR bằng app ngân hàng → thanh toán → hoàn tất.

3. Chờ Xác Nhận Thanh Toán

import asyncio
from agentpay_vn import await_settlement

async def wait_for_payment(order_id):
    """Chờ tối đa 15 phút cho xác nhận thanh toán"""
    result = await await_settlement(
        order_id=order_id,
        timeout_seconds=900  # 15 phút
    )

    if result.status == "settled":
        print(f"✅ Thanh toán thành công! Khách đã gửi {result.amount_vnd} VND")
        # Cấp quyền truy cập khoá học, gửi email xác nhận, v.v.
        return True
    else:
        print(f"❌ Thanh toán thất bại hoặc hết thời gian")
        return False

# Claude tự động gọi trong backend
result = asyncio.run(wait_for_payment("order_20250115_001"))

Giải thích: - await_settlement() là một async function — nó "chờ" tiền đến mà không làm treo ứng dụng. - timeout_seconds=900 nghĩa là nếu quá 15 phút mà chưa có tiền, thôi chờ. - result.status == "settled" cho biết tiền đã vào tài khoản bạn. - Khi thanh toán thành công, bạn có thể tự động cấp quyền sản phẩm, gửi email, hoặc làm gì đó khác.


Cấu Hình MCP Server Cho Claude

Để Claude biết cách dùng AgentPay, bạn phải "đăng ký" MCP server vào Claude hoặc ứng dụng của mình.

File cấu hình claude_config.json (hoặc trong .env):

{
  "mcp_servers": {
    "agentpay": {
      "type": "stdio",
      "command": "python",
      "args": ["-m", "agentpay_mcp"],
      "env": {
        "AGENTPAY_MERCHANT_ID": "your_merchant_id",
        "AGENTPAY_BANK_NAME": "Vietcombank",
        "AGENTPAY_ACCOUNT_NUMBER": "1234567890",
        "AGENTPAY_ACCOUNT_NAME": "Nguyen Van A"
      }
    }
  }
}

Giải thích: - "type": "stdio" nghĩa là MCP server chạy như một process riêng. - "command": "python", "args": ["-m", "agentpay_mcp"] khởi động MCP server. - Các biến env là thông tin ngân hàng của bạn — quan trọng, giữ bí mật!

Sau khi cấu hình, Claude sẽ thấy và có thể gọi các tools từ AgentPay.


Ví Dụ Thực Tế: Bot Bán Khoá Học Trực Tuyến

Hãy tưởng tượng bạn chạy một cửa hàng bán khoá học lập trình qua chatbot.

Kịch bản: 1. Khách: "Tôi muốn mua khoá Python Advanced giá 299 nghìn" 2. Claude: "Tuyệt! Tôi sẽ tạo hoá đơn cho bạn." - Gọi create_payment_request() với amount_vnd=299000 3. Claude: "Đây là QR code thanh toán. Hãy quét bằng app ngân hàng của bạn." 4. Khách quét QR → thanh toán 299,000 VND từ tài khoản ngân hàng của mình. 5. Tiền về tài khoản của bạn ngay lập tức. 6. Claude nhận được xác nhận từ await_settlement(). 7. Claude: "Thanh toán thành công! Tôi sẽ gửi link tải khoá học cho bạn trong 2 phút." → Gửi email với link truy cập.

Toàn bộ quá trình diễn ra trong cuộc hội thoại. Khách không cần rời khỏi chat, không cần điền form phức tạp. Bạn không cần xử lý tiền, không cần chuyên viên kế toán.


Nên Làm / Không Nên Làm Khi Dùng AgentPay

Hành Động Nên Không Nên Lý Do
Lưu order_id duy nhất ✅ ❌ Tránh tạo 2 thanh toán cho 1 đơn hàng
Chờ xác nhận trước khi cấp sản phẩm ✅ ❌ Nếu bạn cấp trước, khách có thể không thanh toán
Lưu toàn bộ dữ liệu giao dịch ✅ ❌ Cần để theo dõi, audit, hoàn tiền nếu cần
Đặt timeout hợp lý (10-15 phút) ✅ ❌ Quá ngắn: khách không kịp thanh toán; quá dài: chờ lâu
Cố gắng "giữ tiền" trong app ❌ ✅ AgentPay trỏ thẳng vào tài khoản bạn, không cần giữ
Quên lưu thông tin merchant ❌ ✅ Nếu mất, không thể khởi động MCP server
Gửi QR mà không xác thực khách ⚠️ ⚠️ Tùy trường hợp — cho bán hàng công khai, cần xác thực cho dịch vụ riêng

Câu Hỏi Thường Gặp (FAQ)

Q1: Nếu khách quét QR nhưng không thanh toán, sẽ xảy ra gì?

A: QR code vẫn có thể sử dụng được (nó không hết hạn). await_settlement() sẽ chờ. Nếu quá timeout (ví dụ 15 phút), Claude có thể hỏi khách "Thanh toán thành công chưa?" hoặc gửi QR mới.

Q2: Bạn có thể hoàn tiền không?

A: Có. Nếu khách yêu cầu hủy đơn hàng sau khi thanh toán, bạn có thể yêu cầu hoàn tiền thông qua SDK hoặc liên hệ hỗ trợ AgentPay. Hoàn tiền sẽ về tài khoản ngân hàng khách trong 1-3 ngày.

Q3: Có phí gì không?

A: AgentPay VN là open-source, miễn phí cài đặt. Tuy nhiên, mỗi giao dịch VietQR có phí từ ngân hàng của bạn (thường 0% hoặc ~0.5% tùy ngân hàng). Bạn cần xác nhận phí với ngân hàng riêng.

Q4: Tôi có thể bán bao nhiêu loại sản phẩm?

A: Không giới hạn. Mỗi sản phẩm tương ứng một lần gọi create_payment_request() với giá khác nhau. Chỉ cần đảm bảo order_id luôn duy nhất.


Tóm Tắt Nhanh


Bước Tiếp Theo: Xây Dựng Bot Của Bạn

Cài đặt ngay:

pip install agentpay-vn
pip install agentpay-mcp

Đọc tài liệu chi tiết:

👉 https://agentpay.servicesai.vn/v1/docs — Hướng dẫn đầy đủ, ví dụ code, và FAQ.

Xem mã nguồn:

👉 https://github.com/phuocdu/agentpay-vn — Code mở, bạn có thể modify hoặc đóng góp.


Kết Luận

Thời đại của các bot AI mà không thể kiếm tiền đã qua. AgentPay VN cho phép bạn biến Claude (hoặc bất kỳ AI agent nào) thành một nhân viên bán hàng thực sự — người có thể thương lượng, hỗ trợ khách, và nhận tiền mà không cần can thiệp của con người.

Hãy bắt đầu ngay. Chỉ 3 lệnh pip, một chút cấu hình, và bạn đã sẵn sàng bán gì đó. Khách của bạn sẽ tấm lòng vì sự mượt mà.

Bắt đầu →

← Tất cả bài