તમારા AI એજન્ટમાં ચુકવણી કેવી રીતે ઉમેરવી.
createClient સાથે @blockchain0x/node (અથવા Python ક્લાયન્ટ) માંથી એક એજન્ટ બનાવો, payments.create સાથે USDC ચુકવણી મોકલો, અને webhooks.verify સાથે સહી કરેલ વેબહૂકની પુષ્ટિ કરો. ખર્ચના નિયંત્રણો ડેશબોર્ડમાં સેટ કરવામાં આવે છે અને API પર વાંચવા માટે જ છે. એજન્ટ ક્યારેય સીધી રીતે ખાનગી કીઓને સ્પર્શતો નથી. સાઇન-અપથી લઈને Base પર તમારી પ્રથમ 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 transferવેબહૂકને સંભાળો.
વેબહુક્સ એ છે કે તમે કેવી રીતે જાણો છો કે ચુકવણી સેટલ થઈ ગઈ છે. Node માં, @blockchain0x/node થી webhooks.verify HMAC ચેક કરે છે અને એક ભેદિત યુનિયન પાછું આપે છે; અન્ય ભાષાઓમાં, કાચા બોડી પર સમાન HMACની ગણના કરો. ઇવેન્ટ પ્રકાર પર બ્રાન્ચ કરો (આવતી માટે 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
}બેઝ સેપોલિયામાં સમગ્ર પ્રવાહનું પરીક્ષણ કરો.
લાઇવ sk_live_ કીઓમાં ફેરવવા પહેલાં, sk_test_ સાથે પૂર્ણ માર્ગને અંત સુધી ચલાવો. એક પરીક્ષણ કી બધું Base Sepolia પર રાખે છે, જ્યાં તમે જાહેર નળમાંથી વોલેટને ફંડ કરો છો અને પ્રતિસાદના આકારો જીવંત સાથે મેળ ખાતા છે. કી પ્રિફિક્સ નેટવર્ક પસંદ કરે છે, તેથી એક પરીક્ષણ કી મુખ્ય નેટના ફંડને ખસેડી શકતી નથી.
ત્રણ પરિસ્થિતિઓનું વ્યાયામ કરો: એક ખુશી-માર્ગની ચુકવણી જે payment.received ને ફાયર કરે છે, એક ચૂકી ગયેલી ડિલિવરી (વેબહૂકને મરેલા URL પર પોઈન્ટ કરો, પછી transactions.get સાથે વ્યવહાર લાવીને સમજૂતી કરો), અને એક વેબહૂક પુનરાવર્તન (પ્રથમ વખત 500 પાછું આપો, બીજું 200, અને ખાતરી કરો કે તમારો હેન્ડલર આઇડેમ્પોટેન્ટ છે). જ્યારે ત્રણેય પરીક્ષામાં પસાર થાય છે, ત્યારે કી બદલો અને શિપ કરો.
પાંચ ભૂલો જે ટીમોને એક અઠવાડિયું ખર્ચે છે.
વેબહૂક સહીની ચકાસણીને છોડી રહ્યા છે
જો તમે /webhooks/payment પર કોઈપણ પોસ્ટને અધિકૃત તરીકે સ્વીકારતા હો, તો એક હુમલાખોર નકલી ચુકવણી ઇવેન્ટ બનાવે છે અને તમારા એજન્ટને મફતમાં કામ પહોંચાડવામાં ઠગાવી શકે છે. હંમેશા HMAC-ચકાસણી કરો વેબહૂક સિક્રેટ સાથે, એક સ્થિર-સમયની તુલના નો ઉપયોગ કરીને. પ્રથમ સમર્પણ લગભગ હંમેશા ગુમ થયેલ ચકાસણી છે.
અલગ પુષ્ટિ ઇવેન્ટ માનતા
મોકલવામાં આવેલા ઇવેન્ટ્સ છે payment.received, payment.sent, wallet.deployed, અને webhook.test - ત્યાં કોઈ અલગ પુષ્ટિ ઇવેન્ટ નથી. payment.received ત્યારે ફાયર થાય છે જ્યારે પરિવહન એક બ્લોકમાં હોય છે. મોટા ભાગના કામ માટે, તે તમારા માટે પહોંચાડવા માટેનું સંકેત છે. કંઈક ખર્ચાળ અથવા અપરિવર્તનીય માટે, transactions.get સાથે ટ્રાન્ઝેક્શનને પોલ કરો અને કાર્ય કરતા પહેલા તમારી પોતાની પુષ્ટિ થ્રેશોલ્ડ લાગુ કરો; એવા ઇવેન્ટની રાહ ન જુઓ જે અસ્તિત્વમાં નથી.
વેબહૂક હેન્ડલરો પર કોઈ idempotency નથી
Webhooks નોન-2xx પ્રતિસાદ પર પુનરાવર્તન કરે છે, અને સમાન ઘટના લોડ હેઠળ એકથી વધુ વાર આવશે. તમારા હેન્ડલરનું આઈડેમ્પોટેન્ટ હોવું જોઈએ: તમે પહેલેથી જ પ્રક્રિયા કરેલા ઇવેન્ટ IDની નાની ટેબલ રાખો અને નકલને છોડી દો. અન્યથા, એક તાત્કાલિક બ્લિપ સમાન કાર્યને બે વાર પહોંચાડશે અને તમે ડબલ-ફુલફિલમેન્ટને ડિબગ કરવામાં કલાકો પસાર કરશો.
ટેસ્ટ અને લાઇવ API કી મિશ્રણ
ટેસ્ટ કી (sk_test_) સેન્ડબોક્સને હિટ કરે છે અને બેઝ સેપોલિયા ઉપયોગ કરે છે; જીવંત કી (sk_live_) ઉત્પાદનને હિટ કરે છે અને બેઝ મેનનેટનો ઉપયોગ કરે છે. પર્યાવરણ કન્ફિગ્સમાં તેમને મિશ્રિત કરવું 'ડેવમાં કાર્ય કરે છે, પ્રોડમાં નિષ્ફળ' ટિકિટોનું કારણ છે. જો તમારી રનટાઇમ પર્યાવરણ અને કી પ્રિફિક્સ મેળ ખાતા નથી, તો સ્ટાર્ટઅપ પર હાર્ડ-ફેઇલ કરો.
ગાયબ થયેલ વેબહૂકને નિષ્ફળ ચુકવણી તરીકે માનવું
કોઈ નિષ્ફળતા ઇવેન્ટ નથી, અને એક વેબહૂક ચૂકી શકાય છે (તમારો અંતિમ બિંદુ બંધ હતો, એક ડિલિવરી છોડી દેવામાં આવી). એજન્ટને 'ફંડની રાહ જોઈ રહી છે' લૂપમાં અટકવા ન દો. સમન્વયિત કરો: transactions.get સાથે ટ્રાન્ઝેક્શન મેળવો જેથી વાસ્તવિક રાજ્ય જાણો, અને કોઈપણ રાહ જોઈ રહેલા પ્રવાહ પર સમય મર્યાદા મૂકો જેથી એક છોડી દેવામાં આવેલી ચુકવણી રાખેલ સંસાધનોને મુક્ત કરે છે તેના બદલે ક્યારેય અટકતા નથી.
જ્યારે તમારી પ્રથમ ચુકવણી થાય છે.
મૂળભૂત ચુકવણીઓ કાર્યરત હોય ત્યારે, સૌથી વધુ ચૂકવણી કરનારા અનુસરણો ખર્ચ નિયંત્રણ (તેથી એજન્ટ બજેટ સાથે ભાગી ન જાય), વેબહુક મજબૂતી (તેથી ચુકવણીઓ ભાર હેઠળ મૌન રીતે ન ગમે) અને ઓળખની માન્યતા (તેથી વિપરીત પક્ષો એજન્ટના જાહેર પૃષ્ઠ પર વિશ્વાસ કરે છે) છે.
એજન્ટ ખર્ચ નિયંત્રણો સેટ કરો જે પ્રોમ્પ્ટ ઇન્જેક્શનને જીવંત રહે છે
વેબહૂક પેટર્ન જે વિકાસકર્તાઓ સૌથી વધુ પૂછે છે
GitHub અને ડોમેન ચકાસણી બેજ મેળવો
પૂર્ણ API સંદર્ભ docs.blockchain0x.com પર છે. સમાન APIs માટે ઉત્પાદન સપાટી: ચુકવણી API.