Bán sản phẩm số qua AI chatbot mà không giữ tiền

2026-07-27 · AgentPay VN

aipythonvietqragentpaychatbot

Nỗi đau khi để chatbot AI bán hàng cho bạn

Hôm qua, bạn xây dựng một chatbot AI để bán khoá học lập trình. Bot hoạt động tốt, nó hiểu được nhu cầu khách, trả lời chuyên nghiệp, thậm chí còn giới thiệu thêm sản phẩm liên quan. Nhưng khi đến khâu thanh toán... bạn dừng lại.

Tại sao? Vì bạn không biết cách để chatbot thu tiền trực tiếp vào tài khoản của mình mà không phải: - Dựa vào những dịch vụ trung gian khác (Stripe, PayPal)—quá phức tạp, phí cao - Tự mình "giữ hộ" tiền của khách—rủi ro pháp lý, rửa tiền, cần giấy phép ngân hàng - Yêu cầu khách chuyển khoản thủ công vào ngân hàng—mất đi sự tự động hóa toàn diện

Bạn cần một giải pháp đơn giản, an toàn, tuân thủ pháp luật Việt Nam, và tích hợp trơn tru với AI. Chính vì vậy mà AgentPay VN được sinh ra.

AgentPay VN là gì?

AgentPay VN là một open-source Python SDK (MIT License) kết hợp MCP server, cho phép các AI agent (chatbot, backend service) tạo và quản lý yêu cầu thanh toán VietQR.

Điểm cốt lõi: - QR code trỏ trực tiếp vào tài khoản ngân hàng của bạn—không có trung gian giữ tiền - Bank feed tự động xác nhận khoản thanh toán—bot biết ngay khi khách đã chuyển - Zero liability—bạn không bao giờ "sở hữu" tiền khách trong hệ thống - Dễ cài đặt: một dòng lệnh, 3 hàm Python chính

Tại sao AgentPay VN an toàn hơn các giải pháp khác?

Hãy so sánh nhanh:

Tiêu chí Gateway truyền thống Giữ tiền tự mình AgentPay VN
Giữ tiền? Có (tạm) Có, rủi ro Không, QR trỏ ngân hàng
Xác nhận giao dịch API callback Thủ công / thăm dò Bank feed tự động
Phí hàng tháng $30–100 0 0
Giấy phép ngân hàng Cần Cần Không cần
Tích hợp AI Phức tạp Tùy ý Tối ưu MCP
Open-source Không N/A Có (MIT)

Cài đặt AgentPay VN trong 2 phút

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

pip install agentpay-vn

Xong. Không cần config cơ sở dữ liệu, không cần API key bên ngoài.

Bước 2: Khởi tạo client

from agentpay_vn import AgentPayClient

# Khởi tạo với thông tin tài khoản ngân hàng của bạn
client = AgentPayClient(
    bank_account="0123456789",        # Số tài khoản (ví dụ)
    bank_code="970436",              # Mã ngân hàng (VPBank = 970436)
    account_name="Cua Hang ABC"     # Tên chủ tài khoản
)

Bước 3: Cài đặt MCP server (tùy chọn, cho Claude)

Nếu dùng Claude hoặc Agent Framework khác:

pip install agentpay-mcp

Thêm vào claude_desktop_config.json:

{
  "mcpServers": {
    "agentpay": {
      "command": "python",
      "args": ["-m", "agentpay_mcp"],
      "env": {
        "BANK_ACCOUNT": "0123456789",
        "BANK_CODE": "970436",
        "ACCOUNT_NAME": "Cua Hang ABC"
      }
    }
  }
}

Claude sẽ tự gọi các hàm của AgentPay mà không cần custom code.

Flow thanh toán 3 bước: Từ lý thuyết đến thực tế

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

from agentpay_vn import AgentPayClient
import uuid

client = AgentPayClient(
    bank_account="0123456789",
    bank_code="970436",
    account_name="Cua Hang ABC"
)

# Khách hàng muốn mua khoá học Python, giá 500.000 VND
payment_request = client.create_payment_request(
    amount=500000,                    # Số tiền (VND)
    description="Khoá học Python cơ bản",  # Mô tả
    order_id=str(uuid.uuid4()),       # ID đơn hàng (unique)
    customer_email="khach@example.com",
    customer_phone="0901234567"
)

