વાસ્તવિક પૈસા વિના એજન્ટ ચુકવણીઓનું પરીક્ષણ કરો.
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.
તમે શરૂ કરવા પહેલાં.
- લાઇવ (અથવા ઓછામાં ઓછું લાઇવ-આકારમાં) પર કાર્યરત એકીકરણ - એજન્ટને ચુકવણીઓ ઉમેરો જુઓ.
- ડેશબોર્ડમાંથી
sk_test_API કી અને મેળ ખાતી ટેસ્ટ સાઇનિંગ સિક્રેટ. - વિકાસ-સમયની વેબહૂક ડિલિવરી માટે ngrok (અથવા કોઈપણ HTTPS ટનલ).
- એક અલગ વિકાસ વાતાવરણ - અલગ એન્વી વેર, અલગ ડેટાબેસ (અથવા ઓછામાં ઓછા અલગ ટેબલ), અલગ વેબહૂક URL.
- સ્વચ્છતા વેબહૂક પેટર્ન માર્ગદર્શિકા સાથે આરામ - આ માર્ગદર્શિકા માનતી છે કે તમારી પાસે પરીક્ષણ માટે હેન્ડલર છે.
ટેસ્ટ કી પર સ્વિચ કરો.
એક sk_test_ કી બેઝ સેપોલિયા પર વ્યવહાર કરે છે; એક sk_live_ કી બેઝ મેનનેટ પર વ્યવહાર કરે છે. પ્રિફિક્સ નેટવર્ક પસંદ કરે છે - ત્યાં કોઈ અલગ નેટવર્ક એન્વી વેર નથી, અને એક પરીક્ષણ કી મુખ્ય નેટ ફંડને ખસેડી શકતી નથી. તેથી વિકાસ પર્યાવરણ માટે તમે જે બધું બદલતા છો તે કી છે (અને પરીક્ષણ વેબહુક ગુપ્ત).
# .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 કૉલ નથી - તમે જાહેર બેઝ સેપોલિયા 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_ કી બેઝ સેપોલિયા પર વ્યવહાર કરે છે, બેઝ મેનનેટ પર નહીં. બ્લોક એક્સપ્લોરર્સ, વોલેટ સરનામા, અને ગેસ ટોકન બધા અલગ છે. એક સામાન્ય ભ્રમ એ છે કે વાસ્તવિક બેઝ સરનામાને પરીક્ષણમાં નકલ કરવી, તેને નિષ્ફળતા જોવા અને વિચારવું કે API તૂટી ગઈ છે. એજન્ટના વોલેટ સરનામાને બેઝ સેપોલિયા USDC ફોસેટમાંથી ફંડ કરો અને તે ચેઇનમાં અસ્તિત્વ ધરાવતા સરનામા ચૂકવો.
અસફળતા માર્ગોનું પરીક્ષણ કરવું નથી
મોટા ભાગના ટીમો ખુશીનો માર્ગ પરીક્ષણ કરે છે - એક ચુકવણી જે payment.receivedને ફાયર કરે છે - પછી શિપ કરે છે અને પછી જાણે છે કે તેમની નોટ-પેઇડ પાથ તૂટી ગઈ છે. તેને વ્યાયામ કરો: વેબહૂકને એક મરેલા URL પર નિર્દેશ કરો અને ખાતરી કરો કે તમારી પુનઃસંયોજન સ્વીપ અટકેલા કામને પકડે છે, તમારા હેન્ડલર પાસેથી 500ને બળજબરી કરી અને પુનરાવૃત્તિ આઈડેમ્પોટેન્ટ છે તે ખાતરી કરો, અને તપાસો કે payments.createનું 503 (ચેઇન એડેપ્ટર વાયર નથી) સંભાળવામાં આવ્યું છે. પરીક્ષણ વાતાવરણ સસ્તા છે; ઉત્પાદન ડિબગિંગ મોંઘું છે.
Webhook URL હજુ પણ ઉત્પાદનમાં ngrok તરફ સંકેત કરે છે
કી પ્રિફિક્સ બદલવું યાદ રાખવા માટે સરળ છે; વેબહૂક URLને અપડેટ કરવું ભૂલવું સરળ છે. જો તમે URL સાથે જીવંત જાઓ જે હજુ પણ તમારા લેપટોપથી ngrok ટનલ તરફ સંકેત કરે છે, તો પ્રથમ ઉત્પાદન ચુકવણી એક વેબહૂકને ખૂણામાં ફેંકે છે. વેબહૂક URL બદલાવને ડિપ્લોય ચેકલિસ્ટનો ભાગ માનવો, એક વખતની સેટિંગ નહીં.
જીવંત સમય માટે પ્રોક્સી તરીકે ટેસ્ટનેટ સમય પર વિશ્વાસ કરવો
Base Sepolia Base mainnetની જેમ વર્તન નથી કરતું - બ્લોક ટાઇમિંગ અને ભીડ અલગ છે. મુખ્ય નેટ થ્રુપુટને લોડ-ટેસ્ટ કરવા માટે ટેસ્ટનેટનો ઉપયોગ ન કરો, અને માન્યતા ન રાખો કે તમારી ટેસ્ટનેટ લેટન્સી તે છે જે તમે ઉત્પાદનમાં જુઓ છો. જ્યારે તમને વાસ્તવિક સંખ્યાઓની જરૂર હોય, ત્યારે sk_live_ કી સાથે નાની રકમની મુખ્ય નેટ ધૂમ્રપાન પરીક્ષણ ચલાવો.
સંયુક્ત ડેટાબેસમાં પરીક્ષણ ફિક્ચર્સ છોડી રહ્યા છે
જો તમારા ડેવ અને પ્રોડ પર્યાવરણો એક ડેટાબેસને શેર કરે છે (ન કરો), તો પરીક્ષણ ઇવેન્ટ્સ જીવંત ઇવેન્ટ્સ સાથે સમાન કોષ્ટકમાં ઉતરે છે અને તમારી આઈડેમ્પોટન્સી ડેડુપને તોડે છે (ઇવેન્ટ ID પ્રિફિક્સ અલગ છે પરંતુ પંક્તિ વાસ્તવિક છે). ઓછામાં ઓછા, દરેક પર્યાવરણ માટે webhook_events કોષ્ટકને અલગ કરો. વધુ સારું: સંપૂર્ણપણે અલગ DBs. આ એક એવી નિયમોમાંથી એક છે જે વધુ લાગે છે ત્યાં સુધી તે એકવાર દાંત મારતું નથી.
જ્યારે પરીક્ષણ લૂપ તમારા વિકાસ ચક્રમાં હોય છે.
એક સ્વસ્થ પરીક્ષણ લૂપ સ્થિત છે, બાકીનું કામ મોટા ભાગે કઠોરતા છે: ભાર હેઠળ વિશ્વસનીય વેબહુક હેન્ડલિંગ, એક અંતિમ સુરક્ષા ચેકલિસ્ટ, અને તમે સંલગ્ન કરવામાં આવી રહેલા કોઈપણ અગાઉના ચુકવણી પ્રદાતા તરફથી માઇગ્રેશન.
વેબહૂક પેટર્ન જે વિકાસકર્તાઓ સૌથી વધુ પૂછે છે
લાઇવ જવા પહેલા તમારા એજન્ટ વોલેટને સુરક્ષિત કરો
એજન્ટ-ચાલિત API ઍક્સેસ માટે સ્ટ્રાઇપથી Blockchain0x પર માઇગ્રેટ કરો
પૂર્ણ સંદર્ભ docs.blockchain0x.com પર. ટેસ્ટનેટ વિગતો: બેઝ ચેઇન ગ્લોસરી. ઉત્પાદન સપાટી: ચુકવણી API.