Skip to content

把任意应用指到厂商面

Any app

XBuckle 仿真的是 厂商/协议表面(Stripe、Paddle、S3、GoTrue…),不是某个应用的业务捷径。官方 SDK / 标准 HTTP 把 base URL(或 env)指到本机即可联调;应用特有逻辑(例如把 webhook 写成 profiles.plan)留在应用侧。

Provider 选择器只列本机可打的云厂商 / 事实标准面(Connect → 本地联调 → env 迁移)。长尾小 SaaS 不进目录;需要新厂商时先落地本地面再加选项。

Billing:Stripe 或 Paddle

两个面挂在同一 Billing 服务下,路径不同:

Base本地密钥
Stripe 形http://127.0.0.1:3100/billing/v1sk_test_xbuckleXBUCKLE_STRIPE_SECRET_KEY
Paddle Billing APIhttp://127.0.0.1:3100/paddlexbuckle-paddle-keyXBUCKLE_PADDLE_API_KEY

Stripe env 模板

bash
STRIPE_SECRET_KEY=sk_test_xbuckle
STRIPE_API_BASE=http://127.0.0.1:3100/billing/v1
# 可选:本地 webhook 投递(仅 localhost)
# POST /billing/v1/webhook_endpoint  { "url": "http://127.0.0.1:PORT/…" }

Paddle env 模板

bash
PADDLE_API_BASE=http://127.0.0.1:3100/paddle
PADDLE_API_KEY=xbuckle-paddle-key
PADDLE_WEBHOOK_SECRET=xbuckle-paddle-secret
# 价格目录种子(可在应用侧对齐)
# pri_xbuckle_builder · pri_xbuckle_pro

Paddle 子集:customers / subscriptions(含 cancel)/ prices / products / portal-sessions / events。
发出通知时签 Paddle-Signaturets+h1),仅投递到 localhost。
模拟 cdn.paddle.com / Paddle.js overlay——浏览器 checkout UI 仍可用厂商 sandbox,或只用服务端 API 建 subscription。

观测:Services → Billing → paddle events / subscriptions;Stripe 分区看 checkouts / webhooks。

其他常见面(换 URL)

能力本地入口
Postgrespostgresql://postgres:postgres@127.0.0.1:5432/postgres?sslmode=disable
Redisredis://127.0.0.1:6379
Supabase 形http://127.0.0.1:3100 + xbuckle-anon-key/auth/v1 /rest/v1 /functions/v1
S3http://127.0.0.1:3100/s3
LLMhttp://127.0.0.1:3100/llm/v1gpt-mock / claude-mock
SMTP 捕获127.0.0.1:1025(不外发)

完整边界与 Coverage Contract:见 服务能力边界。MCP:services.describexbuckle://coveragecompat.check

Origin 仅作例子(env only)

若用 Origin dogfood:只改应用 env(例如 PADDLE_API_BASE / Supabase URL),不要在 XBuckle 里加 Origin 专用路由。计划更新、写 profiles.plan 等业务仍在 Origin 的 edge function / webhook handler 里完成。

验收以通用 scripts/acceptance/paddle.mjsnpm run acceptance 为准,不是某个应用的 happy path。