യാഥാർത്ഥ്യ പണം ഇല്ലാതെ ഏജന്റ് പെയ്മെന്റുകൾ പരീക്ഷിക്കുക.
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 vars, വ്യത്യസ്ത ഡാറ്റാബേസ് (അല്ലെങ്കിൽ കുറഞ്ഞത് വ്യത്യസ്ത പട്ടികകൾ), വ്യത്യസ്ത വെബ്ഹുക്ക് URL.
- വെബ്ഹുക്ക് മാതൃകകൾ ഗൈഡ് - ഈ ഗൈഡ് നിങ്ങൾക്ക് പരീക്ഷിക്കാൻ ഒരു ഹാൻഡ്ലർ ഉണ്ടെന്ന് കരുതുന്നു.
ടെസ്റ്റ് കീയിൽ മാറുക.
ഒരു sk_test_ കീ Base Sepolia-ൽ ഇടപാടുകൾ നടത്തുന്നു; ഒരു sk_live_ കീ Base പ്രധാന നെറ്റ്വർക്കിൽ ഇടപാടുകൾ നടത്തുന്നു. പ്രിഫിക്സ് നെറ്റ്വർക്കിനെ തിരഞ്ഞെടുക്കുന്നു - ഒരു വ്യത്യസ്ത നെറ്റ്വർക്ക് env var ഇല്ല, ഒരു ടെസ്റ്റ് കീ പ്രധാന നെറ്റ്വർക്കിലെ ഫണ്ടുകൾ നീക്കാൻ കഴിയില്ല. അതിനാൽ, ഒരു ഡെവ് പരിസ്ഥിതിക്ക് നിങ്ങൾ മാറ്റുന്ന എല്ലാം കീ (മറ്റു ടെസ്റ്റ് വെബ്ഹുക്ക് രഹസ്യം) ആണ്.
# .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-യിൽ യഥാർത്ഥ കൈമാറ്റമാണ്, ഇത് mainnet പോലെ തന്നെ 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-നോട് സമാനമായി പ്രവർത്തിക്കുന്നില്ല - ബ്ലോക്ക് സമയവും തിരക്കുമാണ് വ്യത്യാസം. മെയിൻനെറ്റ് തീവ്രതയെ ലോഡ്-ടെസ്റ്റ് ചെയ്യാൻ ടെസ്റ്റ്നെറ്റ് ഉപയോഗിക്കരുത്, നിങ്ങളുടെ ടെസ്റ്റ്നെറ്റ് ലേറ്റൻസാണ് നിങ്ങൾ ഉൽപ്പന്നത്തിൽ കാണുന്നത് എന്ന് കരുതരുത്. നിങ്ങൾക്ക് യാഥാർത്ഥ്യ സംഖ്യകൾ ആവശ്യമുണ്ടെങ്കിൽ, sk_live_ കീ ഉപയോഗിച്ച് ചെറിയ അളവിലുള്ള മെയിൻനെറ്റ് സ്മോക്ക് ടെസ്റ്റ് നടത്തുക.
പങ്കിടുന്ന ഡാറ്റാബേസുകളിൽ ടെസ്റ്റ് ഫിക്സ്ചറുകൾ വിട്ടുപോകുന്നു
നിങ്ങളുടെ ഡെവ്, പ്രോഡ് പരിസ്ഥിതികൾ ഒരു ഡാറ്റാബേസ് പങ്കിടുന്നുവെങ്കിൽ (പങ്കിടരുത്), ടെസ്റ്റ് ഇവന്റുകൾ ലൈവ് ഇവന്റുകളുമായി ഒരേ പട്ടികയിൽ എത്തുന്നു, നിങ്ങളുടെ ഐഡമ്പോടൻസി ഡിഡ്യൂപ്പ് തകർത്ത് (ഇവന്റ് ID മുൻപിൽ വ്യത്യസ്തമാണ്, പക്ഷേ വരി യാഥാർത്ഥമാണ്). കുറഞ്ഞത്, ഓരോ പരിസ്ഥിതിയിലും webhook_events പട്ടിക വേർതിരിക്കുക. മെച്ചം: പൂർണ്ണമായും വ്യത്യസ്ത DB-കൾ. ഇത് ഒരിക്കൽ കടിച്ചുപോകുന്നത് വരെ അധികമായതായി തോന്നുന്ന നിയമങ്ങളിൽ ഒന്നാണ്.
പരീക്ഷണ ലൂപ്പ് നിങ്ങളുടെ ഡെവ് സൈക്കിളിൽ ഒരിക്കൽ.
ഒരു ആരോഗ്യകരമായ ടെസ്റ്റ് ലൂപ്പ് നിലവിലുണ്ടായാൽ, ശേഷിക്കുന്ന ജോലി കൂടുതലും ശക്തമാക്കലാണ്: ലോഡിന് കീഴിൽ വിശ്വസനീയമായ വെബ്ഹുക്ക് കൈകാര്യം ചെയ്യൽ, ഒരു അന്തിമ സുരക്ഷാ ചെക്ക്ലിസ്റ്റ്, നിങ്ങൾക്ക് കൂടെ പ്രവർത്തിക്കുന്ന മുൻപ് ഉണ്ടായിരുന്ന പേയ്മെന്റ് പ്രൊവൈഡറിൽ നിന്ന് മൈഗ്രേഷനുകൾ.
ഡെവലപ്പർമാർ ഏറ്റവും കൂടുതൽ ചോദിക്കുന്ന വെബ്ഹുക്ക് മാതൃകകൾ
ജീവിതത്തിലേക്ക് പോകുന്നതിന് മുമ്പ് നിങ്ങളുടെ ഏജന്റ് വാലറ്റ് സുരക്ഷിതമാക്കുക
ഏജന്റ്-ചലിപ്പിച്ച API ആക്സസിനായി Stripe-ൽ നിന്ന് Blockchain0x-ലേക്ക് മാറുക
docs.blockchain0x.com ൽ മുഴുവൻ പരാമർശം. ടെസ്റ്റ് നെറ്റ് വിശദാംശങ്ങൾ: Base chain glossary. ഉൽപ്പന്ന ഉപരിതലം: Payment API.