बिना असली पैसे के एजेंट भुगतान का परीक्षण करें।
Swap your API key for a sk_test_ key - that alone puts you on Base Sepolia. Fund the agent's wallet from the public Base Sepolia USDC faucet, make a real test payment with payments.create (test funds, no real money), and tunnel your local webhook through ngrok. The response shapes match live, so a flow that passes in test passes in production. Exercise the failure paths, not just the happy one.
शुरू करने से पहले।
- लाइव (या कम से कम लाइव-आकार) पर एक कार्यशील एकीकरण - देखें add-payments-to-agent.
- एक
sk_test_API कुंजी और डैशबोर्ड से मेल खाने वाला परीक्षण साइनिंग सीक्रेट। - विकास-समय वेबहुक डिलीवरी के लिए ngrok (या कोई HTTPS टनल)।
- एक अलग विकास वातावरण - अलग env vars, अलग डेटाबेस (या कम से कम अलग तालिकाएँ), अलग वेबहुक URL।
- इस वेबहुक पैटर्न गाइड के साथ आराम - यह गाइड मानता है कि आपके पास परीक्षण के लिए एक हैंडलर है।
परीक्षण कुंजी पर स्विच करें।
एक sk_test_ कुंजी Base Sepolia पर लेनदेन करती है; एक sk_live_ कुंजी Base मुख्य नेटवर्क पर लेनदेन करती है। उपसर्ग नेटवर्क को चुनता है - कोई अलग नेटवर्क env var नहीं है, और एक परीक्षण कुंजी मुख्य नेटवर्क के फंड को स्थानांतरित नहीं कर सकती। इसलिए विकास वातावरण के लिए आप केवल कुंजी (और परीक्षण वेबहुक सीक्रेट) बदलते हैं।
# .env.development
# A sk_test_ key picks Base Sepolia automatically - there is no network env var.
BLOCKCHAIN0X_API_KEY=sk_test_01J9...
BLOCKCHAIN0X_WEBHOOK_SECRET=... # the test webhook's secret, from the dashboardएजेंट के वॉलेट को फॉसेट से फंड करें।
परीक्षण USDC का कोई मौद्रिक मूल्य नहीं है लेकिन यह लाइव USDC की तरह व्यवहार करता है: समान प्रतिक्रिया आकृतियाँ, समान बैलेंस ट्रैकिंग। इसे बनाने के लिए कोई SDK कॉल नहीं है - आप एजेंट के वॉलेट पते को सार्वजनिक बेस सेपोलिया USDC नल से फंड करते हैं। डैशबोर्ड में या एजेंट के सार्वजनिक पृष्ठ पर पता खोजें (या SDK के साथ एजेंट को पढ़ें), फिर इसे नल में पेस्ट करें।
import { createClient } from "@blockchain0x/node";
const client = createClient({ apiKey: process.env.BLOCKCHAIN0X_API_KEY! }); // sk_test_
// Look up the agent; its wallet address is shown in the dashboard and on the
// agent's public page. Fund THAT address from the Base Sepolia USDC faucet -
// there is no SDK call that mints test funds.
const agent = await client.agents.get("agt_123");
console.log(agent.id);from blockchain0x import Client
client = Client() # reads BLOCKCHAIN0X_API_KEY (sk_test_)
# The agent's wallet address is in the dashboard / on its public page.
# Paste it into the public Base Sepolia USDC faucet to fund it.
agent = client.agents.get("agt_123")
print(agent["id"])एक वास्तविक परीक्षण भुगतान करें।
वॉलेट को फंड करने के बाद, अपने sk_test_ कुंजी पर payments.create को कॉल करें। यह Base Sepolia पर परीक्षण निधियों का उपयोग करके एक वास्तविक ट्रांसफर है, और यह वास्तव में मुख्य नेटवर्क की तरह payment.received वेबहुक को सक्रिय करता है - ताकि आप वास्तविक कोड पथ का अभ्यास करें, न कि एक अनुकरण। अपने टनल किए गए हैंडलर पर इवेंट को उतरते हुए देखें।
// On a sk_test_ key this is a REAL transfer on Base Sepolia (test funds, no
// real money). It fires the payment.received webhook just like mainnet does.
const tx = await client.payments.create({
agentId: "agt_123",
to: "0xRecipientOnSepolia",
amountWei: "10000", // 0.01 USDC
});
console.log(tx); // watch payment.received arrive at your webhooktx = client.payments.create(body={
"agentId": "agt_123",
"to": "0xRecipientOnSepolia",
"amountWei": "10000", # 0.01 USDC
})
print(tx) # watch payment.received arrive at your webhookकम से कम अभ्यास करने के लिए तीन परिदृश्य: एक भुगतान जो पहुँचता है (खुश रास्ता, payment.received), एक भुगतान जो कभी नहीं पहुँचता (वेबहुक को एक मृत URL पर इंगित करें और पुष्टि करें कि आपका समेटना अटका हुआ कार्य पकड़ता है - वह रास्ता जिसे अधिकांश टीमें अनदेखा करती हैं), और एक वेबहुक पुनः प्रयास (पहली बार 500 को मजबूर करें और दूसरी बार 200, फिर सत्यापित करें कि आपकी idempotency ने डुप्लिकेट कार्य को छोड़ दिया)।
वेबहुक को अपने स्थानीय हैंडलर में टनल करें।
परीक्षण भुगतान वास्तविक वेबहुक को उस URL पर भेजते हैं जिसे आपने परीक्षण वेबहुक के लिए कॉन्फ़िगर किया है। स्थानीय विकास के लिए, इसे अपने लैपटॉप के लिए HTTPS टनल दें। ngrok सबसे सरल विकल्प है; कोई भी रिवर्स-टनल उपकरण काम करता है।
# Tunnel your local webhook endpoint to a public HTTPS URL.
$ ngrok http 3000
# Forwarding https://abc123.ngrok.app -> http://localhost:3000
# Paste the URL in the dashboard under Webhooks for your test
# environment - test and live keep separate webhook config.परीक्षण और लाइव अलग कुंजी और अलग वेबहुक कॉन्फ़िगरेशन का उपयोग करते हैं, ताकि आप उत्पादन को अपने वास्तविक अंत बिंदु पर छोड़ सकें जबकि आपकी स्थानीय टनल परीक्षण घटनाओं को संभालती है।
गलत कॉन्फ़िगर की गई चाबियों पर तेजी से विफल हों।
परीक्षण/लाइव कुंजियों के चारों ओर सबसे सामान्य उत्पादन घटना चुप है: एक तैनाती एक परीक्षण कुंजी के साथ उतरती है, कोई भुगतान नहीं आता, अलर्ट केवल अगले व्यावसायिक दिन के बाद ही सक्रिय होते हैं। इसे बूट पर ब्लॉक करें: यदि env और कुंजी उपसर्ग मेल नहीं खाते हैं तो शुरू करने से इनकार करें।
// Fail fast if test/live get mixed up.
const apiKey = process.env.BLOCKCHAIN0X_API_KEY!;
const env = process.env.NODE_ENV;
if (env === "production" && apiKey.startsWith("sk_test_")) {
throw new Error("Test key in production environment - aborting boot.");
}
if (env !== "production" && apiKey.startsWith("sk_live_")) {
throw new Error("Live key in non-production environment - aborting boot.");
}import os, sys
api_key = os.environ["BLOCKCHAIN0X_API_KEY"]
env = os.environ.get("ENV", "development")
if env == "production" and api_key.startswith("sk_test_"):
sys.exit("Test key in production environment - aborting boot.")
if env != "production" and api_key.startswith("sk_live_"):
sys.exit("Live key in non-production environment - aborting boot.")पांच परीक्षण गलतियाँ जो बाद में समस्या बनती हैं।
Base Sepolia को भूलना अपनी खुद की चेन है
एक sk_test_ कुंजी Base Sepolia पर लेनदेन करती है, न कि Base मुख्य नेटवर्क पर। ब्लॉक एक्सप्लोरर, वॉलेट पते, और गैस टोकन सभी अलग हैं। एक सामान्य भ्रम यह है कि एक वास्तविक Base पते को परीक्षण में कॉपी करना, इसे विफल होते हुए देखना, और सोचना कि API टूट गई है। एजेंट के वॉलेट पते को Base Sepolia USDC नल से फंड करें और उन पते का भुगतान करें जो उस श्रृंखला पर मौजूद हैं।
विफलता पथों का परीक्षण नहीं करना
अधिकांश टीमें खुशहाल रास्ते का परीक्षण करती हैं - एक भुगतान जो payment.received को सक्रिय करता है - फिर शिप करती हैं और बाद में पता चलता है कि उनका नॉन-पेड रास्ता टूट गया है। इसका अभ्यास करें: वेबहुक को एक मृत URL पर इंगित करें और पुष्टि करें कि आपकी समायोजन स्वीप अटके हुए कार्य को पकड़ती है, अपने हैंडलर से 500 को मजबूर करें और सत्यापित करें कि पुनः प्रयास idempotent है, और जांचें कि payments.create का 503 (चेन एडाप्टर नहीं जोड़ा गया) संभाला गया है। परीक्षण वातावरण सस्ते हैं; उत्पादन डिबगिंग महंगी है।
Webhook URL अभी भी उत्पादन में ngrok की ओर इशारा कर रहा है
कुंजी उपसर्ग बदलना याद रखने में आसान है; वेबहुक URL को अपडेट करना भूलना आसान है। यदि आप URL के साथ लाइव जाते हैं जो अभी भी आपके लैपटॉप से ngrok टनल की ओर इशारा करता है, तो पहला उत्पादन भुगतान एक वेबहुक को शून्य में भेजता है। वेबहुक URL परिवर्तन को तैनाती चेकलिस्ट का हिस्सा मानें, न कि एक बार का सेटिंग।
लाइव समय के लिए प्रॉक्सी के रूप में टेस्टनेट समय पर भरोसा करना
Base Sepolia Base मेननेट के समान व्यवहार नहीं करता है - ब्लॉक समय और भीड़भाड़ भिन्न होती है। मेननेट थ्रूपुट को लोड-टेस्ट करने के लिए टेस्टनेट का उपयोग न करें, और न ही मान लें कि आपका टेस्टनेट विलंब वही है जो आप उत्पादन में देखेंगे। जब आपको वास्तविक संख्याओं की आवश्यकता हो, तो एक sk_live_ कुंजी के साथ एक छोटे-से-राशि मेननेट धुआं परीक्षण चलाएँ।
साझा डेटाबेस में परीक्षण फिक्स्चर छोड़ना
यदि आपके विकास और उत्पादन वातावरण एक डेटाबेस साझा करते हैं (न करें), तो परीक्षण घटनाएँ लाइव घटनाओं के समान तालिका में आती हैं और आपकी आइडेम्पोटेंसी डेडुप्लिकेट को तोड़ती हैं (घटना आईडी उपसर्ग भिन्न है लेकिन पंक्ति वास्तविक है)। न्यूनतम, प्रत्येक वातावरण के लिए webhook_events तालिका को अलग करें। बेहतर: पूरी तरह से अलग DBs। यह उन नियमों में से एक है जो अत्यधिक लगते हैं जब तक कि यह एक बार काटता नहीं है।
एक बार परीक्षण लूप आपके विकास चक्र में।
एक स्वस्थ परीक्षण लूप स्थापित होने के साथ, शेष कार्य ज्यादातर मजबूत करना है: लोड के तहत विश्वसनीय वेबहुक हैंडलिंग, एक अंतिम सुरक्षा चेकलिस्ट, और किसी भी पूर्व भुगतान प्रदाता से माइग्रेशन जो आप चला सकते हैं।
वेबहुक पैटर्न जिनके बारे में डेवलपर्स सबसे अधिक पूछते हैं
लाइव जाने से पहले अपने एजेंट वॉलेट को सुरक्षित करें
एजेंट-चालित API पहुँच के लिए Stripe से Blockchain0x में माइग्रेट करें
पूर्ण संदर्भ docs.blockchain0x.com पर। टेस्टनेट विवरण: Base chain glossary. उत्पाद सतह: Payment API।