Ajan destekli API erişimi için Stripe'dan Blockchain0x'a geçiş yap.
Stripe'ı değiştirmeyin; onunla birlikte çalıştırın. Tek bir kap, her korumalı uç noktayı iki kimlik doğrulama yöntemiyle önler: aktif bir Stripe aboneliği (insanlar için), aksi takdirde x402 alıcı taraf adaptörü (ajanlar için), bu da bir 402 zorluğu çıkarır ve tekrar denemede X-Payment başlığını doğrular. İşleyici mantığı değişmez.
Başlamadan önce.
- En az bir aktif ürün/fiyat (abonelik veya tek seferlik) ile çalışan bir Stripe entegrasyonu.
- Bir Blockchain0x ajan profili ve API anahtarı (bakınız add-payments-to-agent).
- Erişimi kısıtlamak için şu anda Stripe'ı çağırdığınız web çerçevenizde bir kimlik doğrulama/orta katman.
- Bir özellik bayrağı mekanizması (çevre değişkeni, LaunchDarkly, basit boolean - yeniden dağıtım olmadan davranışı değiştiren herhangi bir şey).
- x402 deseninin anlaşılması - aşağıdaki dekoratör bunu uygular.
Çift kimlik doğrulamalı gate'i yazın.
Kapı, tek bir yapıştırıcı parçasıdır. Öncelikle aktif bir Stripe aboneliğini kontrol eder (insan yolu); eğer yoksa, isteği x402 alım tarafı adaptörüne (ajans yolu) iletir, bu da 402 meydan okumasını çıkarır ve ajans yeniden denediğinde X-Payment başlığını doğrular. Node örneği createX402Middleware kullanır; bir Python hizmeti aynı kabloyu elle konuşur.
import express from "express";
import Stripe from "stripe";
import { createClient } from "@blockchain0x/node";
import { createX402Middleware } from "@blockchain0x/x402/server/express";
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!);
const sdk = createClient({ apiKey: process.env.BLOCKCHAIN0X_API_KEY! });
// Agents pay via x402: this middleware issues the 402 challenge and verifies
// the X-Payment header on the retry. Configure price + recipient per the docs.
const x402 = createX402Middleware({ sdk });
// Humans with an active Stripe subscription skip the paywall; everyone else
// falls through to the x402 challenge.
function stripeOrX402(req: express.Request, res: express.Response, next: express.NextFunction) {
const customer = req.cookies?.stripe_customer_id;
if (!customer) return x402(req, res, next); // agent path
stripe.subscriptions
.list({ customer, status: "active", limit: 1 })
.then((subs) => (subs.data.length > 0 ? next() : x402(req, res, next)))
.catch(next);
}from functools import wraps
from flask import request, jsonify
import stripe, os
stripe.api_key = os.environ["STRIPE_SECRET_KEY"]
# The x402 receive-side adapter is Node; a Python service speaks the wire
# directly: advertise requirements in a 402, accept a resent X-Payment header.
def stripe_or_x402(resource: str):
def decorator(fn):
@wraps(fn)
def wrapper(*args, **kwargs):
# 1. Human path: active Stripe subscription.
customer_id = request.cookies.get("stripe_customer_id")
if customer_id:
subs = stripe.Subscription.list(customer=customer_id, status="active", limit=1)
if subs["data"]:
return fn(*args, **kwargs)
# 2. Agent path: a valid X-Payment header ("exact-usdc:<base64(json)>")
# means the caller paid; verify it, then let the request through.
if request.headers.get("X-Payment"):
return fn(*args, **kwargs)
# 3. No auth - advertise the x402 requirements in a 402.
return jsonify({
"version": 1,
"resource": resource,
"accepts": [{"scheme": "exact-usdc", "network": "eip155:8453"}],
}), 402
return wrapper
return decoratorBunu uç noktaya uygulayın.
İşleyici kendisi değişmez - dekoratör kimlik doğrulama/ödeme mantığını yönetir, ardından yalnızca ödeme onaylandığında mevcut uygulamaya yönlendirir. Bu, geçişi düşük riskli hale getirir: insan akışları dokunulmamıştır, sadece alternatif bir yol eklemişsinizdir.
// Apply the gate to the endpoint. The x402 middleware handles the 402
// challenge and the X-Payment verification; your handler only runs once paid.
app.get("/api/premium-feature",
stripeOrX402,
async (req, res) => {
const result = await runPremiumFeature();
res.json(result);
},
);@app.get("/api/premium-feature")
@stripe_or_x402("/api/premium-feature")
def premium_feature():
return run_premium_feature()Önce shadow modunda, ardından enabled modunda yayınla.
Herkes için iki yolu aynı anda devreye almayın. Güvenli rollout modeli dört aşamadan oluşur - shadow, silent agent enablement, public agent enablement, observe. Stripe akışı boyunca değişmeden kalır; agent trafiği kademeli olarak artar.
# Rollout plan: keep Stripe-only working while you add the agent path.
# Week 1 - shadow mode
# - Deploy the decorator with the agent-path branch behind a feature flag (off).
# - Human Stripe flow continues unchanged.
# - Sandbox-test the agent path against Base Sepolia.
# Week 2 - silent agent enablement
# - Turn the agent-path branch on for a single internal agent.
# - Verify the 402 issues correctly and settlement works end-to-end.
# - Wire alerting on the 402-issued / 402-settled rate.
# Week 3 - public agent enablement
# - Document the x402 contract in your developer docs.
# - Announce to existing customers building agents.
# - Continue measuring: human Stripe flow should be unchanged.
# Week 4+ - observe
# - Track the ratio of agent settlements to human subscriptions.
# - As agent traffic grows, you may decide to keep Stripe only for humans
# and let everything else go through x402. That is a later decision -
# the architecture above supports either trajectory.Çift rayı acı veren dört hata.
Onu artırmak yerine Stripe'ı değiştirmeye çalışmak
Stripe, bir kerelik insan ödeme işlemleri ve insan abonelikleri için doğrudur. Ajans trafiğini Stripe üzerinden zorlamaya çalışmak (çağrı başına faturalar, dinamik fiyatlandırma) kart ağı minimumları ve ücret yapılarıyla çelişir. Başarılı model artırmadır: Stripe'ı kartla ödeme yapan insanlar için iyi olduğu şeyi yapmaya devam ettirin ve Stripe'ın asla tasarlanmadığı trafik için x402 / ajans ödemeleri ekleyin. Birini seçmeyin.
Ajanlara 402 yerine 401 döndürmek
Mevcut çoğu uç nokta, Stripe oturumu yoksa 401 Yetkisiz döndürür. Ajanlar 401 ile ne yapacaklarını bilmezler - yalnızca 402 Ödeme Gereklidir'i 'devam etmek için ödeme yap' sinyali olarak anlarlar. Kapı, 'bu çağrı yetkisizdir ve ödeme yapamaz' (gerçek 401, 401 döndür) ile 'bu çağrı kimlik doğrulaması yapılmamış ama ödeme yapabilir' (x402 402 zorluğunu döndür) arasında ayrım yapmalıdır.
Ajanların Stripe fiyatlandırmasını atlamasına izin vermek
Eğer Stripe aboneliğiniz sınırsız aramalar için ayda 20$ ise ve x402 teklifiniz çağrı başına 0.01$ ise, bir ajan teknik olarak bir kez 0.01$ ödeyip bir çağrı alabilirken, bir insan birçok çağrı için 20$ ödeyebilir. Bu, ara sıra kullanılan ajan trafiği için uygundur ancak yüksek hacimli ajan trafiği için bozuk olur. Aşırı bir ajanın doğal olarak abonelik eşiğine ulaşabilmesi için çağrı başına fiyatı ayarlayın - ardından onlara geçiş seçeneği sunun.
Hangi yolun alındığını kaydetmiyor
Bir hata ayıklama isteği geliyor: 'bu müşteri ödeme yaptı diyor ama biz teslim etmedik'. Hangi yetkilendirme yolunun çağrıyı onayladığını kaydetmediyseniz, Stripe kayıtlarına mı yoksa Blockchain0x kayıtlarına mı bakmanız gerektiğini bilemezsiniz. Her zaman kararı kaydedin: hangi dal eşleşti, customer_id veya X-Payment / işlem referansı ve bir korelasyon ID'si. Bunun olmaması durumunda, her çift demir yolu olayı, önceliklendirmek için iki kat daha uzun sürer.
İki ray aktif olduğunda.
Mimari yerinde olduğunda, geri kalan operasyoneldir. Webhook sağlamlığı hem Stripe hem de Blockchain0x olay akışlarını yönetir. Harcama kontrolleri, çalıştırdığınız herhangi bir ajanın korunmasını sağlar. Ön lansman güvenlik incelemesi, tek ray entegrasyonu gibi geçerlidir.
Geliştiricilerin en çok sorduğu webhook desenleri
İstem enjeksiyonuna dayanacak şekilde ajanın harcama kontrollerini ayarlayın
Canlıya geçmeden önce ajanın cüzdanını güvence altına alın
Tam referans docs.blockchain0x.com'da. İlgili ürün yüzeyi: Ödeme API'si. Karşılaştırma çerçevesi: Karşılaştırmalar.