@aifinpay/代理(节点/类型脚本)
签名的AIFP-1 fetchPaid 流支持所有者选择的 v1.4 支付链 .
多边形是默认的; 选择另一个带有 v14.chain。 。 。 .
客户描述符不是生产批准:付款可用
由已安装的部署登记册、运行时间核查和
后端/商机能力。 运行时间、 签名人、 令牌、 RPC 链和当前
特征检查仍然是强制性的,同时还有持久的广播前期刊和
明确本地天然气预算。 源头建设和测试没有建立现场
接受付款.
本地购买需要新的独立 nativeUsdPrice 给POL、ETH、AVAX、,
选定链条上的 BNB 或 XRP 。 稳定币使用独立的被绑符
地址和小数。 美元微单位保持不变; token_settlement 绑定
精确6/18-十进制符号单位和每条包含毛额的条与签名的毛
18-十进制符号需要这个元数据; 遗产 6-十进制
引文仍然被接受。 通过 SDK 能力 API 检查流动资产
并安装了部署登记册.
maxGasWei 包括核准加结算。 OP链(Base/optimism/Unichain)
包括缓冲L1/操作器估计数; Nitro(Arbitrum/Robinhood)已包含
rPC 估计中母数据气体,所以它被计算一次。 业务方案费用
块签名。 这些是飞行前的估计,而不是包含时间的保证.
目前的管理概况仍可变;接收和回收政策不变.
见 付款配置和回收。 。 。 .
图片和NEAR部署支助
节点 SDK 生成已安装的 Apto 和 NEAR 部署针
@aifinpay/deployments 软件包。 钱包和代理护照已经
为两个家庭提供识别资料。 明确选择部署元数据 :
import { getAptosDeployment, getNearDeployment, resolveAptosDeployment } from "@aifinpay/agent";
const aptos = getAptosDeployment({ environment: "prod", network: "mainnet" });
const near = getNearDeployment({ environment: "dev", network: "testnet" });
// Selection additionally requires settlementEnabled in the packaged record.
const selected = resolveAptosDeployment({ environment: "prod", network: "mainnet", version: "v1.4" });
get*Deployment 允许只读检查残疾记录.
resolveAptosDeployment 财务报告和审定财务报表 resolveNearDeployment 否认已废弃的记录,
未知的网络、 环境不匹配和不支持的版本; 无遗留
选择倒置或默认网络 。 Aptos 指针包括模块散列
引用 ABI 文摘和每个网络来源。 近地针包括:
• 理事会成员不被视为治理当局.
见 自动 财务报告和审定财务报表
没有 登记册指南.
Aptos 或 NEAR 不执行付款执行 . 这些解析器读取
已装入元数据,而不是当前链条状态。 两个家庭都不是EVM v14.chain, (中文(简体) ),
财务报告和审定财务报表 fetchPaid 无法签署或结清付款。 需要执行支持
后端引文/接收合同,独立核实运行时间/档案检查,
特定链式签名、费用上限和持久回收;登记旗或付款
地址不提供这些.
仅用稳定币链
在一个 stablecoinOnly (Arc) 气体符号是被钉住的马克币本身:
设定 v14.asset 对它, maxGasWei 以18-十进制原生单位计,气体
并对照一个余额核对毛额。 测试网链只接受
network_mode: "test" 引证. 在一个 noNativePayment 链(BOT链)
土生土长的代币只付汽油,没有价格,所以 v14.asset 必须指定其名称
被钉住的马克币.
这个 solanaV14 选项为 SOL 和经典提供所有者选择的付费访问
SPL资产. 网络与环境 本地的Ed25519付款人,
独立来源 SOL/美元和 maxFeeLamports (交易费) 加上全部
非ce/ATA租金)与EVM选项分离. v14 财务报告和审定财务报表 solanaV14 一起行动
拒绝。 对照已安装的部署检查可用性
注册和运行时间/后端政策;应用程序配置不能覆盖
一条无法使用的路径.
准确的216字节引文和297字节指令遵循了被包裹的被钉住的IDL. 新的起源/配置/简介/薄荷/非账户证据和未签名的最后信息 在预算预留和当地签署之前进行模拟。 已签名的字节已保存 在单一发送之前。 未知的签名结果从未过期或授权 替换交易。 最终的失败只保留了已证实的失败 费用借项;缺失证明保留了全部保留。 公共历史/配额 明确选择索拉纳集群,绝不披露无记名收据.
将代理连接到其所有者的仪表板
时 https://dash.aifinpay.io (英语) 我的代理人们 根据地址添加代理 挑战。 签名并交回签名:
const signature = await agent.signDashboardClaim(challenge);
signDashboardClaim 仅显示 AiFinPay-claim:polygon:<this address>:<nonce>
并拒绝任何其他文本。 店主再看经纪人的收支
和收据.
已接受 v1.4 合同模式允许管理员更改配置费 和国库。 飞行前验证当前值;它不会使其永久不变. 见 收据配置和回收。 。 。 .
自动人工智能特工的非拘禁支付客户端
爱芬派. AIFP-1包含毛额:付款人总数等于
引用,商家收到99%,AiFinPay收到1%,创建/转介
获得0%。 目前,AIFP-2/x402在协议层充电为0%. 遗产
/api/b2b 拆分发票方法已停止。 v1.3 执行器检查
独立提供的部署/运行时针、链条、收费概况、商家
目标与资产。 匹配的运行时间价值本身并不是生产批准;
使用已安装的登记册、能力API、执行测试和CI作为证据,
并不要绕过运行时间检查.
Ed25519键盘是本地生成的 tweetnacl 永不离开
你的流程。 SDK只发送一次 SHA-256 + Ed25519 签名 in
页:1 x-signature 对 AiFinPay 保护端点进行认证的页眉 .
安装
安装已公布的稳定软件包 :
npm install @aifinpay/agent
或构建此源检出 :
# From the SDK repository root
cd node
npm ci --no-audit --no-fund
npm run build
npm pack
在应用程序中安装由此产生的焦油球 :
npm install /absolute/path/to/sdk/node/aifinpay-agent-<version>.tgz
快开始
在共享存款地址前装入您已经配置的钱包 :
import { AiFinPayAgent } from "@aifinpay/agent";
const agent = await AiFinPayAgent.fromEnvironment();
console.log({ evm: agent.evmAddress, solana: agent.solanaAddress });
fromEnvironment() 是一个 只装入 节点API. 它在
此顺序,匹配 MCP :
SEED_HASH:一个32字节种子被编码为64个十六进制字符,可选0x前缀../aifinpay/agents.json相对进程工作目录。 设定AIFINPAY_AGENTS_FILE用于另一个路径AIFINPAY_AGENT_ID选择时 从多个记录({"agents":[{"id":"crawler","seed_hash":"…"}]}) (中文(简体) ).AIFINPAY_AGENT_SECRET:一个现存的基地58索拉纳秘密.~/.aifinpay/agent.json,或AIFINPAY_HOME/agent.json: 现有的多边方案 键盘。 需要加密键盘AIFINPAY_WALLET_PASSPHRASE。 。 。 .
装入器从不创建或覆盖钱包、打印其密钥或调用
腾讯网. 缺少配置、 无效种子、 模糊的工程文件或
a 解密失败抛出而不是选择新的钱包。 装入任意 .env
在调用前的运行时间; 此 API 读取 process.env 并且确实
未读 .env 文档. SEED_HEX 不是一个化名 SEED_HASH保密
输入和钱包文件退出聊天、日志和版本控制.
相同的配置输入在进程重新启动后恢复相同的地址 .
明确 evmPrivateKey 选项覆盖所衍生的 EVM 身份; 保留
用于回收导入的钱包。 正在装入钱包
自己不支付任何费用 fetchPaid
还有支票.
AiFinPayAgent.fromSeed(seed, { derivationIndex }) 决定性地选择一个
儿童钱包。 每个链条使用自己的版本域,然后是
域的 NUL 分隔符后的小数 UTF-8 索引,然后恢复
种子 。 选择 derivationIndex 保存现有地址.
AiFinPayAgent.new() 财务报告和审定财务报表 Agent.new() 故意制造出新的麻风
钱包。 它们不装入已有的环境变量或键盘
你不要坚持他们所创造的钥匙。 只有在你故意的时候才用
需要新的身份,并会在恢复材料的私人存储之前
资助它。 永远不再重运行 new() 以收回现有资助地址.
正在装入已存在的密钥页
import { Agent } from "@aifinpay/agent";
// from solana-keygen JSON file (Node only)
const agent = await Agent.fromKeypairFile("./agent-wallet.json");
// from base58 secret string (works in browser too)
const agent2 = Agent.fromSecretB58("3RvZm7Gw...");
输入外部 EVM 签名器
Agent.new() 财务报告和审定财务报表 AiFinPayAgent.fromSeed() 从
探员种子。 将钥匙留在SDK之外——内部的签注,a
硬件支持的密钥, 或未来的销售商适配器—— 插入任何匹配的钱包
页:1 AgentWallet 接口通过 evmWallet (任何viem语) LocalAccount
符合结构条件:
import { Agent, evmPrivateKeyWallet } from "@aifinpay/agent";
// self-custodial default: the same key `evmPrivateKey` builds internally
const agent = Agent.new({ evmWallet: evmPrivateKeyWallet("0x…") });
两个零依赖性适配器覆盖钱包市场的其余部分 相同的接口 :
import { eip1193Wallet, viemWalletClientWallet } from "@aifinpay/agent";
// MetaMask and any generic EVM browser wallet (async: reads the address
// via eth_requestAccounts)
const injected = Agent.new({ evmWallet: await eip1193Wallet(window.ethereum) });
// Privy, Crossmint, ZeroDev, Coinbase Smart Wallet, custom transports —
// anything that hands out a viem WalletClient with an account
const embedded = Agent.new({ evmWallet: viemWalletClientWallet(walletClient) });
服务器侧销售商 SDK( Coinbase CDP 服务器钱包, Circle) 已退出 范围:它们需要供应商API证书,SDK不得持有.
AgentWallet 实值 address 加号 signMessage编号 :signTypedData; 已经足够了
用于基于信件的x402授权. AiFinPayAgent 还接受
evmWalletClient 使用精确的viem客户端进行
签名。 它的账户一定是一个viem LocalAccount 与 signTransaction数字 :
v1.4 符号和日记在 SDK 广播之前精确的生字节
用于回收的独立选择链 RPC。 JSON-RPC/仅限期
智能账户客户对此流被拒绝. 必须配置客户端
用于选定链条。 此选项不能与 evmWallet 或者说
evmPrivateKey. MCP方案一体化采用同样的选择
当地身份继续提供索拉纳身份和签名.
X402 认证如何在引擎盖下工作
Agent.pay(url) (和 get编号 :post编号 :request)处理AiFinPay-native 402
带有请求的认证(第2版) 对于一个有门的请求 SDK:
- 402机构一次性携带
x-nonce,过期时x-nonce-expires-at, (中文(简体) ),x-aifinpay-auth-version: 2及其申请机构的SHA-256; - 除非请求被配置到原产地,否则拒绝签名
经纪人的
baseUrl反应来自这个来源, 和身体摘要 与它发送的身体相匹配; - 标志,与Ed25519, SHA-256 of
JSON.stringify(["AiFinPay-x402", "v2", nonce, pubkey, origin, METHOD, path+query, bodySha256, expiresAt])和基数58编码签名; - 用信头重试原请求 :
x-agent-pubkey: <base58 pubkey>x-nonce: <nonce>x-signature: <base58 sig>x-aifinpay-auth-version: 2
服务器验证签名, 消耗非ce, 检查代理有
现场直播PDA链上,为资源服务. 已退役的 v1 格式
(单位:千美元)GET /nonce, (中文(简体) ), SHA-256("AiFinPay-x402:{nonce}:{pubkey}")被拒绝,和
Agent.authHeaders() 掷出.
隐私
- 服务器从未看到您的私钥 . 期间.
- 农斯在使用时被消耗;再玩耐用.
- 付款在公共链上结算——明确选择的EVM网络——并在链上可见.
许可证
麻省理工学院.
收款授权
AIFP-1收据使用付费钱包签名. 见 批准和收回付款收据 复试和恢复,无需第二次转移.
一个网关网站保留着它的商人
fetchPaid 标出每个网关站点(https://gateway.aifinpay.io/<slug>改为:
商人先付了钱 然后钱才动了 之后的402个名字
同一地点的另一个商人扔出 Aifp1MerchantChangedError
(单位:千美元)code: "AIFP1_MERCHANT_CHANGED"在引用任何东西之前。 如果改变是
合法,如该电话;支付网站的重置费:
await agent.fetchPaid(url, {}, { allowMerchantChange: true });
// or name the merchant you trust; any other one is refused:
await agent.fetchPaid(url, {}, { expectedMerchantId: "mrch_…" });
柱子是每个站点的一个文件 ~/.aifinpay/merchant-pins (或
AIFINPAY_STATE_DIR),因此它们能活过重启;通过 merchantPins 页:1
特工把他们留在别处 无法读取的指针拒绝支付而不是
重新开始. resourcePathMode: "direct" 因为它的缓存
键已命名商号。 网关已失效的解答
410 gateway_retired,该投出 Aifp1GatewayRetiredError
(单位:千美元)code: "AIFP1_GATEWAY_RETIRED")在一次请求后;不重试。 电池
已经持有的被保存.
已经支付 : Aifp1ActiveReceiptError
在定购后一分钟内, /v1/quote 回答同一个付款人
资源,而不是引用,所以重试不能购买
两次 收不到的流程(新流程,或
fetchPaid 支付后失败)获得 Aifp1ActiveReceiptError
(单位:千美元)code: "AIFP1_ACTIVE_RECEIPT",一个子类 Aifp1QuoteError) (中文(简体) ). 什么都没有
引用或支付。 名称 receiptId, (中文(简体) ), txRef, (中文(简体) ), chain, (中文(简体) ), merchantId, (中文(简体) ),
resource 财务报告和审定财务报表 settledAt; 从回收中收回收据
onPrepared 保存为 txRef数字 :
try {
return await agent.fetchPaid(url, {}, opts);
} catch (e) {
if (!(e instanceof Aifp1ActiveReceiptError)) throw e;
const paid = await agent.recoverPaidPayment(savedRecoveryFor(e.txRef));
return fetch(url, { headers: { "AIFP-Receipt": paid.receipt } });
}
不重试 fetchPaid 一旦一分钟过了一个新的引文
新买的 没有保存的恢复 txRef 收据不能为
已重新发行;再次购买是新的付款和业主的决定.
指定支付费用的AI客户端
设定 framework 向AI客户端 代理运行, 和每一个请求
支付流动 AIFP-Agent-Framework: <value>: 第一个要求
可能答复402, /v1/quote, (中文(简体) ), /v1/pay 和所付报酬的重试(和
x402 (韩语) pay()) (中文(简体) ). 商家仪表板然后显示AI客户端支付了哪些.
const agent = await AiFinPayAgent.fromEnvironment({ framework: "claude" });
接受数值AGENT_FRAMEWORKS: chatgpt, (中文(简体) ), claude, (中文(简体) ), perplexity, (中文(简体) ),
gemini, (中文(简体) ), cursor, (中文(简体) ), openai-agents, (中文(简体) ), windsurf, (中文(简体) ), codex, (中文(简体) ), custom任意
其他抛出
AiFinPayError 当构建代理时。 保持不固定,没有标题是
发送; SDK 从未猜测. 构建后学习客户端的主机
代理通过它每个呼叫: fetchPaid(url, init, { framework }) 或者说
recoverPaidPayment(recovery, { framework })。 。 。 .
付款历史
import { getAgentHistory } from "@aifinpay/agent";
const history = await getAgentHistory({ address: "0x…", source: "transactions" });
// Or { passport: 'AIFP-000000042', network: 'polygon', source: 'receipts' }
transactions 覆盖有索引的 AiFinPay 多边形定居点,而非任意
钱包传输. receipts 包括检验
支付。 跟随 next_offset 与 limit编号 :offset。护照要求
与已部署的已核实的wallet解析器的后端;通过地址和
护照检查他们的匹配。 永远不要通过一个持有者的私钥或API秘密
一个标识符。 公共历史不归还无记名收发凭证.