বাস্তৱ টকা বিনা এজেন্ট পেমেন্ট পৰীক্ষা কৰক।
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 ভেৰিয়েবল, পৃথক ডেটাবেছ (অথবা অন্তত পৃথক টেবুল), পৃথক ৱেবহুক URL।
- Comfort with the webhook patterns guide - এই গাইডে ধাৰণা কৰে যে আপোনাৰ পৰীক্ষা কৰিবলৈ এটা হেণ্ডলাৰ আছে।
এটা পৰীক্ষা কীলৈ সলনি কৰক।
এখন 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ৰ বাবে জোৰ কৰক, তাৰপিছত আপোনাৰ 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 আপডেট কৰা মনত ৰাখিবলৈ সহজ। যদি আপুনি আপোনাৰ লেপটপৰ পৰা ngrok টানেললৈ এখন URLৰ সৈতে লাইভ হৈ থাকে, তেন্তে প্ৰথম উৎপাদন পেমেন্টে এক ৱেবহুক শূন্যত মাৰিব। ৱেবহুক URL পৰিৱৰ্তনক স্থাপন চেকলিষ্টৰ অংশ হিচাপে গণ্য কৰক, একবাৰ ব্যৱস্থা কৰা ছেটিং হিচাপে নহয়।
লাইভ সময়ৰ বাবে টেষ্টনেট সময়ক প্ৰক্সি হিচাপে বিশ্বাস কৰা
Base Sepolia Base mainnetৰ দৰে আচৰণ নকৰে - ব্লক সময় আৰু ভিড়ৰ পৰিমাণ ভিন্ন। মেইননেটৰ throughput লোড-টেষ্ট কৰিবলৈ টেষ্টনেট ব্যৱহাৰ নকৰিব, আৰু আপোনাৰ টেষ্টনেটৰ লেটেঞ্চি উৎপাদনত আপুনি যি দেখিব সেইটো বুলি অনুমান নকৰিব। যেতিয়া আপোনাৰ বাস্তৱ সংখ্যাৰ প্ৰয়োজন, তেন্তে sk_live_ কী ব্যৱহাৰ কৰি এটা সৰু পৰিমাণৰ মেইননেট স্মোক টেষ্ট চলাও।
অংশীদাৰ ডেটাবেছত পৰীক্ষাৰ ফিক্সচাৰ এৰি দিয়া
যদি আপোনাৰ ডেভ আৰু প্ৰড পৰিবেশসমূহে একে ডেটাবেছ ভাগ কৰে (নকৰিব), পৰীক্ষণ ঘটনাসমূহ জীৱন্ত ঘটনাসমূহৰ সৈতে একে টেবুলত পৰে আৰু আপোনাৰ আইডেমপটেন্সি ডিডুপ ভাঙি দিয়ে (ঘটনাৰ ID প্ৰিফিক্স ভিন্ন কিন্তু পংক্তি বাস্তৱ)। ন্যূনতম, প্ৰতিটো পৰিবেশৰ বাবে webhook_events টেবুল পৃথক কৰক। বেছি ভাল: সম্পূৰ্ণৰূপে পৃথক DB। এইটো একেটা নিয়ম যি একেবাৰে অতিরিক্ত বুলি মনে হয় যতক্ষণ এটি একবাৰ কাম কৰে।
এবাৰ পৰীক্ষা লুপ আপোনাৰ ডেভ চক্রত।
এটা স্বাস্থ্যকৰ পৰীক্ষা চক্ৰ স্থাপন কৰাৰ সৈতে, বাকী কামবোৰ মূলতঃ শক্তিশালীকৰণ: চাপৰ তলত নিৰ্ভৰযোগ্য ৱেবহুক ব্যৱস্থাপনা, এটা চূড়ান্ত সুৰক্ষা চেকলিষ্ট, আৰু যিকোনো আগৰ পেমেন্ট প্ৰদানকাৰীৰ পৰা স্থানান্তৰ।
ডেভেলপাৰসকলে সৰ্বাধিক সোধা ৱেবহুক পেটাৰ্নসমূহ
লাইভ হোৱাৰ আগতে আপোনাৰ এজেন্ট ৱালেট সুৰক্ষিত কৰক
এজেণ্ট-চালিত API প্ৰৱেশৰ বাবে Stripeৰ পৰা Blockchain0xলৈ স্থানান্তৰ কৰক
সম্পূৰ্ণ উল্লেখ docs.blockchain0x.comত। টেষ্টনেটৰ বিৱৰণ: Base chain glossary। উৎপাদন পৃষ্ঠ: Payment API।