বাস্তব অর্থ ছাড়াই এজেন্ট পেমেন্ট পরীক্ষা করুন।
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.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 কল নেই - আপনি পাবলিক Base Sepolia 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, তারপর নিশ্চিত করুন যে আপনার আইডেম্পোটেন্সি ডুপ্লিকেট কাজটি বাদ দিয়েছে)।
আপনার স্থানীয় হ্যান্ডলারে ওয়েবহুক টানেল করুন।
পরীক্ষামূলক পেমেন্টগুলি আপনার কনফিগার করা পরীক্ষামূলক ওয়েবহুকের জন্য যেকোনো 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.")পাঁচটি পরীক্ষার ভুল যা পরে ক্ষতি করে।
বেস সেপোলিয়া ভুলে যাওয়া এটি একটি নিজস্ব চেইন
একটি sk_test_ কী Base Sepolia তে লেনদেন করে, Base মেইননেটে নয়। ব্লক এক্সপ্লোরার, ওয়ালেট ঠিকানা, এবং গ্যাস টোকেনগুলি সব আলাদা। একটি সাধারণ বিভ্রান্তি হল একটি বাস্তব Base ঠিকানা একটি পরীক্ষায় কপি করা, এটি ব্যর্থ হতে দেখা, এবং মনে করা যে API ভেঙে গেছে। Base Sepolia USDC ফসেট থেকে এজেন্টের ওয়ালেট ঠিকানা তহবিল করুন এবং সেই চেইনে বিদ্যমান ঠিকানাগুলিতে অর্থ প্রদান করুন।
ব্যর্থতার পথগুলি পরীক্ষা করা হচ্ছে না
বেশিরভাগ দল সুখী পথ পরীক্ষা করে - একটি অর্থপ্রদান যা payment.received সক্রিয় করে - তারপর শিপ করে এবং পরে জানতে পারে যে তাদের না-পেইড পথ ভেঙে গেছে। এটি পরীক্ষা করুন: ওয়েবহুকটি একটি মৃত URL-এ নির্দেশ করুন এবং নিশ্চিত করুন যে আপনার পুনর্মিলনSweep আটকে থাকা কাজটি ধরেছে, আপনার হ্যান্ডলার থেকে 500 বাধ্য করুন এবং নিশ্চিত করুন যে পুনরায় চেষ্টা idempotent, এবং চেক করুন যে payments.create এর 503 (চেইন অ্যাডাপ্টার সংযুক্ত নয়) পরিচালিত হয়। পরীক্ষামূলক পরিবেশ সস্তা; উৎপাদন ডিবাগিং ব্যয়বহুল।
ওয়েবহুক URL এখনও উৎপাদনে ngrok এ নির্দেশ করছে
কী প্রিফিক্স পরিবর্তন করা মনে রাখা সহজ; ওয়েবহুক URL আপডেট করা ভুলে যাওয়া সহজ। যদি আপনি আপনার ল্যাপটপ থেকে ngrok টানেলের দিকে এখনও নির্দেশিত URL নিয়ে লাইভ হন, তাহলে প্রথম উৎপাদন পেমেন্ট একটি ওয়েবহুক শূন্যে ফায়ার করে। ওয়েবহুক URL পরিবর্তনকে ডিপ্লয় চেকলিস্টের একটি অংশ হিসাবে বিবেচনা করুন, এককালীন সেটিং নয়।
লাইভ সময়ের জন্য টেস্টনেট সময়কে একটি প্রোক্সি হিসাবে বিশ্বাস করা
Base Sepolia Base mainnet-এর মতো একইভাবে আচরণ করে না - ব্লক সময় এবং ঘনত্ব ভিন্ন। প্রধান নেটের থ্রুপুট লোড-টেস্ট করতে টেস্টনেট ব্যবহার করবেন না, এবং আপনার টেস্টনেট লেটেন্সি যা আপনি উৎপাদনে দেখতে পাবেন তা ধরে নেবেন না। যখন আপনাকে বাস্তব সংখ্যার প্রয়োজন হয়, তখন একটি sk_live_ কী দিয়ে একটি ছোট পরিমাণের প্রধান নেট স্মোক টেস্ট চালান।
শেয়ার করা ডাটাবেসে পরীক্ষার ফিক্সচার রেখে দেওয়া
যদি আপনার ডেভ এবং প্রোড পরিবেশ একটি ডেটাবেস শেয়ার করে (না), তবে পরীক্ষামূলক ইভেন্টগুলি লাইভ ইভেন্টগুলির সাথে একই টেবিলে পড়ে এবং আপনার আইডেম্পোটেন্সি ডিডুপে ভেঙে দেয় (ইভেন্ট আইডির পূর্বসূরী আলাদা কিন্তু সারিটি বাস্তব)। সর্বনিম্ন, প্রতিটি পরিবেশের জন্য webhook_events টেবিল আলাদা করুন। আরও ভাল: সম্পূর্ণরূপে আলাদা DBs। এটি এমন একটি নিয়ম যা অতিরিক্ত মনে হয় যতক্ষণ না এটি একবার কামড়ায়।
একবার পরীক্ষার লুপ আপনার ডেভ সাইকেলে।
একটি স্বাস্থ্যকর পরীক্ষার লুপ স্থাপিত হলে, বাকি কাজটি মূলত শক্তিশালীকরণ: লোডের অধীনে নির্ভরযোগ্য ওয়েবহুক পরিচালনা, একটি চূড়ান্ত নিরাপত্তা চেকলিস্ট, এবং আপনার সাথে চলমান যে কোন পূর্ববর্তী পেমেন্ট প্রদানকারীর মাইগ্রেশন।
ওয়েবহুক প্যাটার্নগুলি যা ডেভেলপাররা সবচেয়ে বেশি জিজ্ঞাসা করে
লাইভ হওয়ার আগে আপনার এজেন্ট ওয়ালেট সুরক্ষিত করুন
এজেন্ট-চালিত API অ্যাক্সেসের জন্য Stripe থেকে Blockchain0x-এ স্থানান্তর করুন
পূর্ণ রেফারেন্স docs.blockchain0x.com এ। টেস্টনেট বিস্তারিত: বেস চেইন গ্লোসারি। পণ্য পৃষ্ঠ: পেমেন্ট API।