Tự động thu tiền VietQR cho AI agent – Thay thế Stripe ở Việt Nam

2026-09-08 · AgentPay VN

aipythonvietqrmcpthanh toán

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ánBước 2: Gửi checkout_url cho kháchBướ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ông nên (hoặc chưa tối ưu) khi:

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ác bước tiếp theo

  1. Cài đặt ngay: bash pip install agentpay-vn

  2. Xem ví dụ: Truy cập GitHub repository https://github.com/phuocdu/agentpay-vn

  3. Đọc tài liệu chi tiết: https://agentpay.servicesai.vn/v1/docs

  4. 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.

  5. 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.

Bắt đầu →

← Tất cả bài