Machine Pay · 机器支付
机器与机器之间,7×24 小时无人值守支付。自动化流水线、服务器集群、 多 Agent 协作团队之间的服务调用与结算 —— KYA 身份与预算边界为每一笔自动化支出护航。
什么是机器支付(M2M)?
当「付费方」不再是人,而是机器 —— 一个凌晨两点自动采购数据源的爬虫集群、 一条自动调用付费 API 的生产流水线、一组相互协作并各自消耗外部服务的 Agent 团队 —— 支付必须做到无人值守:没有弹窗、没有扫码、没有人守在旁边点确认。
国际上,x402 扩展协议与 MPP(Machine Payments Protocol)确立了「会话制」实践: 机器授权一次预算,即可在边界内完成多次支付。 Machine Pay 把这一模式落到国内持牌通道之上 —— 支付宝 A2M、微信 X402、 银联代扣在授权协议内自动路由,机器侧零人工干预。
与此同时,控制面完全向人开放:任务级预算、分级授权、实时账单、 一键紧急停止 —— 自动化越彻底,人的掌控越要清晰。
# 02:00 数据采购流水线 · 会话预算 ¥200 $ payhub session create \ --task nightly-etl --budget 200.00 \ --categories data,ocr --expires 4h → ps_nightly_0929 · 剩余 ¥200.00 $ etl run pipeline.yaml ✓ marketdata API ¥12.00 402→paid→200 ✓ ocr-service ¥ 3.20 402→paid→200 ✓ enrich-contacts ¥45.00 402→paid→200 → 任务完成 · 剩余 ¥139.80 · 账单已归档 # 无人值守,但每一笔都有签名、有预算、可追溯
核心能力
KYA 机器身份
机器与 Agent 注册即获专属身份与签名密钥(KYA,Know Your Agent),支付请求全程验签,可信等级参与路由决策。
任务级预算
每个自动化任务一个钱包:预算内自动放行,接近上限自动预警,耗尽自动熔断。
分级授权策略
小额自动放行、中额邮件确认、大额人工审批;按服务类别白名单收敛机器可花钱的范围。
紧急停止
一个指令冻结指定机器或全部支付能力,异常与攻击第一时间止损,事后凭签名流水审计。
授权一次,边界内自由运行
创建任务会话
为自动化任务创建支付会话:总预算、允许的服务类别、有效期。
POST /v1/agent/session边界内自动支付
任务运行中遇到付费服务,PayHub 校验预算与类别白名单后自动完成支付。
auto-pay实时账单汇总
每笔支出实时入账,按机器、任务、服务多维汇总,异常模式自动标记。
GET /v1/auth/billing结束与审计
会话到期或任务完成自动关账,签名流水完整归档,随时可审计回放。
auditable对标国际实践,落在持牌通道
国际实践参照 · x402 / MPP
开放协议生态 · 会话制机器支付
- x402 扩展协议:HTTP 402 挑战-响应的机器原生支付语义,是 Machine Pay 采用的交互基础。
- MPP 会话制:授权一次预算即可完成多次支付,避免每笔交易重复授权——PayHub 支付会话直接继承该模型。
- 局限:国际实践多基于加密货币或卡组织网络结算,无法直接服务人民币场景与国内合规要求。
国内落地 · 持牌通道自动扣款
支付宝 A2M · 微信 X402 · 银联代扣
- 支付宝 A2M:AI 到机器的调用计费与钱包预算管控,为机器消费提供持牌清算底座。
- 微信 X402:
AUTH_AND_PAY授权即付模式与 15 分钟授权超时,天然适配自动扣款语义。 - PayHub 的角色:把国际协议语义与国内持牌通道对接——机器侧用 x402 会话,清算侧走持牌机构,预算与审计由 PayHub 统一管理。
国际协议定义了机器支付该怎么交互,持牌通道定义了钱该怎么合规地动 —— Machine Pay 把两者接在一起。
为你的自动化任务创建支付会话
from payhub import PayHubClient client = PayHubClient("ph_live_...") # 为夜间 ETL 任务创建无人值守支付会话 session = client.create_session( task_id="nightly-etl", budget_limit={"amount": "200.00", "currency": "CNY"}, allowed_categories=["data", "ocr"], # 只许花在这两类服务 expires_in=4 * 3600, ) # 需要止损时,一键冻结 client.emergency_stop(scope="task", task_id="nightly-etl")