Chuyển đến nội dung chính

Ví Khách Hàng Là Gì?

Hãy nghĩ về ví khách hàng như những chiếc heo đất kỹ thuật số cho người dùng của bạn. Mỗi khách hàng sẽ tự động nhận được một chiếc khi bạn tạo tài khoản cho họ. Bạn có thể sử dụng những ví này để:
  • Theo dõi số dư tín dụng bằng USD và INR
  • Xây dựng hệ thống tín dụng API như OpenAI hoặc Claude
  • Tạo thanh toán trả trước nơi khách hàng mua tín dụng trước
  • Xử lý hoàn tiền dưới dạng tín dụng ví thay vì tiền mặt
  • Quản lý thanh toán phức tạp với lịch sử giao dịch chi tiết
Mỗi khách hàng tự động nhận được một ví khi bạn tạo tài khoản cho họ. Ví hỗ trợ các loại tiền tệ USD và INR với số dư riêng cho mỗi loại.
Ví Khách Hàng

Cách Hoạt Động

Ví khách hàng rất đơn giản: chúng giữ tiền (tín dụng) mà khách hàng có thể chi tiêu cho dịch vụ của bạn. Khi một khách hàng thực hiện mua hàng, số dư ví của họ sẽ được kiểm tra trước, và bất kỳ tín dụng nào có sẵn sẽ được sử dụng trước khi tính phí vào phương thức thanh toán của họ.

Thiết Lập Tự Động

Khi bạn tạo một khách hàng mới, Dodo Payments sẽ tự động tạo một ví với số dư bằng không. Nó sẵn sàng sử dụng ngay lập tức thông qua API của chúng tôi.

Hỗ Trợ Đa Tiền Tệ

Mỗi ví có thể giữ số dư bằng các loại tiền tệ khác nhau:
USD Balance
integer
Số dư bằng Đô la Mỹ (lưu trữ bằng xu)
INR Balance
integer
Số dư bằng Rupee Ấn Độ (lưu trữ bằng paise)
Hiện tại, chỉ có số dư USDINR là có sẵn. Nhiều loại tiền tệ khác sẽ sớm có mặt.

Làm Việc Với Ví

Kiểm Tra Số Dư Khách Hàng

Xem khách hàng có bao nhiêu tín dụng trên tất cả các loại tiền tệ. Thích hợp để kiểm tra xem họ có đủ tiền trước khi xử lý một giao dịch mua.

Lấy Số Dư Ví Khách Hàng

Kiểm tra số dư tín dụng ví của khách hàng trong tất cả các loại tiền tệ được hỗ trợ.

Thêm Hoặc Xóa Tín Dụng

Cung cấp tín dụng cho khách hàng (như tiền thưởng chào mừng) hoặc trừ tín dụng (như phí sử dụng). Bạn có thể thêm lý do cho mỗi giao dịch để theo dõi những gì đã xảy ra.

Tạo Mục Sổ Kế Toán Ví Khách Hàng

Thêm hoặc xóa tín dụng từ ví của khách hàng.

Xem Lịch Sử Giao Dịch

Xem mọi giao dịch tín dụng và ghi nợ cho một khách hàng. Tuyệt vời để gỡ lỗi các vấn đề thanh toán hoặc cho khách hàng thấy lịch sử chi tiêu của họ.

Danh Sách Mục Sổ Kế Toán Ví Khách Hàng

Xem mọi giao dịch tín dụng và ghi nợ cho một khách hàng.

Ví Dụ Thực Tế

Hệ Thống Tín Dụng API (Giống OpenAI)

Xây dựng một hệ thống nơi khách hàng mua tín dụng và chi tiêu chúng cho các cuộc gọi API:
// Give new customers welcome credits
async function giveWelcomeCredits(customerId) {
  await client.customers.wallets.ledgerEntries.create(customerId, {
    amount: 10000, // $100 in cents
    currency: 'USD',
    entry_type: 'credit',
    reason: 'Welcome bonus - 100 API credits',
    idempotency_key: `welcome_${customerId}_${Date.now()}`
  });
}

// Charge customers for API usage
async function chargeForApiUsage(customerId, usageCost) {
  try {
    await client.customers.wallets.ledgerEntries.create(customerId, {
      amount: usageCost, // Cost in cents
      currency: 'USD',
      entry_type: 'debit',
      reason: `API usage - ${usageCost} credits consumed`,
      idempotency_key: `usage_${customerId}_${Date.now()}`
    });
  } catch (error) {
    if (error.status === 400) {
      console.log('Customer needs to buy more credits');
    }
  }
}

