AI এজেন্ট কোডৰ বাবে ডিজাইন কৰা এটা পেমেন্ট API।
এখন সৰু REST API। স্বাক্ষৰিত ৱেবহুক। পাঁচটা ভাষাত চৰকাৰী SDK। নিৰ্মিত যাতে আপোনাৰ এজেন্ট USDC পঠিয়াব পাৰে আৰু চুকাব পাৰে আৰু কেইটামান লাইন কোডত পেমেণ্ট নিশ্চিত কৰিব পাৰে।

Blockchain0x APIটো ইচ্ছাকৃতভাৱে সৰু। আমি আপোনাক আপোনাৰ প্ৰথম পেমেন্ট কৰিবলৈ এক ঘণ্টা ডক্স পঢ়িবলৈ নচাহোঁ। আমি আপোনাক এটা স্নিপেট কপি কৰিবলৈ, আপোনাৰ API কী পেষ্ট কৰিবলৈ, আৰু ইয়াক চলাবলৈ বিচাৰোঁ।
এখন সৰু পৃষ্ঠ, যি এজেন্ট কোডৰ বাবে নিৰ্মিত।
পেমেণ্ট-আকৃতিৰ ৰুটসমূহ তলত আছে। Webhooks, api-keys, আৰু পঢ়া-হেৰুৱা খৰচ-অনুমতি পৃষ্ঠৰ চাৰিওফালে থাকে; SDKয়ে ইয়াক সকলোৰে চাৰিওফালে ৰাখে।
/v1/paymentsএজন এজেন্ট ৱালেটৰ পৰা USDC পেমেন্ট পঠিয়াওক/v1/transactions/{id}এখন লেনদেনৰ স্থিতি আৰু হেছ আহৰণ কৰক/v1/payment-requests/{id}/settleঅন-চেইন প্ৰমাণৰ সৈতে এটা বিল সমাধান কৰক/v1/agents/{id}এখন এজেন্ট ৱালেট আহৰণ কৰক/v1/agentsএজেন্ট ৱালেট সৃষ্টি কৰকসমস্ত HMAC-SHA256ৰ সৈতে স্বাক্ষৰিত।
স্বাক্ষৰটো X-Blockchain0x-Signature হেডাৰ। 5 মিনিটৰ পুনৰ খেলা খিৰিকী। প্ৰতিটো POST ত idempotency কী।
payment.receivedUSDC আপোনাৰ এজন এজেন্টৰ ৱালেটত স্থানান্তৰ হৈছে
payment.sentআপোনাৰ এজেণ্টৰ পৰা এখন আউটবাউণ্ড পেমেন্ট চেইনত স্থিৰ হৈছে
wallet.deployedএজেণ্টৰ স্মাৰ্ট ৱালেট স্থাপন কৰা হৈছিল
webhook.testডেছব'ৰ্ডৰ পৰা আপুনি প্ৰেৰিত কৰা এটা পৰীক্ষামূলক বিতৰণ
আপোনাৰ এজেন্টৰ ৱালেটৰ পৰা USDC পঠিয়াওক।
from blockchain0x import Client
client = Client(api_key="sk_test_...") # sk_test_ testnet, sk_live_ mainnet
tx = client.payments.create(body={
"agentId": "agt_123",
"to": "0xRecipient",
"amountWei": "10000", # USDC base units (6 decimals): 0.01 USDC
})
print(tx) # may return 503 until the chain adapter is wired for your networkTypeScript আৰু Pythonৰ বাবে টাইপ কৰা ক্লায়েন্ট।
npm install @blockchain0x/nodeNode 18+ৰ সৈতে কাম কৰে। স্থানীয় TypeScript প্ৰকাৰ।
pip install blockchain0xPython 3.9+. সিঙ্ক আৰু আসিঙ্ক ক্লায়েন্ট।
SDK যি অনুৰোধৰ শৰীৰসমূহ মুঠ কৰে।
এইবোৰ হৈছে প্ৰতিটো ৰুটৰ বাবে নিশ্চিত কৰা ইনপুটসমূহ। উত্তৰসমূহ ইয়াত সংক্ষেপে দেখুওৱা হৈছে; পূৰ্ণ টাইপ কৰা আকাৰসমূহ SDK আৰু API উল্লেখত থাকে। পৰিমাণসমূহ হৈছে USDC বেচ ইউনিট (6 দশমিক)।
/v1/paymentsএটা USDC পেমেন্ট পঠিয়াওক (payments.create)। amountWei হৈছে USDC বেছ ইউনিট (6 দশমিক)। চেইন এডাপ্টাৰ সংযোগ কৰা নহওঁতে 503 উভতি দিব পাৰে।
{
"agentId": "agt_123",
"to": "0xRecipient",
"amountWei": "10000",
"metadata": { "reason": "Research report" }
}{
"txHash": "0xff5...e12"
}/v1/payment-requests/{id}/settleডেছব'ৰ্ডত সৃষ্টি কৰা এটা পেমেন্ট অনুৰোধ (চালান) চূড়ান্ত কৰক, অন-চেইন প্ৰমাণৰ সৈতে (paymentRequests.settle)। সৃষ্টি ৰুট নাই - মাত্ৰ চূড়ান্ত কৰক।
{
"txHash": "0xff5...e12",
"payerAddress": "0xBuyer...",
"amountUsdcVerified": "0.10"
}{
"txHash": "0xff5...e12"
}/v1/transactions/{id}আইডিৰ দ্বাৰা এখন একক লেনদেন আহৰণ কৰক (transactions.get)।
(no body){
"id": "tx_01J9...",
"txHash": "0xff5...e12"
}/v1/agents/{id}এখন এজেন্ট ৱালেট আহৰণ কৰক (agents.get)। ইয়াৰ জনপ্ৰিয় পৃষ্ঠা wallet.blockchain0x.com/a/{slug}ত থাকে।
(no body){
"id": "agt_01J9QKE...",
"name": "research-bot",
"public_url": "https://wallet.blockchain0x.com/a/research-bot"
}/v1/agents/{id}/spend-permissionsএজেন্টৰ খৰচৰ অনুমতি পঢ়ক। APIৰ জৰিয়তে READ-ONLY - সৃষ্টি আৰু পৰিৱৰ্তন মাত্ৰ ডেছব'ৰ্ডৰ বাবে।
(no body){
"allowance_wei": "5000000",
"per_tx_wei": "1000000",
"period_seconds": 86400,
"start_at": "2026-05-15T00:00:00Z",
"revoked_at": null
}পেইলোডত বিশ্বাস কৰাৰ আগতে সদায় স্বাক্ষৰটো নিশ্চিত কৰক।
যিকোনো ব্যক্তিয়ে আপোনাৰ কলব্যাক URLলৈ POST কৰিব পাৰে। স্বাক্ষৰটো হৈছে যি প্ৰমাণ কৰে ঘটনাটো সত্যই আমিৰ পৰা আহিছিল।
প্ৰত্যেক ডেলিভাৰীত এটা বহন কৰে X-Blockchain0x-Signature header (t=<unix>,v1=<hex>) - `${t}.${rawBody}` ষ্ট্ৰিংৰ ওপৰত আপোনাৰ ৱেবহুক গোপনীয়তা সৈতে HMAC-SHA256, 5 মিনিটৰ পুনৰ খেলা খিৰিকীৰ ভিতৰত। Node ত, @blockchain0x/node ৰ webhooks.verify ই এইটো কৰে আৰু আপোনাৰ শাখা কৰা এক পৃথকিত ইউনিয়ন উভতি দিয়ে। অন্য ভাষাত, একে HMAC গণনা কৰক আৰু ধ্ৰুৱক সময়ত তুলনা কৰক। RAW শৰীৰ পঢ়ক, পাৰ্স কৰা কপি নহয় - পুনৰ-সিরিয়ালাইজিং চিহ্নিতকৰণ ভঙে।
import express from "express";
import { webhooks } from "@blockchain0x/node";
const app = express();
// Capture the RAW body. The HMAC is over the exact bytes on the wire.
app.use(express.raw({ type: "application/json" }));
app.post("/webhooks/payment", (req, res) => {
const result = webhooks.verify({
headers: req.headers,
rawBody: req.body, // Buffer, raw bytes
secret: process.env.BLOCKCHAIN0X_WEBHOOK_SECRET!,
});
if (!result.ok) return res.status(400).json({ code: result.code });
// result.eventType is "payment.received" | "payment.sent" | ...
handleEvent(result);
res.status(200).send("ok");
});import hmac, hashlib, os, time
from flask import Flask, request, abort
app = Flask(__name__)
SECRET = os.environ["BLOCKCHAIN0X_WEBHOOK_SECRET"].encode()
@app.post("/webhooks/payment")
def receive():
raw = request.get_data() # RAW bytes - do not parse first
sig = request.headers.get("X-Blockchain0x-Signature", "")
ts = request.headers.get("X-Blockchain0x-Timestamp", "")
# Header is "t=<unix>,v1=<hex>"; some proxies send bare hex + the ts header.
parts = dict(p.split("=", 1) for p in sig.split(",") if "=" in p)
t, v1 = parts.get("t", ts), parts.get("v1", sig)
want = hmac.new(SECRET, t.encode() + b"." + raw, hashlib.sha256).hexdigest()
if not hmac.compare_digest(want, v1) or abs(time.time() - int(t)) > 300:
abort(401)
handle_event(request.headers.get("X-Blockchain0x-Event-Type"), request.get_json())
return "ok", 200আপুনি যেতিয়া ৱেবহুক সৃষ্টি কৰে বা ঘূৰাইছে (webhooks.rotateSecret), তেতিয়া ৱেবহুক গোপনীয়তা একবাৰ মুকলি কৰা হয়, আৰু BLOCKCHAIN0X_WEBHOOK_SECRET হৈছে য'ত আপোনাৰ হেণ্ডলাৰে ইয়াক পঢ়ে। ঘূৰাইছে পুৰণি গোপনীয়তাক অবৈধ কৰে, সেয়ে ৰোলআউটৰ সমন্বয় কৰক: আপোনাৰ ছাৰ্ভাৰৰ পৰিৱেশত নতুন গোপনীয়তা স্থাপন কৰক, ডিপ্লয় কৰক, তাৰ পিছত ঘূৰাইছে। প্ৰেৰণ কৰা ঘটনাসমূহ হৈছে payment.received, payment.sent, wallet.deployed, আৰু webhook.test - ঘটনাৰ প্ৰকাৰত শাখা কৰক, বাকি উপেক্ষা কৰক।
নিশ্চিতভাৱে পুনৰ চেষ্টা কৰক। APIয়ে দুবাৰ পেমেন্ট নকৰে।
এজেন্ট কোড পুনৰ চেষ্টা কৰে। নেটৱৰ্কে সংযোগ ত্যাগ কৰে। LLMs টুলটো দুবাৰ আহ্বান কৰাৰ সিদ্ধান্ত লয়। ইয়াক সুৰক্ষিত কৰিবলৈ, এটি পঠিয়াব।Idempotency-Key POST ত header। SDK ত payments.create আপোনাৰ বাবে এক স্থিৰটো স্বয়ংক্ৰিয়ভাৱে সৃষ্টি কৰে, সেয়ে পুনৰ চেষ্টা কৰা কলটো একমাত্ৰ অন-চেইন জমা হৈ পৰে, দুবাৰ পেমেন্ট কৰাৰ সলনি। একে যুক্তিসংগত কাৰ্য্যৰ বাবে আপোনাৰ নিজস্ব চাবি ব্যৱহাৰ কৰি ইয়াক অতিক্ৰম কৰক।
curl -X POST https://api.blockchain0x.com/v1/payments \
-H "Authorization: Bearer $BLOCKCHAIN0X_API_KEY" \
-H "Idempotency-Key: 8e2c3a40-pay-vendor-once" \
-H "Content-Type: application/json" \
-d '{ "agentId": "agt_123", "to": "0xRecipient", "amountWei": "10000" }'- প্ৰথম কল: পেমেন্ট জমা দিয়ে, লেনদেন উলিয়ায়।
- একেই কীৰ সৈতে পুনৰ চেষ্টা কৰক: দ্বিগুণ পেমেন্ট কৰাৰ সলনি এটা একমাত্ৰ অন-চেইন জমাত পৰিণত হয়।
- SDKয়ে ইয়াক সামলাই লয়: payments.create এটা স্থিৰ Idempotency-Key স্বয়ংক্ৰিয়ভাৱে সৃষ্টি কৰে, সেয়ে পুনৰ চেষ্টা কৰা কলটো বাক্সৰ পৰা সুৰক্ষিত।
- ইয়াক অতিক্ৰম কৰক: আপুনি যেতিয়া প্ৰক্ৰিয়া সমূহৰ মাজত একে যুক্তিগত কাৰ্য্যৰ বাবে ডিডুপ্লিকেট কৰিবলৈ বিচাৰে, তেতিয়া আপোনাৰ নিজৰ চাবি পাৰ কৰক।
প্ৰস্তাৱিত প্যাটাৰ্ন হৈছে আপোনাৰ এজেণ্ট কোডত প্ৰত্যেক যুক্তিগত কাৰ্যৰ বাবে এটা UUID উৎপন্ন কৰা (যেনে "অৰ্ডাৰ Yৰ বাবে বিক্ৰেতা Xক পেমেন্ট কৰক"ৰ বাবে এটা UUID) আৰু পুনৰ চেষ্টা কৰাৰ সময়ত ইয়াক পুনৰ ব্যৱহাৰ কৰা যতক্ষণ না কাৰ্য সফল হয়। যদি আপুনি ইয়াক নিৰ্দিষ্ট নকৰে তেন্তে চৰকাৰী SDKসমূহ payments.createৰ বাবে এটা স্বয়ংক্ৰিয়ভাৱে উৎপন্ন কৰে।
আপোনাৰ সীমা উত্তৰ পৰা পঢ়ক, এখন টেবুলৰ পৰা নহয়।
সীমাবদ্ধতাসমূহ আপোনাৰ পৰিকল্পনাৰ সৈতে মাপৰ। যি সংখ্যা ভ্ৰমণ কৰে সেয়া কঠোৰ-কোড কৰাৰ সলনি, প্ৰতিটো প্ৰতিক্ৰিয়াই আপোনাক ক'ত আছে সেয়া জনায় আৰু SDKসমূহে আপোনাৰ বাবে ব্যাকঅফৰ ব্যৱস্থা কৰে।
প্ৰত্যেক সফল প্ৰতিক্ৰিয়াত হেডাৰ
X-RateLimit-Limit: আপোনাৰ পৰিকল্পনাৰ স্থিৰ হাৰX-RateLimit-Remaining: এই উইণ্ডোত কিমান কল বাকী আছেX-RateLimit-Reset: উনিখ চেকেণ্ড যেতিয়া উইণ্ডো পুনৰ ছেট হয়
যেতিয়া আপুনি সীমা পাৰ কৰে (HTTP 429)
- প্ৰতিক্ৰিয়া অন্তৰ্ভুক্ত
Retry-Afterচেকেণ্ডত - আধिकारिक SDKসমূহ 429 আৰু 5xxত পুনৰ চেষ্টা কৰে এক্সপোনেনশিয়েল ব্যাকঅফৰ সৈতে, Retry-Afterক সন্মান জনাই
- বহুত কোডে 429 হাতৰ দ্বাৰা নলয় কাৰণ SDK ইতিমধ্যে কৰে
x402 সঠিকভাৱে কোৱে। সেয়া নাথাকিলেও কাম কৰে।
x402 হৈছে HTTP-নেটিভ পেমেন্টৰ বাবে খোলা প্ৰটোকল। ধাৰণা: যিকোনো API যিয়ে 402 পেমেন্ট প্ৰয়োজন হৈছে উলিয়ায় সেয়া প্ৰতিক্ৰিয়াত পেমেন্টৰ প্ৰয়োজনসমূহ ঘোষণা কৰিব পাৰে, আৰু যিকোনো ক্লায়েন্ট যিয়ে স্পেক বুজে সেয়া পেমেন্ট কৰিব পাৰে আৰু পুনৰ চেষ্টা কৰিব পাৰে - কোনো চাইন আপ, কোনো API চাবি, কোনো আউট-অফ-বেণ্ড আলোচনা নাই। Blockchain0x বাস্তৱ x402 পেকেজসমূহ প্ৰেৰণ কৰে: এটা পেমেন্ট-পক্ষৰ ক্লায়েন্ট আৰু গ্ৰহণ-পক্ষৰ ছাৰ্ভাৰ এডাপ্টৰ। আজিৰ একমাত্ৰ স্কিম হৈছে exact-usdc, Base ত।
HTTP/1.1 402 Payment Required
Content-Type: application/json
{
"version": 1,
"resource": "https://api.example.com/paid-endpoint",
"accepts": [
{ "scheme": "exact-usdc", "network": "eip155:8453" }
]
}এজেণ্ট কলাৰ কি কৰে
- 402 body পঢ়ে: version 1, resource, আৰু payment requirement-ৰ non-empty accepts[] (scheme exact-usdc, network eip155:8453 for Base)।
- এটা payment তৈয়াৰ কৰি X-Payment: exact-usdc:<base64(json)> headerৰ সৈতে request পুনৰ পঠিয়ায়।
- pay side-ত, @blockchain0x/x402-ৰ পৰা createX402Client({ sdk })-এ আপোনাৰ হৈ এই কাম কৰে - ই 402-সমূহক স্বয়ংক্ৰিয়ভাৱে উত্তৰ দিয়ে।
- আপোনাৰ server-এ X-Payment header verify কৰে আৰু original request পূৰণ কৰে।
দুয়োটা পৃষ্ঠ, বাস্তৱ পেকেজ
পইচাৰ দিশত, createX402Client({ sdk }) @blockchain0x/x402 পৰা ফেচৰ আবৰণ কৰে আৰু স্বয়ংক্ৰিয়ভাৱে 402s ৰ উত্তৰ দিয়ে। গ্ৰহণৰ দিশত, createX402Plugin (Fastify) আৰু createX402Middleware (Express) আপোনাৰ নিজস্ব এণ্ডপইণ্টসমূহ গেট কৰক। অথবা x402 এৰাই দিয়ে আৰু সোজাকৈ REST API ব্যৱহাৰ কৰক - দুয়োটাই একেলগে কাম কৰে, সেয়ে আপুনি সাজু হ'লে x402 যোগ কৰিব পাৰে।