Gerçek para olmadan ajan ödemelerini test edin.
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.
Başlamadan önce.
- Canlıda (veya en azından canlı şekilli) çalışan bir entegrasyon - add-payments-to-agent adresine bakın.
- Gösterge panelinden bir
sk_test_API anahtarı ve eşleşen test imza sırrı. - Geliştirme süresince webhook teslimatı için ngrok (veya herhangi bir HTTPS tüneli).
- Ayrı bir geliştirme ortamı - farklı çevre değişkenleri, farklı veritabanı (veya en azından farklı tablolar), farklı webhook URL'si.
- webhook desenleri kılavuzu ile rahatlık - bu kılavuz, test edilecek bir işleyiciniz olduğunu varsayar.
Test anahtarına geçin.
Bir sk_test_ anahtarı, Base Sepolia üzerinde işlem yapar; bir sk_live_ anahtarı, ana ağ Base üzerinde işlem yapar. Ön ek, ağı seçer - ayrı bir ağ ortam değişkeni yoktur ve bir test anahtarı ana ağ fonlarını hareket ettiremez. Bu nedenle, bir geliştirme ortamı için tek değiştirmeniz gereken anahtar (ve test webhook gizliliğidir).
# .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 dashboardAjanın cüzdanını musluktan fonlayın.
Test USDC'nin parasal bir değeri yoktur ama diğer yönleriyle canlı USDC gibi davranır: aynı yanıt şekilleri, aynı bakiye takibi. Bunu oluşturan bir SDK çağrısı yoktur - ajanınızın cüzdan adresini kamuya açık Base Sepolia USDC musluğundan finanse edersiniz. Adresi gösterge panelinde veya ajanın kamu sayfasında (veya SDK ile ajanı okuyarak) bulun, ardından musluğa yapıştırın.
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"])Gerçek bir test ödemesi yapın.
Wallet fonlandıktan sonra sk_test_ anahtarınızla payments.create çağırın. Bu, test fonları kullanarak Base Sepolia üzerinde gerçek bir transferdir ve mainnet'teki gibi payment.received webhook'unu tetikler - yani simülasyon değil, gerçek code path'i çalıştırırsınız. Event'in tunnel edilmiş handler'ınıza ulaştığını izleyin.
// 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 webhookEn azından üç senaryo uygulamak için: bir ödeme gerçekleştiğinde (mutlu yol, payment.received), asla gerçekleşmeyen bir ödeme (webhook'u ölü bir URL'ye yönlendirin ve uzlaşma taramanızın takılı işi yakaladığını doğrulayın - çoğu ekibin göz ardı ettiği yol) ve bir webhook tekrar denemesi (ilk seferde 500 zorlayın ve ikinci seferde 200, ardından idempotentliğinizin tekrar eden işi atladığını doğrulayın).
Webhook'ları yerel işleyicinize tünelleyin.
Test ödemeleri, test webhook'u için yapılandırdığınız URL'ye gerçek webhook'lar gönderir. Yerel geliştirme için, dizüstü bilgisayarınıza HTTPS tüneli verin. ngrok en basit seçenektir; herhangi bir ters tünel aracı çalışır.
# 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.Test ve canlı, ayrı anahtarlar ve ayrı webhook yapılandırması kullanır, böylece üretimi gerçek uç noktanıza işaretlenmiş bırakabilirken yerel tüneliniz test olaylarını yönetir.
Yanlış yapılandırılmış anahtarlar üzerinde hızlıca başarısız olun.
Test/canlı anahtarlar etrafındaki en yaygın üretim olayı sessizdir: bir dağıtım test anahtarı ile gelir, ödemeler geçmez, uyarılar yalnızca bir sonraki iş günü sonra tetiklenir. Bunu başlangıçta engelleyin: ortam ve anahtar öneki eşleşmiyorsa başlamayı reddedin.
// 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.")Sonradan sorun çıkaran beş test hatası.
Base Sepolia'nın kendi zinciri olduğunu unutmak
Bir sk_test_ anahtarı, Base Sepolia üzerinde işlem yapar, ana ağ Base üzerinde değil. Blok gezginleri, cüzdan adresleri ve gaz tokenleri hepsi ayrıdır. Yaygın bir kafa karışıklığı, gerçek bir Base adresini bir teste kopyalamak, başarısız olduğunu izlemek ve API'nin bozulduğunu düşünmektir. Ajanın cüzdan adresini Base Sepolia USDC musluğundan finanse edin ve o zincirde var olan adreslere ödeme yapın.
Başarısızlık yollarını test etmiyor
Çoğu ekip, mutlu yolu test eder - payment.received'i tetikleyen bir ödeme - sonra gönderir ve daha sonra ödenmemiş yollarının bozuk olduğunu keşfeder. Bunu test edin: webhook'u ölü bir URL'ye yönlendirin ve uzlaştırma taramanızın takılı işi yakaladığını doğrulayın, işleyicinizden 500 zorlayın ve yeniden denemenin idempotent olduğunu doğrulayın, ve payments.create'in 503'ünün (zincir adaptörü bağlı değil) ele alındığını kontrol edin. Test ortamları ucuzdur; üretim hata ayıklama pahalıdır.
Webhook URL'si hala üretimde ngrok'a işaret ediyor
Anahtar öneklerini değiştirmek hatırlaması kolaydır; webhook URL'sini güncellemek ise unutulması kolaydır. URL'niz hala dizüstü bilgisayarınızdaki ngrok tüneline işaret ediyorsa, ilk üretim ödemesi bir webhook'u boşluğa gönderir. Webhook URL'si değişikliğini bir dağıtım kontrol listesinin parçası olarak değerlendirin, tek seferlik bir ayar olarak değil.
Test ağı zamanlamasını canlı zamanlama için bir vekil olarak güvenilir bulmak
Base Sepolia, Base ana ağı ile aynı şekilde davranmaz - blok zamanlaması ve yoğunluk farklıdır. Testnet'i ana ağın verimliliğini yük test etmek için kullanmayın ve testnet gecikmenizin üretimde göreceğiniz şey olduğunu varsaymayın. Gerçek sayılara ihtiyacınız olduğunda, sk_live_ anahtarı ile küçük miktarda ana ağ duman testi yapın.
Paylaşılan veritabanlarında test düzeneklerini bırakmak
Eğer geliştirme ve üretim ortamlarınız bir veritabanını paylaşıyorsa (paylaşmayın), test olayları canlı olaylarla aynı tabloya düşer ve idempotans dedupe'nizi bozar (olay kimliği öneki farklıdır ama satır gerçektir). En azından, her ortam için webhook_events tablosunu izole edin. Daha iyi: tamamen ayrı veritabanları kullanın. Bu, bir kez canınızı yakana kadar aşırı görünen kurallardan biridir.
Test döngüsü geliştirme döngünüzde bir kez.
Sağlıklı bir test döngüsü kurulduktan sonra kalan işlerin çoğu hardening'dir: yük altında güvenilir webhook handling, son bir security checklist ve birlikte çalıştırıyor olabileceğiniz önceki payment provider'dan migration.
Geliştiricilerin en çok sorduğu webhook desenleri
Canlıya geçmeden önce ajanın cüzdanını güvence altına alın
Ajan destekli API erişimi için Stripe'dan Blockchain0x'a geçiş yapın
Tam referans için docs.blockchain0x.com adresine bakın. Testnet detayları: Base chain glossary. Ürün yüzeyi: Payment API.