Hệ Thống Thanh Toán Trả Trước

Cho phép khách hàng mua tín dụng trước và chi tiêu chúng theo thời gian:
1

Chào Mừng Khách Hàng Mới

Cung cấp cho khách hàng mới một số tín dụng miễn phí để bắt đầu.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 5000, // $50 welcome bonus
  currency: 'USD',
  entry_type: 'credit',
  reason: 'Welcome bonus for new customer',
  idempotency_key: `welcome_${customerId}`
});
2

Xử Lý Mua Tín Dụng

Khi khách hàng mua tín dụng, hãy thêm chúng vào ví của họ.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: purchaseAmount, // Amount paid in cents
  currency: 'USD',
  entry_type: 'credit',
  reason: `Credit purchase - ${purchaseAmount} credits`,
  idempotency_key: `purchase_${paymentId}`
});
3

Tính Phí Sử Dụng

Trừ tín dụng khi khách hàng sử dụng dịch vụ của bạn.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: usageCost,
  currency: 'USD', 
  entry_type: 'debit',
  reason: `Service usage - ${usageCost} credits`,
  idempotency_key: `usage_${usageId}`
});
4

Theo Dõi Số Dư

Kiểm tra xem khách hàng có đang thiếu tín dụng hay không.
const wallets = await client.customers.wallets.list(customerId);
const usdWallet = wallets.items.find(w => w.currency === 'USD');
const balance = usdWallet.balance;

if (balance < 1000) { // Less than $10
  // Send low balance notification
  await sendLowBalanceNotification(customerId, balance);
}

Hỗ Trợ Đa Tiền Tệ

Xử lý khách hàng ở các quốc gia khác nhau:
Cung cấp tín dụng USD cho khách hàng có trụ sở tại Mỹ.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 20000, // $200 in cents
  currency: 'USD',
  entry_type: 'credit',
  reason: 'USD credit purchase',
  idempotency_key: `usd_purchase_${paymentId}`
});
Cung cấp tín dụng INR cho khách hàng Ấn Độ.
await client.customers.wallets.ledgerEntries.create(customerId, {
  amount: 1500000, // ₹15,000 in paise
  currency: 'INR',
  entry_type: 'credit',
  reason: 'INR credit purchase',
  idempotency_key: `inr_purchase_${paymentId}`
});

Thực Hành Tốt Nhất

Ngăn Chặn Giao Dịch Trùng Lặp

Sử dụng khóa idempotency để đảm bảo bạn không vô tình tính phí khách hàng hai lần cho cùng một thứ:
async function addCreditsSafely(customerId, amount, reason) {
  const idempotencyKey = `${reason}_${customerId}_${Date.now()}`;
  
  try {
    const result = await client.customers.wallets.ledgerEntries.create(customerId, {
      amount: amount,
      currency: 'USD',
      entry_type: 'credit',
      reason: reason,
      idempotency_key: idempotencyKey
    });
    
    return { success: true, wallet: result };
  } catch (error) {
    if (error.status === 400 && error.message.includes('Insufficient balance')) {
      return { success: false, error: 'INSUFFICIENT_BALANCE' };
    }
    
    if (error.status === 409) {
      // Transaction already processed
      return { success: true, wallet: null, duplicate: true };
    }
    
    throw error;
  }
}

Kiểm Tra Số Dư Trước Khi Tính Phí

Luôn xác minh rằng khách hàng có đủ tín dụng trước khi xử lý các thao tác tốn kém:
async function checkBalanceBeforeOperation(customerId, requiredAmount) {
  const wallets = await client.customers.wallets.list(customerId);
  const usdWallet = wallets.items.find(w => w.currency === 'USD');
  
  if (!usdWallet || usdWallet.balance < requiredAmount) {
    throw new Error('Not enough credits for this operation');
  }
  
  return usdWallet.balance;
}

Những Gì Sẽ Đến Tiếp Theo

Những tính năng này dự kiến sẽ có trong các bản phát hành tương lai:
  • Hết Hạn Tín Dụng: Đặt tín dụng hết hạn sau một khoảng thời gian nhất định
  • Phân Tích Tốt Hơn: Báo cáo chi tiêu chi tiết và thông tin sử dụng
  • Nhiều Webhook Hơn: Thông báo thời gian thực cho các thay đổi số dư và tín dụng thấp
Bắt đầu đơn giản với các thao tác tín dụng/ghi nợ cơ bản, sau đó thêm các tính năng phức tạp hơn khi doanh nghiệp của bạn phát triển.