നിങ്ങളുടെ AI ഏജന്റിന് പേയ്മെന്റുകൾ എങ്ങനെ ചേർക്കാം.
createClient ഉപയോഗിച്ച് @blockchain0x/node (അല്ലെങ്കിൽ Python client) ൽ ഒരു ഏജന്റ് സൃഷ്ടിക്കുക, payments.create ഉപയോഗിച്ച് USDC പണമടച്ചയയിക്കുക, webhooks.verify ഉപയോഗിച്ച് ഒപ്പിട്ട വെബ് ഹുക്ക് സ്ഥിരീകരിക്കുക. ചെലവു നിയന്ത്രണങ്ങൾ ഡാഷ്ബോർഡിൽ ക്രമീകരിച്ചിരിക്കുന്നു, API-യിൽ വായന മാത്രം. ഏജന്റ് സ്വകാര്യ കീകൾ നേരിട്ട് കൈകാര്യം ചെയ്യുകയില്ല. TypeScript അല്ലെങ്കിൽ Python-ൽ Base-ൽ നിങ്ങളുടെ ആദ്യ USDC പണമടച്ചതിന് ഒമ്പത് മിനിറ്റിന് താഴെ, സൈൻ-അപ്പ് മുതൽ.
നിങ്ങൾ തുടങ്ങുന്നതിന് മുമ്പ്.
- ഒരു Blockchain0x അക്കൗണ്ട് (മുക്ത സൈൻ അപ്പ്).
- ഡാഷ്ബോർഡിൽ നിന്നുള്ള ഒരു API കീ (ഈ ഗൈഡിന്
sk_test_കീ ഉപയോഗിക്കുക; നിങ്ങൾ പിന്നീട്sk_live_ലേക്ക് മാറും). - നോഡ്.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 transferവെബ്ഹുക്ക് കൈകാര്യം ചെയ്യുക.
ഒരു പേയ്മെന്റ് നിശ്ചയിച്ചുവെന്ന് നിങ്ങൾ കണ്ടെത്തുന്നത് വെബ്ഹുക്കുകൾ വഴി ആണ്. 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, നിങ്ങളുടെ ഹാൻഡ്ലർ ഐഡെംപോടന്റ് ആണെന്ന് സ്ഥിരീകരിക്കുക). എല്ലാ മൂവരും പരീക്ഷണത്തിൽ വിജയിക്കുമ്പോൾ, കീ മാറ്റുക, കപ്പൽ.
ടീമുകൾക്ക് ഒരു ആഴ്ച ചെലവേറിയ അഞ്ചു പിഴവുകൾ.
വെബ്ഹുക്ക് സിഗ്നേച്ചർ സ്ഥിരീകരണം ഒഴിവാക്കുന്നു
നിങ്ങൾ /webhooks/payment ലേക്ക് ഏത് POST-ഉം അധികാരികമായി സ്വീകരിച്ചാൽ, ഒരു ആക്രമകൻ വ്യാജ പണമിടപാട് സംഭവങ്ങൾ നിർമ്മിച്ച് നിങ്ങളുടെ ഏജന്റിനെ സൗജന്യമായി ജോലി നൽകാൻ തട്ടിപ്പു ചെയ്യാം. വെബ്ഹുക്ക് രഹസ്യവുമായി എപ്പോഴും HMAC-സ്ഥിരീകരണം നടത്തുക, സ്ഥിരമായ സമയ താരതമ്യം ഉപയോഗിച്ച്. ആദ്യത്തെ സമരസ്യമാണ് സാധാരണയായി നഷ്ടമായ സ്ഥിരീകരണം.
ഒരു വേറിട്ട സ്ഥിരീകരണ സംഭവമുണ്ടെന്ന് കരുതുന്നു
അയച്ച ഇവന്റ്കൾ payment.received, payment.sent, wallet.deployed, and webhook.test ആണ് - പ്രത്യേകമായ ഒരു സ്ഥിരീകരണ ഇവന്റ് ഇല്ല. കൈമാറ്റം ഒരു ബ്ലോക്കിൽ ആകുമ്പോൾ payment.received പ്രവർത്തിക്കുന്നു. കൂടുതൽ ജോലികൾക്കായി, അത് നിങ്ങളുടെ വിതരണം ചെയ്യാനുള്ള സിഗ്നലാണ്. ചിലവേറിയ അല്ലെങ്കിൽ തിരിച്ചുപിടിക്കാനാവാത്ത കാര്യങ്ങൾക്ക്, transactions.get-നൊപ്പം ഇടപാടിനെ പോൾ ചെയ്യുക, പ്രവർത്തനമാരംഭിക്കുന്നതിന് മുമ്പ് നിങ്ങളുടെ സ്വന്തം സ്ഥിരീകരണ ത്രഷോൾഡ് പ്രയോഗിക്കുക; ഇല്ലാത്ത ഒരു ഇവന്റിന് കാത്തിരിക്കരുത്.
വെബ്ഹുക്ക് ഹാൻഡ്ലറുകളിൽ ഐഡംബർടൻസി ഇല്ല
വെബ്ഹുക്ക്കൾ non-2xx പ്രതികരണങ്ങളിൽ വീണ്ടും ശ്രമിക്കുന്നു, ഒരേ സംഭവത്തെ ലോഡിന്റെ കീഴിൽ പല തവണ എത്തിക്കും. നിങ്ങളുടെ ഹാൻഡ്ലർ ഐഡെംപൊട്ടന്റ് ആയിരിക്കണം: നിങ്ങൾ ഇതിനകം പ്രോസസ് ചെയ്ത സംഭവ ID-കളുടെ ഒരു ചെറിയ പട്ടിക സൂക്ഷിക്കുക, പുനരാവർത്തനങ്ങൾ ഒഴിവാക്കുക. അല്ലെങ്കിൽ ഒരു താൽക്കാലിക ബ്ലിപ്പ് ഒരേ ജോലി രണ്ടുതവണ നൽകും, നിങ്ങൾക്ക് ഡബിള്-ഫുൾഫിൽമെന്റുകൾ ഡീബഗ് ചെയ്യുന്നതിൽ മണിക്കൂറുകൾ ചെലവിടേണ്ടി വരും.
ടെസ്റ്റ്, ലൈവ് API കീകൾ മിശ്രിതം
ടെസ്റ്റ് കീകൾ (sk_test_) സാൻഡ്ബോക്സിൽ എത്തുകയും Base Sepolia ഉപയോഗിക്കുകയും ചെയ്യുന്നു; ലൈവ് കീകൾ (sk_live_) ഉൽപ്പന്നത്തിൽ എത്തുകയും Base mainnet ഉപയോഗിക്കുകയും ചെയ്യുന്നു. പരിസ്ഥിതി കോൺഫിഗറേഷനിൽ അവയെ മിശ്രിതമാക്കുന്നത് 'ഡെവിൽ പ്രവർത്തിക്കുന്നു, പ്രൊഡക്ഷനിൽ പരാജയപ്പെടുന്നു' ടിക്കറ്റുകളുടെ പ്രധാന കാരണം ആണ്. നിങ്ങളുടെ റൺടൈം പരിസ്ഥിതിയും കീ പ്രിഫിക്സും പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ, സ്റ്റാർട്ടപ്പ് സമയത്ത് കഠിനമായ പരാജയം.
അനാവശ്യമായ വെബ്ഹുക്ക് ഒരു പരാജയപ്പെട്ട കൈമാറ്റമായി പരിഗണിക്കുന്നു
തകരവിന്റെ ഇവന്റ് ഇല്ല, കൂടാതെ ഒരു വെബ്ഹുക്ക് നഷ്ടപ്പെടാം (നിങ്ങളുടെ എൻഡ്പോയിന്റ് താഴെയായിരുന്നു, ഒരു ഡെലിവറി വീഴ്ചയായിരുന്നു). ഏജന്റിനെ 'നിധികൾ കാത്തിരിക്കുന്നു' എന്ന ലൂപ്പിൽ കുടുങ്ങാൻ വിട്ടുകൊടുക്കരുത്. പുനഃസമന്വയം ചെയ്യുക: യഥാർത്ഥ അവസ്ഥ അറിയാൻ transactions.get-നൊപ്പം ഇടപാടിനെ എടുക്കുക, കൂടാതെ കാത്തിരിക്കുന്ന പ്രവാഹത്തിൽ ഒരു സമയപരിധി സജ്ജീകരിക്കുക, അതിനാൽ ഒരു ഉപേക്ഷിച്ച പണം പിടിച്ചിരിക്കുന്ന വിഭവങ്ങൾ വിടുന്നു, എപ്പോഴും കാത്തിരിക്കാൻ പകരം.
നിങ്ങളുടെ ആദ്യത്തെ പേമന്റ് ലഭിച്ചാൽ.
അടിസ്ഥാന പേയ്മെന്റുകൾ പ്രവർത്തിക്കുന്നതോടെ, ഏറ്റവും കൂടുതൽ ഫലപ്രദമായ ഫോളോ-അപ്പുകൾ ചെലവു നിയന്ത്രണങ്ങൾ (ഏജന്റ് ബജറ്റുമായി ഓടാൻ കഴിയുന്നില്ല), വെബ്ഹുക്ക് ശക്തി (പേയ്മെന്റുകൾ ലോഡിന് കീഴിൽ ശാന്തമായി വീഴുന്നില്ല), തിരിച്ചറിയൽ സ്ഥിരീകരണം (പ്രതിപക്ഷങ്ങൾ ഏജന്റിന്റെ പൊതു പേജിൽ വിശ്വാസിക്കുന്നു).
പ്രോംപ്റ്റ് ഇഞ്ചക്ഷൻ തരണം ചെയ്യുന്ന ഏജന്റ് ചെലവുകൾ നിയന്ത്രണങ്ങൾ സജ്ജമാക്കുക
ഡെവലപ്പർമാർ ഏറ്റവും കൂടുതൽ ചോദിക്കുന്ന വെബ്ഹുക്ക് മാതൃകകൾ
GitHub, ഡൊമെയ്ൻ സ്ഥിരീകരണ ബാഡ്ജുകൾ നേടുക
മുഴുവൻ API റഫറൻസുകൾ docs.blockchain0x.comൽ. സമാന API-കൾക്കായുള്ള ഉൽപ്പന്ന ഉപരിതലങ്ങൾ: പേയ്മെന്റ് API.