print(f"QR Code URL: {payment_request.qr_url}")
print(f"Checkout URL: {payment_request.checkout_url}")
print(f"Request ID: {payment_request.id}")

Giải thích: - amount: Số tiền bạn muốn thu (VND) - description: Khách sẽ nhìn thấy trên ứng dụng ngân hàng khi quét QR - order_id: Định danh duy nhất cho đơn hàng (dùng để match với bank feed) - checkout_url: Link để khách thanh toán qua web (dự phòng nếu không quét QR được)

Hàm trả về một object chứa: - qr_url: URL ảnh QR code - checkout_url: Đường dẫn web tĩnh để khách thanh toán - id: ID yêu cầu (để track sau)

Bước 2: Gửi QR cho khách

# Chatbot gửi QR cho khách
user_message = f"""
Cảm ơn bạn đã mua! Vui lòng quét mã QR dưới đây để thanh toán:

{payment_request.qr_url}

Hoặc nhấn link này: {payment_request.checkout_url}

Số tiền: 500.000 VND
Mô tả: Khoá học Python cơ bản
"""

print(user_message)

Bot có thể gửi qua: - Chat UI (hiển thị ảnh QR) - Email - Tin nhắn SMS - QR code được in trên hoá đơn

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

import asyncio
from agentpay_vn import await_settlement

async def wait_for_payment():
    # Chờ tối đa 30 phút
    settlement = await await_settlement(
        client=client,
        request_id=payment_request.id,
        timeout_seconds=1800
    )

    if settlement.status == "confirmed":
        print(f"✅ Thanh toán thành công!")
        print(f"   Số tiền: {settlement.amount} VND")
        print(f"   Mã giao dịch: {settlement.transaction_id}")

        # Cấp quyền truy cập khoá học cho khách
        grant_course_access(email=settlement.customer_email)

    elif settlement.status == "expired":
        print(f"❌ Yêu cầu thanh toán hết hạn")

# Gọi từ chatbot hoặc background task
asyncio.run(wait_for_payment())

Chú ý quan trọng: - await_settlement() kiểm tra bank feed của bạn (không polling, không delay) - Khi ngân hàng xác nhận giao dịch trùng với order_id, status trở thành confirmed - Đây là lúc bạn cấp quyền/gửi sản phẩm cho khách

Ví dụ thực tế: Chatbot bán khoá học

Giả sử bạn chạy một bot Discord bán khoá lập trình. Dưới đây là flow hoàn chỉnh:

import asyncio
from agentpay_vn import AgentPayClient, await_settlement
import discord
from discord.ext import commands
import uuid

client_agentpay = AgentPayClient(
    bank_account="1234567890",
    bank_code="970436",
    account_name="Tech Academy VN"
)

class CourseBot(commands.Cog):
    def __init__(self, bot):
        self.bot = bot

    @commands.command(name="buy")
    async def buy_course(self, ctx, course_name="python-basics"):
        """Lệnh: !buy python-basics"""

        # 1. Tạo yêu cầu thanh toán
        course_prices = {
            "python-basics": 500000,
            "web-dev": 800000,
            "data-science": 1200000
        }

        if course_name not in course_prices:
            await ctx.send(f"❌ Khoá học không tồn tại. Hãy chọn: {', '.join(course_prices.keys())}")
            return

        amount = course_prices[course_name]
        order_id = str(uuid.uuid4())

        payment_req = client_agentpay.create_payment_request(
            amount=amount,
            description=f"Khoá {course_name}",
            order_id=order_id,
            customer_email=str(ctx.author.email) if ctx.author.email else "unknown@discord"
        )

        # 2. Gửi QR cho khách
        embed = discord.Embed(
            title="💳 Thanh toán khoá học",
            description=f"Khoá: **{course_name}**\nGiá: **{amount:,} VND**",
            color=discord.Color.blue()
        )
        embed.add_field(
            name="Quét mã QR:",
            value=f"[Nhấn đây]({payment_req.qr_url})",
            inline=False
        )
        embed.set_image(url=payment_req.qr_url)

        await ctx.send(embed=embed)

        # 3. Chờ xác nhận thanh toán
        try:
            settlement = await await_settlement(
                client=client_agentpay,
                request_id=payment_req.id,
                timeout_seconds=1800  # 30 phút
            )

            if settlement.status == "confirmed":
                # Cấp quyền truy cập
                role = discord.utils.get(ctx.guild.roles, name=f"Course-{course_name}")
                if role:
                    await ctx.author.add_roles(role)
                    await ctx.send(
                        f"✅ Thanh toán thành công!\n"
                        f"Bạn đã có quyền truy cập khoá **{course_name}**. "
                        f"Tham gia channel #course-{course_name}"
                    )
                else:
                    await ctx.send(f"⚠️ Lỗi cấp quyền. Admin sẽ xử lý thủ công.")
            else:
                await ctx.send(f"❌ Thanh toán hết thời gian. Vui lòng thử lại.")

        except Exception as e:
            await ctx.send(f"❌ Lỗi: {str(e)}")

