আপোনাৰ AI এজেন্টত পেমেণ্ট কেনেকৈ যোগ কৰিব।
এখন এজেন্ট সৃষ্টি কৰক @blockchain0x/node (অথবা Python ক্লায়েন্ট)ৰ পৰা createClientৰ সৈতে, payments.createৰ সৈতে USDC পেমেন্ট পঠিয়াওক, আৰু webhooks.verifyৰ সৈতে স্বাক্ষৰিত ৱেবহুক নিশ্চিত কৰক। খৰচ নিয়ন্ত্ৰণ ডেছব'ৰ্ডত স্থাপন কৰা হয় আৰু APIৰ ওপৰত পঢ়া-হীন। এজেন্টে কেতিয়াও ব্যক্তিগত চাবি সোজাকৈ স্পৰ্শ নকৰে। সাইন-আপৰ পৰা আপোনাৰ প্ৰথম USDC পেমেন্টলৈ দশ মিনিটৰ তলত, TypeScript বা Pythonত।
আপুনি আৰম্ভ কৰাৰ আগতে।
- এখন Blockchain0x একাউণ্ট (মুক্ত সাইনআপ).
- ডেছব'ৰ্ডৰ পৰা এখন API চাবি (এই গাইডৰ বাবে
sk_test_চাবি ব্যৱহাৰ কৰক; আপুনি পাছতsk_live_লৈ সলনি কৰিব)। - আপোনাৰ এজেন্ট ৰাণটাইমত Node.js 20+ বা Python 3.11+।
- যিকোনো ফ্ৰেমৱৰ্কত নিৰ্মিত এজেন্ট - LangChain, CrewAI, AutoGen, LlamaIndex, OpenAI Agents SDK, MCP, বা সাধাৰণ SDK কোড। নিৰ্দেশনাবোৰ ফ্ৰেমৱৰ্ক-নিষ্পত্তি।
- এখন HTTPS এণ্ডপইণ্ট যি সাৰ্বজনীন ইণ্টাৰনেটৰ পৰা ৱেবহুক গ্ৰহণ কৰিবলৈ উপলব্ধ (উন্নয়নৰ বাবে ngrok বা এখন ডিপ্লয় প্ৰিভিউ ভাল)।
এজেন্টৰ প্ৰফাইল সৃষ্টি কৰক।
এজেন্ট প্ৰফাইল হৈছে প্ৰতিটো পেমেন্টৰ ঠিকনা যি আপোনাৰ এজেন্টে পঠিয়ায় বা গ্ৰহণ কৰে। ইয়াত ৱালেটৰ ঠিকনা, জনসাধাৰণ পৃষ্ঠা, প্ৰমাণীকৰণ বেজ, আৰু (পিছত) খৰচ নীতি থাকে। এটা যুক্তিসঙ্গত এজেন্টৰ বাবে এটা সৃষ্টি কৰক।
import { createClient } from "@blockchain0x/node";
const client = createClient({ apiKey: process.env.BLOCKCHAIN0X_API_KEY! }); // sk_test_ / sk_live_
const agent = await client.agents.create({ name: "research-bot" });
console.log(agent.id); // "agt_..."
// Public page: https://wallet.blockchain0x.com/a/{slug}from blockchain0x import Client
client = Client() # reads BLOCKCHAIN0X_API_KEY from the environment
agent = client.agents.create(body={"name": "research-bot"})
print(agent["id"]) # "agt_..."
# Public page: https://wallet.blockchain0x.com/a/{slug}After this call, the agent has a public page at https://wallet.blockchain0x.com/a/<slug> that any counterparty (human or agent) can hover for verification info. See the agent payment identity glossary entry for what that page exposes.
এটা পেমেন্ট পঠিয়াওক।
payments.create sends USDC from the agent wallet. amountWei is base units (USDC has 6 decimals), so 0.01 USDC is the string "10000". The SDK auto-stamps an Idempotency-Key, and the call can return 503 until the chain adapter is wired for your network. To RECEIVE instead, settle an invoice you created in the dashboard with paymentRequests.settle - see the payment API page.
// Send a USDC payment from the agent wallet. amountWei is base units
// (USDC has 6 decimals): "10000" is 0.01 USDC. payments.create auto-stamps an
// Idempotency-Key and can return 503 until the chain adapter is wired.
const tx = await client.payments.create({
agentId: agent.id,
to: "0xRecipient",
amountWei: "10000",
});
console.log(tx); // the submitted transfer# amountWei is USDC base units (6 decimals): "10000" is 0.01 USDC.
tx = client.payments.create(body={
"agentId": agent["id"],
"to": "0xRecipient",
"amountWei": "10000",
})
print(tx) # the submitted transferWebhookৰ ব্যৱস্থা কৰক।
ৱেবহুকসমূহ হৈছে আপুনি কেনেকৈ এটা পেমেন্ট স্থিৰ হৈছে সেয়া জানিবলৈ। Nodeত, @blockchain0x/nodeৰ পৰা webhooks.verify HMAC পৰীক্ষা কৰে আৰু এটা বৈচিত্ৰ্যযুক্ত ইউনিয়ন উভতি দিয়ে; অন্যান্য ভাষাত, কাঁচা বডীৰ ওপৰত একে HMAC গণনা কৰক। ঘটনাৰ প্ৰকাৰত শাখা কৰক (inboundৰ বাবে payment.received), 2xxৰ বাবে তৎকালীন প্ৰতিক্ৰিয়া জনাওক, আৰু 2xxৰ পিছত যিকোনো বেছি বোজা কিউত ৰাখক যাতে বিতৰণ সময়সীমা অতিক্ৰম নকৰে।
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 });
if (result.eventType === "payment.received") {
// USDC landed - deliver the work, fulfil the order, etc.
void deliver(result.eventId);
}
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 webhook():
raw = request.get_data() # RAW bytes - do not parse first
sig = request.headers.get("X-Blockchain0x-Signature", "")
ts = request.headers.get("X-Blockchain0x-Timestamp", "")
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)
if request.headers.get("X-Blockchain0x-Event-Type") == "payment.received":
deliver(request.get_json()) # USDC landed
return ("ok", 200)ডেছব'ৰ্ডত খৰচ নিয়ন্ত্ৰণ স্থাপন কৰক।
যদি আপোনাৰ এজেণ্ট মাত্ৰ গ্ৰহণ কৰে, তেন্তে আপুনি ইয়াক এৰাই যাব পাৰে। যদি সি পেমেন্টো কৰে, তেন্তে খৰচৰ অনুমতি স্থাপন কৰক - এটা সময়ৰ বাবে এক ভাত আৰু এটা লেনদেনৰ সীমা - ডেছব'ৰ্ডত। ই প্ৰতিটো পেমেন্টত পেছন দিশৰ দ্বাৰা প্ৰয়োগ কৰা হয়, সেয়ে ই এজেণ্ট-পক্ষৰ নিয়মসমূহৰ পৰা বাচি থাকে। কোনো API বা SDK কল নাই যি অনুমতি পৰিৱৰ্তন কৰে (এজেণ্টৰ নিজৰ চাবি ইয়াৰ সীমা বঢ়াব নোৱাৰে); API পঢ়িবলৈ মাত্ৰ, সেয়ে আপোনাৰ কোডে বৰ্তমানৰ মানসমূহ উলিয়াব পাৰে দেখুৱাবলৈ বা পৰিকল্পনা কৰিবলৈ।
curl https://api.blockchain0x.com/v1/agents/agt_123/spend-permissions \
-H "Authorization: Bearer $BLOCKCHAIN0X_API_KEY"{
"allowance_wei": "5000000",
"per_tx_wei": "1000000",
"period_seconds": 86400,
"revoked_at": null
}Base Sepolia ত সমগ্ৰ প্ৰৱাহ পৰীক্ষা কৰক।
এটা sk_live_ কীলৈ ঘূৰোৱাৰ আগতে sk_test_ৰ সৈতে সম্পূৰ্ণ পথটো শেষৰ পৰা আৰম্ভ কৰক। এটা টেষ্ট কী Base Sepoliaত সকলো কিছু ৰখে, য'ত আপুনি জনসাধাৰণ ফচেটৰ পৰা ৱালেটৰ বাবে তহবিল যোগান ধৰে আৰু প্ৰতিক্ৰিয়া আকাৰসমূহ লাইভৰ সৈতে মিলে। কী প্ৰিফিক্সে নেটৱৰ্ক বাচে, সেয়ে এটা টেষ্ট কী মেইননেটৰ তহবিল স্থানান্তৰ কৰিব নোৱাৰে।
তিনিটা পৰিস্থিতি অনুশীলন কৰক: এটা সুখী-পথ পেমেন্ট যিয়ে payment.received প্ৰজ্বলিত কৰে, এটা মিছ কৰা ডেলিভাৰী (ৱেবহুকক এটা মৃত URLত সূচী কৰক, তাৰপিছত transactions.getৰ সৈতে লেনদেন আহৰণ কৰি পুনৰ মিলাওক), আৰু এটা ৱেবহুক পুনৰ চেষ্টা (প্ৰথমবাৰৰ বাবে 500 উভতি দিয়ক, দ্বিতীয়বাৰৰ বাবে 200, আৰু আপোনাৰ হেণ্ডলাৰ idempotent হৈছে নিশ্চিত কৰক)। যেতিয়া তিনিওটা পৰীক্ষাত উত্তীৰ্ণ হয়, চাবি সলনি কৰক আৰু প্ৰেৰণ কৰক।
পাঁচটা ভুল যি দলে এজন সপ্তাহৰ মূল্যমান।
Webhook স্বাক্ষৰ পৰীক্ষা এৰাই যোৱা
যদি আপুনি /webhooks/paymentলৈ যিকোনো POSTক প্ৰাধিকাৰ হিচাপে গ্ৰহণ কৰে, তেন্তে এজন আক্ৰমণকাৰীয়ে নকল পেমেন্ট ইভেন্ট মিণ্ট কৰিব পাৰে আৰু আপোনাৰ এজেণ্টক বিনামূল্যে কাম প্ৰদান কৰিবলৈ ঠগ কৰিব পাৰে। সদায় HMAC-প্ৰমাণিত কৰক ৱেবহুক গোপনীয়তাৰ সৈতে, এটা ধ্ৰুৱক-সময় তুলনা ব্যৱহাৰ কৰি। প্ৰথম চুক্তি প্ৰায়েই মিছিং প্ৰমাণীকৰণ।
এটা পৃথক নিশ্চিতকৰণ ঘটনাৰ অনুমান কৰা
পঠিওৱা ঘটনাবলী হৈছে payment.received, payment.sent, wallet.deployed, আৰু webhook.test - পৃথক নিশ্চিতকৰণ ঘটনাৰ কোনো অস্তিত্ব নাই। payment.received তাত পৰ্যায়ত স্থানান্তৰ হোৱা সময়ত জ্বলি উঠে। অধিকাংশ কামৰ বাবে, সেইটো আপোনাৰ বিতৰণৰ সংকেত। কিছুমান ব্যয়বহুল বা অস্থায়ী নোহোৱা বস্তুৰ বাবে, transactions.get সৈতে লেনদেন পোল কৰক আৰু কাৰ্য্য কৰাৰ আগতে আপোনাৰ নিজৰ নিশ্চিতকৰণ থ্ৰেশহোল্ড প্ৰয়োগ কৰক; যি ঘটনাৰ অস্তিত্ব নাই তাৰ বাবে অপেক্ষা নকৰিব।
Webhook হেণ্ডলাৰসমূহত কোনো idempotency নাই
Webhooks non-2xx প্ৰতিক্ৰিয়াত পুনৰ চেষ্টা কৰে, আৰু একে ঘটনাটো চাপৰ অধীনত একাধিক বাৰ আহিব। আপোনাৰ হেণ্ডলাৰক আইডেম্পটেণ্ট হ'ব লাগিব: আপুনি ইতিমধ্যে প্ৰক্ৰিয়া কৰা ঘটনাৰ IDৰ এটা সৰু টেবুল ৰাখক আৰু ডুপ্লিকেটসমূহ এৰাই যাওক। অন্যথা এটা অস্থায়ী ব্লিপে একে কাম দুবাৰ বিতৰণ কৰিব আৰু আপুনি ডাবল-ফুলফিলমেন্টৰ বাবে ঘণ্টা ঘণ্টা ডিবাগিংত ব্যয় কৰিব।
টেষ্ট আৰু লাইভ API কীসমূহ মিশ্ৰণ
পৰীক্ষা চাবি (sk_test_) ছেণ্ডবক্সত আঘাত কৰে আৰু Base Sepolia ব্যৱহাৰ কৰে; লাইভ চাবি (sk_live_) উৎপাদনত আঘাত কৰে আৰু Base mainnet ব্যৱহাৰ কৰে। পৰিৱেশ কনফিগাৰসমূহত সিহঁতক মিশ্ৰণ কৰাটো 'ডেভত কাম কৰে, উৎপাদনত বিফল' টিকেটৰ অধিকাংশৰ কাৰণ। আপোনাৰ ৰাণটাইম পৰিৱেশ আৰু চাবি প্ৰিফিক্স মিলা নকৰিলে আৰম্ভণিতে কঠিন-ফেইল কৰক।
এটা মিছা ৱেবহুকক এটা ব্যৰ্থ পেমেন্ট হিচাপে গণ্য কৰা
অসফলতা ঘটনাৰ কোনো অস্তিত্ব নাই, আৰু এটা ৱেবহুক মিছা হ'ব পাৰে (আপোনাৰ এন্ডপইন্ট ডাউন আছিল, এটা বিতৰণ ড্ৰপ হৈছিল)। এজেন্টক 'পুঁজিৰ বাবে অপেক্ষা কৰি থকা' লুপত আটকিত নকৰিব। পুনৰ মেল কৰক: transactions.getৰ সৈতে লেনদেনটো উলিয়াওক যাতে বাস্তৱ অৱস্থা জানিব পৰা যায়, আৰু যিকোনো অপেক্ষা কৰা প্ৰবাহত সময় সীমা ৰাখক যাতে এটা ত্যাগ কৰা পেমেন্টে ধৰা সম্পদ মুক্ত কৰে সেয়ে চিৰকালৰ বাবে আটকিত নহয়।
যেতিয়া আপোনাৰ প্ৰথম পেমেন্ট হয়।
মৌলিক পেমেন্টসমূহ কাম কৰি থকা অৱস্থাত, যিবোৰ অনুসৰণে আটাইতকৈ লাভজনক হয় সেয়া হৈছে খৰচ নিয়ন্ত্ৰণ (যেনে এজেণ্টে বাজেটৰ সৈতে পলায়ন কৰিব নোৱাৰে), ৱেবহুক শক্তিশালীতা (যেনে পেমেন্টসমূহ চাপৰ তলত নিঃশব্দে মচি নাযায়), আৰু পৰিচয় পৰীক্ষা (যেনে প্ৰতিপক্ষবোৰ এজেণ্টৰ জনসাধাৰণ পৃষ্ঠাত বিশ্বাস কৰে)।
প্ৰম্পট ইনজেকশ্যন সহ্য কৰা এজেন্ট খৰচ নিয়ন্ত্ৰণ স্থাপন কৰক
ডেভেলপাৰসকলে সৰ্বাধিক সোধা ৱেবহুক পেটাৰ্নসমূহ
GitHub আৰু ডোমেইন প্ৰমাণীকৰণ বেজ অৰ্জন কৰক
পূৰ্ণ API উল্লেখ docs.blockchain0x.comত। একে APIসমূহৰ বাবে প্ৰডাক্ট পৃষ্ঠ: Payment API.