ग्राहक वॉलेट क्या हैं?
ग्राहक वॉलेट को अपने उपयोगकर्ताओं के लिए डिजिटल गुल्लक के रूप में सोचें। जब आप उनके खाते को बनाते हैं, तो हर ग्राहक को स्वचालित रूप से एक मिलता है। आप इन वॉलेट का उपयोग कर सकते हैं:
USD और INR में क्रेडिट बैलेंस ट्रैक करें
OpenAI या Claude जैसे API क्रेडिट सिस्टम बनाएं
पूर्व भुगतान बिलिंग बनाएं जहां ग्राहक पहले से क्रेडिट खरीदते हैं
रिफंड को नकद के बजाय वॉलेट क्रेडिट के रूप में संभालें
विस्तृत लेनदेन इतिहास के साथ जटिल बिलिंग प्रबंधित करें
जब आप किसी ग्राहक का खाता बनाते हैं, तो हर ग्राहक को स्वचालित रूप से एक वॉलेट मिलता है। वॉलेट USD और INR मुद्राओं का समर्थन करते हैं, प्रत्येक के लिए अलग बैलेंस होता है।
यह कैसे काम करता है
ग्राहक वॉलेट सरल हैं: वे पैसे (क्रेडिट) रखते हैं जिन्हें ग्राहक आपकी सेवाओं पर खर्च कर सकते हैं। जब ग्राहक कोई खरीदारी करता है, तो पहले उनके वॉलेट बैलेंस की जांच की जाती है, और किसी भी उपलब्ध क्रेडिट का उपयोग किया जाता है, फिर उनके भुगतान विधि से चार्ज किया जाता है।
स्वचालित सेटअप
जब आप एक नया ग्राहक बनाते हैं, तो Dodo Payments स्वचालित रूप से शून्य बैलेंस के साथ एक वॉलेट बनाता है। यह तुरंत हमारे API के माध्यम से उपयोग के लिए तैयार है।
बहु-मुद्रा समर्थन
प्रत्येक वॉलेट विभिन्न मुद्राओं में बैलेंस रख सकता है:
अमेरिकी डॉलर में बैलेंस (सेंट में संग्रहीत)
भारतीय रुपये में बैलेंस (पैसे में संग्रहीत)
वर्तमान में, केवल USD और INR बैलेंस उपलब्ध हैं। अधिक मुद्राएँ जल्द ही आ रही हैं।
वॉलेट के साथ काम करना
ग्राहक बैलेंस की जांच करें
देखें कि ग्राहक के पास सभी मुद्राओं में कितना क्रेडिट है। खरीदारी प्रक्रिया से पहले यह जांचने के लिए आदर्श है कि उनके पास पर्याप्त फंड हैं या नहीं।
ग्राहक वॉलेट बैलेंस प्राप्त करें सभी समर्थित मुद्राओं में ग्राहक के वॉलेट क्रेडिट बैलेंस की जांच करें।
क्रेडिट जोड़ें या हटाएं
ग्राहकों को क्रेडिट दें (जैसे स्वागत बोनस) या क्रेडिट घटाएं (जैसे उपयोग शुल्क)। आप प्रत्येक लेनदेन के लिए कारण जोड़ सकते हैं ताकि यह ट्रैक किया जा सके कि क्या हुआ।
ग्राहक वॉलेट लेजर प्रविष्टि बनाएं ग्राहक के वॉलेट से क्रेडिट जोड़ें या हटाएं।
लेनदेन इतिहास देखें
एक ग्राहक के लिए हर क्रेडिट और डेबिट लेनदेन देखें। बिलिंग समस्याओं को डिबग करने या ग्राहकों को उनके खर्च के इतिहास को दिखाने के लिए शानदार।
ग्राहक वॉलेट लेजर प्रविष्टियाँ सूचीबद्ध करें एक ग्राहक के लिए हर क्रेडिट और डेबिट लेनदेन देखें।
वास्तविक दुनिया के उदाहरण
API क्रेडिट सिस्टम (OpenAI की तरह)
एक ऐसा सिस्टम बनाएं जहां ग्राहक क्रेडिट खरीदते हैं और उन्हें 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' );
}
}
}
पूर्व भुगतान बिलिंग प्रणाली
ग्राहकों को पहले से क्रेडिट खरीदने दें और समय के साथ उन्हें खर्च करें:
नए ग्राहकों का स्वागत करें
नए ग्राहकों को शुरू करने के लिए कुछ मुफ्त क्रेडिट दें। 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 } `
});
क्रेडिट खरीदारी संभालें
जब ग्राहक क्रेडिट खरीदते हैं, तो उन्हें उनके वॉलेट में जोड़ें। 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 } `
});
उपयोग के लिए चार्ज करें
जब ग्राहक आपकी सेवा का उपयोग करते हैं तो क्रेडिट घटाएं। await client . customers . wallets . ledgerEntries . create ( customerId , {
amount: usageCost ,
currency: 'USD' ,
entry_type: 'debit' ,
reason: `Service usage - ${ usageCost } credits` ,
idempotency_key: `usage_ ${ usageId } `
});
बैलेंस की निगरानी करें
जांचें कि क्या ग्राहक के पास क्रेडिट कम हो रहे हैं। 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 );
}
बहु-मुद्रा समर्थन
विभिन्न देशों में ग्राहकों को संभालें:
US-आधारित ग्राहकों को USD क्रेडिट दें। 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 } `
});
भारतीय ग्राहकों को INR क्रेडिट दें। await client . customers . wallets . ledgerEntries . create ( customerId , {
amount: 1500000 , // Rs 15,000 in paise
currency: 'INR' ,
entry_type: 'credit' ,
reason: 'INR credit purchase' ,
idempotency_key: `inr_purchase_ ${ paymentId } `
});
सर्वोत्तम प्रथाएँ
डुप्लिकेट लेनदेन से रोकें
यह सुनिश्चित करने के लिए idempotency keys का उपयोग करें कि आप गलती से ग्राहकों को एक ही चीज़ के लिए दो बार चार्ज न करें:
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 ;
}
}
चार्ज करने से पहले बैलेंस की जांच करें
महंगे ऑपरेशनों को संसाधित करने से पहले हमेशा सत्यापित करें कि ग्राहकों के पास पर्याप्त क्रेडिट हैं:
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 ;
}
आगे क्या आ रहा है
ये सुविधाएँ भविष्य के रिलीज़ के लिए योजनाबद्ध हैं:
क्रेडिट समाप्ति : एक निश्चित समय के बाद क्रेडिट समाप्त करने के लिए सेट करें
बेहतर एनालिटिक्स : विस्तृत खर्च रिपोर्ट और उपयोग अंतर्दृष्टि
अधिक वेबहुक : बैलेंस परिवर्तनों और कम क्रेडिट के लिए वास्तविक समय सूचनाएँ
बुनियादी क्रेडिट/डेबिट ऑपरेशनों के साथ सरल शुरुआत करें, फिर जैसे-जैसे आपका व्यवसाय बढ़ता है, अधिक जटिल सुविधाएँ जोड़ें।