# Khởi chạy bot
bot = commands.Bot()
bot.add_cog(CourseBot(bot))
bot.run("YOUR_DISCORD_TOKEN")

Kịch bản thực tế: 1. Khách gõ !buy python-basics 2. Bot tạo yêu cầu thanh toán 500.000 VND 3. Bot gửi QR code 4. Khách quét, chuyển tiền vào tài khoản bot (thông qua VietQR) 5. Ngân hàng gửi bank feed, AgentPay xác nhận 6. Bot phát hiện, tự động cấp role Discord 7. Khách truy cập khoá học ngay

👉 Toàn bộ quy trình từ quét QR đến cấp quyền chỉ mất 5–10 giây!

Những "nên" và "không nên" khi dùng AgentPay VN

✅ Nên làm:

❌ Không nên làm:

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

Q1: Nếu khách quét QR nhưng không thanh toán thì sao?

Trả lời: Yêu cầu thanh toán sẽ hết hạn sau timeout (mặc định 30 phút). Bot sẽ nhận lại settlement.status == "expired", bạn có thể: - Tự động hủy order - Gửi nhắc nhở cho khách - Tạo yêu cầu mới với QR khác

AgentPay không bao giờ tự động cấp quyền—bạn hoàn toàn kiểm soát.

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

Trả lời: Miễn phí. AgentPay VN là open-source (MIT License). Bạn chỉ trả phí giao dịch của ngân hàng (nếu có)—giống như chuyển khoản bình thường.

Q3: Dữ liệu an toàn không?

Trả lời: Rất an toàn vì: - Tiền không bao giờ qua hệ thống AgentPay - Chỉ VietQR link + bank feed (dữ liệu công khai) - Open-source → bạn có thể audit code - Self-hosted MCP server → data ở trên máy chủ của bạn

Q4: Có hỗ trợ ngân hàng nào không?

Trả lời: Bất kỳ ngân hàng nào hỗ trợ VietQR đều được—gồm: - Vietcombank, BIDV, VPBank, Techcombank, ACB, MB Bank, TP Bank, v.v. - Hầu hết các ngân hàng Việt Nam đều tương thích

Kiểm tra danh sách ngân hàng: https://vietqr.io/

Tóm tắt nhanh

Bước tiếp theo: Hãy thử ngay!

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

  2. Xem tài liệu chi tiết: 👉 https://agentpay.servicesai.vn/v1/docs

  3. Khám phá code nguồn: 👉 https://github.com/phuocdu/agentpay-vn

  4. Bắt đầu xây dựng: - Tạo chatbot bán khoá học, ebook, phần mềm - Quán cà phê order online + thanh toán qua bot - Ứng dụng booking/vé số tự động

AgentPay VN giúp bạn tự động hóa toàn bộ quy trình bán sản phẩm số mà không cần lo về việc giữ tiền. Chatbot của bạn sẽ thông minh hơn, khách hàng hài lòng hơn, và business của bạn sẽ tăng trưởng nhanh hơn.

Bắt đầu hôm nay. Chỉ mất 5 phút để cài đặt. 🎯

Bắt đầu →

← Tất cả bài