API 参考文档

API 参考文档

基于OpenAPI 3.1规范的ACP协议完整API参考文档。

🔗 基础信息

  • API版本: 2025-09-29
  • 协议: HTTPS
  • 认证: Bearer Token
  • 内容类型: application/json

🔐 认证

所有API请求必须包含有效的Bearer token:

Authorization: Bearer <your-api-token>

📋 通用头部

必需头部

  • Authorization: Bearer <token> - API认证令牌
  • API-Version: 2025-09-29 - API版本标识
  • Content-Type: application/json - 请求内容类型

推荐头部

  • Idempotency-Key: <unique-key> - 幂等性密钥
  • Request-Id: <correlation-id> - 请求关联ID
  • Accept-Language: zh-CN - 首选语言
  • User-Agent: <client-info> - 客户端信息

可选头部 (安全增强)

  • Signature: <base64url-signature> - 请求签名
  • Timestamp: <RFC3339-timestamp> - 请求时间戳

🛒 智能体结账 API

创建结账会话

创建新的结账会话,初始化购物车状态。

POST /checkout_sessions

请求体:

{
  "items": [
    {
      "id": "prod_12345",
      "quantity": 2
    }
  ],
  "buyer": {
    "first_name": "张",
    "last_name": "三",
    "email": "[email protected]",
    "phone_number": "+86-138-0013-8000"
  },
  "fulfillment_address": {
    "name": "张三",
    "line_one": "北京市朝阳区建国路1号",
    "line_two": "国贸大厦A座",
    "city": "北京",
    "state": "BJ",
    "country": "CN",
    "postal_code": "100001"
  }
}

响应 (201 Created):

{
  "id": "checkout_session_abc123",
  "payment_provider": {
    "provider": "stripe",
    "supported_payment_methods": ["card"]
  },
  "status": "ready_for_payment",
  "currency": "cny",
  "line_items": [
    {
      "id": "line_item_456",
      "item": {
        "id": "prod_12345",
        "quantity": 2
      },
      "base_amount": 5998,
      "discount": 600,
      "subtotal": 5398,
      "tax": 540,
      "total": 5938
    }
  ],
  "fulfillment_address": {
    "name": "张三",
    "line_one": "北京市朝阳区建国路1号",
    "line_two": "国贸大厦A座",
    "city": "北京",
    "state": "BJ",
    "country": "CN",
    "postal_code": "100001"
  },
  "fulfillment_option_id": "standard_shipping",
  "fulfillment_options": [
    {
      "type": "shipping",
      "id": "standard_shipping",
      "title": "标准配送",
      "subtitle": "3-5个工作日",
      "carrier": "顺丰速运",
      "earliest_delivery_time": "2025-10-12T09:00:00Z",
      "latest_delivery_time": "2025-10-15T18:00:00Z",
      "subtotal": 1500,
      "tax": 0,
      "total": 1500
    },
    {
      "type": "shipping", 
      "id": "express_shipping",
      "title": "次日达",
      "subtitle": "1个工作日",
      "carrier": "顺丰速运",
      "earliest_delivery_time": "2025-10-10T09:00:00Z",
      "latest_delivery_time": "2025-10-10T18:00:00Z",
      "subtotal": 3000,
      "tax": 0,
      "total": 3000
    }
  ],
  "totals": [
    {
      "type": "items_base_amount",
      "display_text": "商品总计",
      "amount": 5998
    },
    {
      "type": "items_discount",
      "display_text": "商品优惠",
      "amount": -600
    },
    {
      "type": "subtotal",
      "display_text": "小计",
      "amount": 5398
    },
    {
      "type": "fulfillment",
      "display_text": "配送费",
      "amount": 1500
    },
    {
      "type": "tax",
      "display_text": "税费",
      "amount": 540
    },
    {
      "type": "total",
      "display_text": "总计",
      "amount": 7438
    }
  ],
  "messages": [],
  "links": [
    {
      "type": "terms_of_use",
      "url": "https://acplib.com/legal/terms"
    },
    {
      "type": "privacy_policy", 
      "url": "https://acplib.com/legal/privacy"
    }
  ]
}

更新结账会话

更新现有结账会话的商品、地址或配送选项。

POST /checkout_sessions/{checkout_session_id}

请求体示例 (更新配送选项):

{
  "fulfillment_option_id": "express_shipping"
}

请求体示例 (更新商品):

{
  "items": [
    {
      "id": "prod_12345",
      "quantity": 3
    },
    {
      "id": "prod_67890", 
      "quantity": 1
    }
  ]
}

响应 (200 OK): 返回更新后的完整会话对象

检索结账会话

获取结账会话的当前状态。

GET /checkout_sessions/{checkout_session_id}

响应 (200 OK): 返回完整的会话对象

完成结账会话

使用支付信息完成结账,创建订单。

POST /checkout_sessions/{checkout_session_id}/complete

请求体:

{
  "buyer": {
    "first_name": "张",
    "last_name": "三", 
    "email": "[email protected]",
    "phone_number": "+86-138-0013-8000"
  },
  "payment_data": {
    "token": "vt_01J8Z3WXYZ9ABC",
    "provider": "stripe",
    "billing_address": {
      "name": "张三",
      "line_one": "北京市朝阳区建国路1号",
      "city": "北京",
      "state": "BJ",
      "country": "CN",
      "postal_code": "100001"
    }
  }
}

响应 (200 OK):

{
  "id": "checkout_session_abc123",
  "status": "completed",
  "order": {
    "id": "ord_xyz789",
    "checkout_session_id": "checkout_session_abc123",
    "permalink_url": "https://acplib.com/orders/ord_xyz789"
  },
  "currency": "cny",
  "line_items": [...],
  "totals": [...],
  "messages": [
    {
      "type": "info",
      "content_type": "plain",
      "content": "订单已成功创建,我们将尽快为您发货。"
    }
  ]
}

取消结账会话

取消未完成的结账会话。

POST /checkout_sessions/{checkout_session_id}/cancel

响应 (200 OK):

{
  "id": "checkout_session_abc123",
  "status": "canceled",
  "messages": [
    {
      "type": "info",
      "content_type": "plain", 
      "content": "结账会话已取消。"
    }
  ]
}

💳 支付委托 API

创建支付委托令牌

为支付凭证创建委托令牌,用于后续的支付处理。

POST /agentic_commerce/delegate_payment

请求体:

{
  "payment_method": {
    "type": "card",
    "card_number_type": "fpan",
    "virtual": false,
    "number": "4242424242424242",
    "exp_month": "12",
    "exp_year": "2026",
    "name": "张三",
    "cvc": "123",
    "checks_performed": ["avs", "cvv"],
    "iin": "424242",
    "display_card_funding_type": "credit",
    "display_wallet_type": null,
    "display_brand": "visa",
    "display_last4": "4242",
    "metadata": {
      "issuing_bank": "招商银行"
    }
  },
  "allowance": {
    "reason": "one_time",
    "max_amount": 7438,
    "currency": "cny",
    "checkout_session_id": "checkout_session_abc123",
    "merchant_id": "acplib_merchant",
    "expires_at": "2025-10-09T15:30:00Z"
  },
  "billing_address": {
    "name": "张三",
    "line_one": "北京市朝阳区建国路1号",
    "line_two": "国贸大厦A座",
    "city": "北京",
    "state": "BJ",
    "country": "CN",
    "postal_code": "100001"
  },
  "risk_signals": [
    {
      "type": "card_testing",
      "score": 15,
      "action": "authorized"
    }
  ],
  "metadata": {
    "source": "chatgpt",
    "session_id": "chat_session_123",
    "user_agent": "Mozilla/5.0..."
  }
}

响应 (201 Created):

{
  "id": "vt_01J8Z3WXYZ9ABC",
  "created": "2025-09-29T11:00:00Z",
  "metadata": {
    "source": "agent_checkout",
    "merchant_id": "acplib_merchant",
    "idempotency_key": "idem_abc123"
  }
}

📊 数据模型

CheckoutSession 对象

字段类型描述
idstring会话唯一标识符
statusenum会话状态: not_ready_for_payment, ready_for_payment, completed, canceled, in_progress
currencystringISO 4217货币代码 (小写)
line_itemsLineItem[]订单行项目列表
fulfillment_addressAddress配送地址
fulfillment_optionsFulfillmentOption[]可用配送选项
fulfillment_option_idstring选定的配送选项ID
totalsTotal[]金额汇总列表
payment_providerPaymentProvider支付服务提供商信息
buyerBuyer买方信息
messagesMessage[]消息列表
linksLink[]相关链接
orderOrder订单信息 (仅完成状态)

LineItem 对象

字段类型描述
idstring行项目唯一标识符
itemItem商品信息
base_amountinteger基础金额 (最小单位)
discountinteger折扣金额 (最小单位)
subtotalinteger小计金额 (最小单位)
taxinteger税费金额 (最小单位)
totalinteger总计金额 (最小单位)

PaymentMethod 对象

字段类型必需描述
typestring支付方式类型 (目前仅支持 “card”)
card_number_typeenum卡号类型: fpan, network_token
virtualboolean是否为虚拟卡
numberstring卡号/令牌
exp_monthstring到期月份 (01-12)
exp_yearstring到期年份 (四位数)
namestring持卡人姓名
cvcstring安全码
display_card_funding_typeenum卡类型: credit, debit, prepaid
display_brandstring卡品牌 (如 “visa”, “mastercard”)
display_last4string卡号后四位

⚠️ 错误处理

所有错误响应使用统一的扁平对象格式:

{
  "type": "invalid_request",
  "code": "missing_field",
  "message": "缺少必需字段 'items'",
  "param": "$.items"
}

错误类型

类型HTTP状态码描述
invalid_request400请求格式错误或缺少必需字段
request_not_idempotent409幂等性冲突
processing_error422业务逻辑处理错误
rate_limit_exceeded429请求频率超限
service_unavailable503服务暂时不可用

常见错误代码

代码描述
missing_field缺少必需字段
invalid_field字段值无效
out_of_stock商品库存不足
payment_declined支付被拒绝
idempotency_conflict幂等性密钥冲突
session_not_found会话不存在
session_already_completed会话已完成

🔄 幂等性

为确保操作的幂等性,建议在创建和完成操作中使用 Idempotency-Key 头部:

Idempotency-Key: unique-operation-key-123
  • 相同密钥和相同参数的重复请求将返回相同结果
  • 相同密钥但不同参数的请求将返回 409 冲突错误

📏 限制和约束

请求限制

  • 最大请求体大小: 1MB
  • API调用频率: 每秒100次
  • 超时时间: 30秒

数据限制

  • 商品数量: 每个会话最多100个商品
  • 地址长度: 各字段最大长度见Address对象定义
  • 货币精度: 使用最小单位的整数表示

会话生命周期

  • 会话有效期: 24小时
  • 支付令牌有效期: 由allowance.expires_at指定
  • 最大重试次数: 3次

通过遵循此API参考文档,您可以正确实施ACP协议的所有接口,确保与ChatGPT等AI智能体的无缝集成。