

# AgentCore 付款快速入门
<a name="payments-getting-started"></a>

本教程将引导您完成设置 AgentCore 付款和处理第一笔微交易的过程。最后，您的代理将在测试网络上使用 x402 协议为资源付费。

您可以通过两种方式设置付款：
+  [使用 AgentCore 支付技能](#payments-getting-started-skill) — 一种自动设置体验，通过与 Kiro、Claude Code 或 Codex 等人工智能编码代理进行引导式对话来配置所有资源。该技能将为您处理 CLI 命令、SDK 脚本和框架布线。
+  [使用 CLI、SDK 或 Boto3](#payments-getting-started-manual) — 直接使用 CLI、 AWS SDK 或 AgentCore CLI 进行分步手动设置。 AWS 

## 使用 “ AgentCore 付款” 技能
<a name="payments-getting-started-skill"></a>

 AgentCore Payments 技能通过交互式引导式体验自动完成整个设置过程。它提供了以下资源：
+  **PaymentCredentialProvider**— 在 “ AgentCore 身份” 中存储支付提供商凭证。
+  **付款管理器**-协调付款操作的顶级资源。
+  **付款连接器**-通过 AgentCore CLI 将管理员链接到您的凭证。
+  **支付工具** — 您的代理用来代表用户向商家付款的加密钱包。
+  **付款会话** — 具有支出限制的时限背景。

该技能还使用与框架无关的工具将付款汇入你的代理，因此它可以与 Strands、OpenAI Agents SDK 或任 LangGraph何 Python 框架配合使用。

### 先决条件
<a name="payments-getting-started-skill-prereqs"></a>

在开始之前，请确保你有：
+  AWS 已配置凭据的@@ **账户** (`aws configure`)
+  **可以 AgentCore 付款的 AWS 区域 — us-east-1、us-w** est-2、eu-central-1 或 ap-southeast-2。参见[支持的 AWS 区域](agentcore-regions.md)。
+  Node.js 已安装 **20 多**个（技能会自动安装 AgentCore CLI）
+  **访问付费端点的代**理 — 该技能使您的代理能够为受 x402 保护的 API 付费。要进行测试，您可以使用沙盒端点`https://sandbox.node4all.com/v1/x402-test`。
+  安装@@ **在 AI 编码[代理中的 AWS`aws-agents`插件代理工具包](https://github.com/aws/agent-toolkit-for-aws)**：  
**Example**  

------
#### [ Claude Code ]

  ```
  /plugin marketplace add aws/agent-toolkit-for-aws
  /plugin install aws-agents@agent-toolkit-for-aws
  ```

------
#### [ Codex ]

  该插件是从市场清单中自动发现的。要添加市场，请运行以下命令：

  ```
  codex plugin marketplace add aws/agent-toolkit-for-aws
  ```

------

### 调用技能
<a name="payments-getting-started-skill-invoke"></a>

付款技能是[代理工具包](https://github.com/aws/agent-toolkit-for-aws)中`agents-build`技能的一部分 AWS. 要触发它，请在 AI 编码代理中描述您的意图。例如：
+ “使用`aws-agents`插件中的`agents-build`技能向我的代理添加付款”
+ “使用`aws-agents`插件中的`agents-build`技能为我的代理设置微交易”
+ “我需要使用`aws-agents`插件中的`agents-build`技能处理 402 “需要付款”
+ “使用插件中的`agents-build`技能向我的代理发送电汇以支付受 x402 保护的 API 的费用” `aws-agents`

该技能可检测与付款相关的意图并自动加载付款工作流程。

### 该技能能起到什么作用
<a name="payments-getting-started-skill-flow"></a>

该技能运行一个自动化流程，可以端到端地配置您的支付基础设施。该技能会自动运行大多数步骤，并会暂停两次以供你输入：

1. 验证或安装 C AgentCore LI 并设置项目

1. 创建付款管理器

1.  **暂停** — 你跑`agentcore add payment-connector`去输入你的提供商机密（Coinbase CDP 或 Stripe Privy 凭证）

1. 将资源部署到您的 AWS 账户 () `agentcore deploy -y`

1. 将与框架无关的支付工具 () `x402_payment_tool.py` 连接到您的代理

1. 通过 SDK 创建按用户使用的钱包（工具）和预算有限的会话

1.  **暂停 — 您授权钱包（委托），并使用来**[自 Circle 水龙头网站的测试网 USDC 为其注资](https://faucet.circle.com/)

1. 设置环境变量并针对付费端点运行测试付款

在运行连接器命令之前，请从您的提供商那里获取凭证：
+  C@@ **oinbase CDP** — 来自 Coinb [ase 开发者平台](https://portal.cdp.coinbase.com/)网站的 API 密钥 ID、API 密钥和钱包密钥（启用委托签名）。
+  **Stripe Privy** — 来自 Priv [y 仪表板网站的应用程序 ID、应用程序密钥、授权 ID 和授权私](https://dashboard.privy.io/)钥。

成功运行表示代理调用`x402_fetch`、检测到`402`、通过 AgentCore SDK 结算付款，然后重试返回`200`付费内容。

## 使用 CLI、SDK 或 Boto3
<a name="payments-getting-started-manual"></a>

本节将引导您使用 AgentCore CLI、 AWS CLI 或 AWS SDK (Boto3) 手动完成每个步骤。

### 先决条件
<a name="payments-getting-started-manual-prereqs"></a>

在开始之前，请确保你有：
+  AWS 已配置凭据的@@ **账户** (`aws configure`)
+  已@@ **安装 Python 3.10\+**
+  **可以 AgentCore 付款的 AWS 区域 — us-east-1、us-w** est-2、eu-central-1 或 ap-southeast-2。参见[支持的 AWS 区域](agentcore-regions.md)。

安装所需的软件包：

```
pip install boto3 bedrock-agentcore[strands-agents] strands-agents strands-agents-tools
```

验证您的凭证是否已配置：

```
aws sts get-caller-identity
```

**提示**  
如果您安装了 AgentCore CLI v0.19.0 或更高版本，则可以在步骤 2、3、5 和 6 中使用 CLI 命令作为开发工具包的替代方案。以下每个步骤都显示了这两个选项。

### 第 1 步：获取支付服务提供商凭证
<a name="payments-getting-started-provider-credentials"></a>

AgentCore payments 连接到外部支付提供商进行钱包操作。在继续操作之前，您需要从其中一个支持的提供商那里获得证书。

**Example**  

1. 登录 [Coinbase 开发者平台](https://docs.cdp.coinbase.com/api-reference/v2/authentication)并创建或选择一个项目。

1. 生成 API 密钥并记下 **API 密钥 ID**、**API 密钥密钥**和**钱包密**钥。

1. 在 “**项目**” > “**钱包**” > “**Non-custodial 钱包**” > “**安全**” 下，启用**委托签名**。
您将在下一步中使用这三个值：  


| 凭证 | 说明 | 
| --- | --- | 
|  `API Key ID`  | 您的 CDP 项目的公共标识符 | 
|  `API Key Secret`  | 用于签署 API 请求的私有密钥 | 
|  `Wallet Secret`  | 加密钱包操作的秘密（获取地址、签署交易） | 

1. 在 d [ash](https://dashboard.privy.io/) board.privy.io 上创建**专用** Privy 应用程序。请勿重复使用用于其他目的的应用程序。

1. 从您的**应用程序设置中复制应用程序 ID** **和应用程序密钥**。

1. 导航至 “**钱包基础架构**” > “**授权**”，然后选择 “**新密钥**” 以生成 P-256 密钥对。
您将在下一步中使用这四个值：  


| 凭证 | 说明 | 
| --- | --- | 
|  `App ID`  | 你的 Privy 应用程序标识符 | 
|  `App Secret`  | 服务器到服务器基本身份验证的秘密 | 
|  `Authorization ID`  | key pair 中的公 P-256 钥标识符 | 
|  `Authorization Private Key`  | 来自 key pair 的私 P-256 钥 | 

有关完整详细信息，包括安全最佳实践和证书轮换，请参阅[先决条件](payments-prerequisites.md)。

### 步骤 2：在 “ AgentCore 身份” 中存储凭证
<a name="payments-getting-started-step2"></a>

将您的支付服务提供商凭证存储为 PaymentCredentialProvider. 这会将机密保存在S AWS ecrets Manager中，而不是您的应用程序代码中。

**Example**  

```
import boto3

client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")

credential_provider = client.create_payment_credential_provider(
    name="my-coinbase-credentials",
    credentialProviderVendor="CoinbaseCDP",
    coinbaseCdpConfig={
        "apiKeyId": "<YOUR_CDP_API_KEY_ID>",
        "apiKeySecret": "<YOUR_CDP_API_KEY_SECRET>",
        "walletSecret": "<YOUR_CDP_WALLET_SECRET>"
    }
)
CREDENTIAL_PROVIDER_ARN = credential_provider["credentialProviderArn"]
print(f"Credential provider created: {CREDENTIAL_PROVIDER_ARN}")
```

```
import boto3

client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")

credential_provider = client.create_payment_credential_provider(
    name="my-privy-credentials",
    credentialProviderVendor="StripePrivy",
    stripePrivyConfig={
        "appId": "<YOUR_PRIVY_APP_ID>",
        "appSecret": "<YOUR_PRIVY_APP_SECRET>",
        "authorizationId": "<YOUR_PRIVY_AUTHORIZATION_ID>",
        "authorizationPrivateKey": "<YOUR_PRIVY_PRIVATE_KEY_BASE64>"
    }
)
CREDENTIAL_PROVIDER_ARN = credential_provider["credentialProviderArn"]
print(f"Credential provider created: {CREDENTIAL_PROVIDER_ARN}")
```

有关完整的请求和响应架构，请参阅 API 参考[CreatePaymentCredentialProvider](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentCredentialProvider.html)中的。

#### CLI 替代方案：存储凭证
<a name="payments-getting-started-step2-cli"></a>

 AgentCore 使用 CLI，当您添加支付连接器时，凭据存储会自动生效（步骤 3）。如果您打算使用 CLI 路径，请跳过此步骤。

### 第 3 步：创建付款管理器和连接器
<a name="payments-getting-started-step3"></a>

付款管理器是协调付款操作的顶级资源。付款连接器将管理员链接到您的支付服务提供商凭证。在创建这些资源之前，请按照 IAM [ AgentCore 付款角色中所述设置所需的 IAM 角色](payments-iam-roles.md)。

**Example**  
有关完整的控制台演练（包括 JWT 授权和自定义声明），请参阅[创建付款管理器和连接器](payments-create-manager.md)。  

1. 打开 [Amazon Bedrock AgentCore 控制台](https://console.aws.amazon.com/bedrock-agentcore/)。

1. 在导航窗格的 “**构建**” 下，选择 “**付款**”。

1. 选择 “**创建付款管理器”**。

1. 输入您的付款管理器的**姓名**。

1. 在 “**权限**” 下，选择**创建并使用新的服务角色**（或选择现有角色）。

1. 在**入站身份验证**下，选择**使用 IAM 用户名进行 I** AM 授权。

1. （可选）在**支付连接器部分中，为连接器**选择一个名称，然后选择现有的出站身份验证，或者通过选择您的提供商（Coinbase 或 Stripe Privy）并输入您的凭据来创建新的出站身份验证。

1. 选择 “**创建付款管理器”**。
CLI 在一个流程中创建凭证提供商、付款管理器和支付连接器。在您的 AgentCore 项目目录中，将付款管理器和连接器一起添加。  
 **交互式向导：**  

```
agentcore add payment-manager
```
向导会提示输入经理姓名、模式（拦截器）、自动付款切换开关和默认支出限额。然后，它会询问是否添加连接器，并逐步完成提供商选择和凭据输入。  
 **Non-interactive （Coinbase CDP）：**  

```
agentcore add payment-manager \
  --name my-payment-manager \
  --auto-payment \
  --default-spend-limit 5.00

agentcore add payment-connector \
  --manager my-payment-manager \
  --name my-coinbase-connector \
  --provider CoinbaseCDP \
  --api-key-id <YOUR_CDP_API_KEY_ID> \
  --api-key-secret <YOUR_CDP_API_KEY_SECRET> \
  --wallet-secret <YOUR_CDP_WALLET_SECRET>
```
 **Non-interactive （Privy）：**  

```
agentcore add payment-manager \
  --name my-payment-manager \
  --auto-payment \
  --default-spend-limit 5.00

agentcore add payment-connector \
  --manager my-payment-manager \
  --name my-privy-connector \
  --provider StripePrivy \
  --app-id <YOUR_PRIVY_APP_ID> \
  --app-secret <YOUR_PRIVY_APP_SECRET> \
  --authorization-id <YOUR_PRIVY_AUTHORIZATION_ID> \
  --authorization-private-key <YOUR_PRIVY_PRIVATE_KEY_BASE64>
```
添加后，部署以配置支付基础架构：  

```
agentcore deploy
```
部署步骤创建 IAM 角色，在 Ident AgentCore ity 中存储证书，并配置支付管理器和连接器。您将在输出中看到 “创建支付基础设施...”。
S AgentCore DK 只需一次调用即可创建付款管理器、凭证提供商和连接器。  

```
from bedrock_agentcore.payments import PaymentClient

payment_client = PaymentClient(region_name="us-west-2")

response = payment_client.create_payment_manager_with_connector(
    payment_manager_name="my-first-payment-manager",
    payment_manager_description="Payment manager for my agent.",
    authorizer_type="AWS_IAM",
    role_arn="<YOUR_SERVICE_ROLE_ARN>",
    payment_connector_config={
        "name": "my-coinbase-connector",
        "description": "Coinbase CDP connector",
        "payment_credential_provider_config": {
            "name": "my-coinbase-provider",
            "credential_provider_vendor": "CoinbaseCDP",
            "credentials": {
                "api_key_id": "<YOUR_CDP_API_KEY_ID>",
                "api_key_secret": "<YOUR_CDP_API_KEY_SECRET>",
                "wallet_secret": "<YOUR_CDP_WALLET_SECRET>",
            },
        },
    },
    wait_for_ready=True,
    max_wait=300,
    poll_interval=5,
)

PAYMENT_MANAGER_ARN = response["paymentManager"]["paymentManagerArn"]
PAYMENT_CONNECTOR_ID = response["paymentConnector"]["paymentConnectorId"]
print(f"Payment Manager ARN: {PAYMENT_MANAGER_ARN}")
print(f"Connector ID: {PAYMENT_CONNECTOR_ID}")
```
对于 Stripe Privy，请将替换为`credential_provider_vendor: "StripePrivy"`和相应的 Privy `payment_credential_provider_config` 凭据。
创建付款管理器：  

```
aws bedrock-agentcore-control create-payment-manager \
  --name "my-first-payment-manager" \
  --authorizer-type AWS_IAM \
  --role-arn "<YOUR_SERVICE_ROLE_ARN>" \
  --region us-west-2
```
管理员进入`READY`状态后，创建凭据提供程序和连接器。有关完整[的 AWS CLI 工作流程，请参阅创建付款管理器和连接器](payments-create-manager.md)。
首先，创建付款管理器（两个提供商都相同）：  

```
import time

manager = client.create_payment_manager(
    name="my-first-payment-manager",
    authorizerType="AWS_IAM",
    roleArn="<YOUR_SERVICE_ROLE_ARN>"
)
PAYMENT_MANAGER_ARN = manager["paymentManagerArn"]
print(f"Payment Manager created: {PAYMENT_MANAGER_ARN}")

# Wait for the manager to reach READY state
while True:
    status = client.get_payment_manager(paymentManagerArn=PAYMENT_MANAGER_ARN)
    if status["status"] == "READY":
        break
    print(f"Status: {status['status']}... waiting")
    time.sleep(5)
```
然后为您的提供商创建支付连接器：  
 **Coinbase CDP：**  

```
connector = client.create_payment_connector(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    name="my-coinbase-connector",
    paymentConnectorType="CoinbaseCDP",
    credentialProviderArn=CREDENTIAL_PROVIDER_ARN
)
PAYMENT_CONNECTOR_ID = connector["paymentConnectorId"]
print(f"Connector created: {PAYMENT_CONNECTOR_ID}")
```
 **Privy：**  

```
connector = client.create_payment_connector(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    name="my-privy-connector",
    paymentConnectorType="StripePrivy",
    credentialProviderArn=CREDENTIAL_PROVIDER_ARN
)
PAYMENT_CONNECTOR_ID = connector["paymentConnectorId"]
print(f"Connector created: {PAYMENT_CONNECTOR_ID}")
```
如果您没有服务角色，请参阅[用于 AgentCore 付款的 IAM 角色以](payments-iam-roles.md)获取有关创建该角色的说明。控制台也可以代表您创建角色。有关完整的请求和响应架构，请参阅 API 参考[CreatePaymentConnector](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentConnector.html)中的[CreatePaymentManager](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentManager.html)和。

### 第 4 步：创建付款工具
<a name="payments-getting-started-step4"></a>

支付工具是一种嵌入式加密钱包，您的代理使用它代表用户向商家付款。每种工具都与特定的区块链网络相关联。

**Example**  

```
from bedrock_agentcore.payments import PaymentManager

manager = PaymentManager(
    payment_manager_arn=PAYMENT_MANAGER_ARN,
    region_name="us-west-2"
)

instrument = manager.create_payment_instrument(
    user_id="test-user-123",
    payment_connector_id=PAYMENT_CONNECTOR_ID,
    payment_instrument_type="EMBEDDED_CRYPTO_WALLET",
    payment_instrument_details={
        "embeddedCryptoWallet": {
            "network": "ETHEREUM",
            "linkedAccounts": [{"email": {"emailAddress": "your-email@example.com"}}]
        }
    },
)
INSTRUMENT_ID = instrument["paymentInstrumentId"]
REDIRECT_URL = instrument["paymentInstrumentDetails"]["redirectUrl"]
print(f"Instrument created: {INSTRUMENT_ID}")
print(f"Fund the wallet at: {REDIRECT_URL}")
```

```
aws bedrock-agentcore create-payment-instrument \
    --payment-manager-arn "$PAYMENT_MANAGER_ARN" \
    --payment-connector-id "$PAYMENT_CONNECTOR_ID" \
    --user-id "test-user-123" \
    --payment-instrument-type "EMBEDDED_CRYPTO_WALLET" \
    --payment-instrument-details '{
        "embeddedCryptoWallet": {
            "network": "ETHEREUM",
            "linkedAccounts": [{"email": {"emailAddress": "your-email@example.com"}}]
        }
    }' \
    --client-token "$(uuidgen)" \
    --region us-west-2
```
保存响应`redirectUrl`中的`paymentInstrumentId`和。

```
import uuid

dp_client = boto3.client("bedrock-agentcore", region_name="us-west-2",
    endpoint_url="https://bedrock-agentcore.us-west-2.amazonaws.com")

instrument = dp_client.create_payment_instrument(
    userId="test-user-123",
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    paymentConnectorId=PAYMENT_CONNECTOR_ID,
    paymentInstrumentType="EMBEDDED_CRYPTO_WALLET",
    paymentInstrumentDetails={
        "embeddedCryptoWallet": {
            "network": "ETHEREUM",
            "linkedAccounts": [{"email": {"emailAddress": "your-email@example.com"}}]
        }
    },
    clientToken=str(uuid.uuid4()),
)
INSTRUMENT_ID = instrument["paymentInstrumentId"]
REDIRECT_URL = instrument["paymentInstrumentDetails"]["redirectUrl"]
print(f"Instrument created: {INSTRUMENT_ID}")
print(f"Fund the wallet at: {REDIRECT_URL}")
```

有关完整的请求和响应架构，请参阅 API 参考[CreatePaymentInstrument](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_CreatePaymentInstrument.html)中的。

#### 为钱包注资并授予权限
<a name="payments-getting-started-step4-fund"></a>

在代理进行交易之前，最终用户必须向钱包注资并授予签名权限。在浏览器`redirectUrl`中打开上面响应中的。通过钱包中心，用户可以：
+ 使用加密货币转账、 credit/debit 信用卡、Apple Pay、Google Pay 或 ACH 为钱包充值
+ 授予代理人代表其签署交易的权限

对于测试环境，请使用测试网 USDC 为钱包注资。

资金完成后，对工具状态进行轮询，直到其变成`ACTIVE`：

**Example**  

```
instrument = manager.get_payment_instrument(
    user_id="test-user-123",
    payment_instrument_id=INSTRUMENT_ID
)
print(f"Status: {instrument['status']}")
```

```
aws bedrock-agentcore get-payment-instrument \
    --payment-manager-arn "$PAYMENT_MANAGER_ARN" \
    --payment-instrument-id "$INSTRUMENT_ID" \
    --region us-west-2
```

```
while True:
    inst_status = dp_client.get_payment_instrument(
        paymentManagerArn=PAYMENT_MANAGER_ARN,
        paymentInstrumentId=INSTRUMENT_ID
    )
    if inst_status["status"] == "ACTIVE":
        print("Instrument is active and funded.")
        break
    print(f"Instrument status: {inst_status['status']}... waiting for funding")
    time.sleep(10)
```

有关按提供商划分的资金流的更多详细信息，请参阅[为钱包注资](payments-how-it-works.md#payments-how-it-works-funding-wallet)。

### 第 5 步：创建付款会话
<a name="payments-getting-started-step5"></a>

付款会话是一种有时间限制的环境，具有可选的支出限额。当会话结束或预算用尽时，代理商无法在该会话内进一步付款。

**Example**  
使用 CLI 时，您无需手动创建会话。传递`--auto-session`到`agentcore invoke`，CLI 会使用您在付款管理器上配置的默认支出限额创建或重复使用会话。  

```
agentcore invoke \
  --prompt "your prompt here" \
  --payment-instrument-id <INSTRUMENT_ID> \
  --auto-session \
  --payment-user-id test-user-123
```
要使用您通过 SDK 创建的特定会话，请传递`--payment-session-id`而不是`--auto-session`。

```
from bedrock_agentcore.payments import PaymentManager

manager = PaymentManager(
    payment_manager_arn=PAYMENT_MANAGER_ARN,
    region_name="us-west-2"
)

session = manager.create_payment_session(
    user_id="test-user-123",
    limits={"maxSpendAmount": {"value": "5.00", "currency": "USD"}},
    expiry_time_in_minutes=60
)
SESSION_ID = session["paymentSessionId"]
print(f"Session created: {SESSION_ID} (expires in 60 minutes, $5.00 limit)")
```

```
aws bedrock-agentcore create-payment-session \
    --payment-manager-arn "$PAYMENT_MANAGER_ARN" \
    --user-id "test-user-123" \
    --expiry-time-in-minutes 60 \
    --limits '{"maxSpendAmount": {"value": "5.00", "currency": "USD"}}' \
    --client-token "$(uuidgen)" \
    --region us-west-2
```

```
session = dp_client.create_payment_session(
    userId="test-user-123",
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    expiryTimeInMinutes=60,
    limits={"maxSpendAmount": {"value": "5.00", "currency": "USD"}},
    clientToken=str(uuid.uuid4()),
)
SESSION_ID = session["paymentSessionId"]
print(f"Session created: {SESSION_ID} (expires in 60 minutes, $5.00 limit)")
```
有关完整的请求和响应架构，请参阅 API 参考[CreatePaymentSession](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_CreatePaymentSession.html)中的。

### 第 6 步：向 Strands 代理商处理付款
<a name="payments-getting-started-step6"></a>

在所有资源准备就绪后，创建一个自动处理 x402 付款的 Strands 代理。当代理调用付费端点并收到 HTTP 402 响应时，支付插件会签署交易并重试请求。

**Example**  
使用付款上下文调用已部署的代理。CLI 在运行时将支付工具和会话传递给代理，代理的 x402 拦截器会自动处理付款。  

```
agentcore invoke \
  --prompt "Access the premium endpoint at https://example-x402-merchant.com/paid-api" \
  --payment-instrument-id <INSTRUMENT_ID> \
  --auto-session \
  --payment-user-id test-user-123
```
要传递显式会话而不是自动创建会话，请执行以下操作：  

```
agentcore invoke \
  --prompt "Access the premium endpoint at https://example-x402-merchant.com/paid-api" \
  --payment-instrument-id <INSTRUMENT_ID> \
  --payment-session-id <SESSION_ID> \
  --payment-user-id test-user-123
```
在收到 HTTP 402 响应时，使用该`PaymentManager`类生成付款标头：  

```
import uuid
from bedrock_agentcore.payments import PaymentManager

manager = PaymentManager(
    payment_manager_arn=PAYMENT_MANAGER_ARN,
    region_name="us-west-2"
)

# When you receive a 402 response, generate payment proof
payment_required_request = {
    "statusCode": 402,
    "headers": payment_required["headers"],
    "body": payment_required["body"],
}
payment_proof_headers = manager.generate_payment_header(
    user_id="test-user-123",
    payment_instrument_id=INSTRUMENT_ID,
    payment_session_id=SESSION_ID,
    payment_required_request=payment_required_request,
    client_token=str(uuid.uuid4()),
)
```
 `payment_proof_headers`包含付款证明标题。在向付费端点重试请求时，请包含此标头。
使用 x402 有效负载`process-payment`直接呼叫（当你自己处理付款编排时使用）：  

```
aws bedrock-agentcore process-payment \
    --payment-manager-arn "$PAYMENT_MANAGER_ARN" \
    --payment-session-id "$SESSION_ID" \
    --payment-instrument-id "$INSTRUMENT_ID" \
    --payment-type "CRYPTO_X402" \
    --payment-input '{
        "cryptoX402": {
            "version": "2",
            "payload": {
                "scheme": "exact",
                "network": "eip155:84532",
                "amount": "100000",
                "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
                "payTo": "0xMERCHANT_ADDRESS",
                "maxTimeoutSeconds": 300,
                "extra": {"name": "USDC", "version": "2"}
            }
        }
    }' \
    --client-token "$(uuidgen)" \
    --region us-west-2
```
有关完整的请求和响应架构，请参阅 API 参考[ProcessPayment](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_ProcessPayment.html)中的。

```
from strands import Agent
from strands_tools import http_request
from bedrock_agentcore.payments.integrations.config import AgentCorePaymentsPluginConfig
from bedrock_agentcore.payments.integrations.strands.plugin import AgentCorePaymentsPlugin

config = AgentCorePaymentsPluginConfig(
    payment_manager_arn=PAYMENT_MANAGER_ARN,
    user_id="test-user-123",
    payment_instrument_id=INSTRUMENT_ID,
    payment_session_id=SESSION_ID,
    region="us-west-2",
)

plugin = AgentCorePaymentsPlugin(config=config)
agent = Agent(
    system_prompt="You are a helpful assistant that can access paid APIs.",
    tools=[http_request],
    plugins=[plugin],
)

# The agent handles 402 responses automatically
response = agent("Access the premium endpoint at https://example-x402-merchant.com/paid-api")
print(response)
```
有关底层 API 调用的完整请求和响应架构，请参阅 API 参考[ProcessPayment](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_ProcessPayment.html)中的。

### 验证付款
<a name="payments-getting-started-verify"></a>

代理处理付款后，请查看会话以确认交易已记录：

**Example**  

```
session = manager.get_payment_session(
    user_id="test-user-123",
    payment_session_id=SESSION_ID
)
print(f"Status: {session['status']}, Remaining: {session['remainingAmount']}")
```
您还可以检查仪器平衡：  

```
balance = manager.get_payment_instrument_balance(
    user_id="test-user-123",
    payment_instrument_id=INSTRUMENT_ID
)
print(f"Remaining balance: {balance['amount']} {balance['currency']}")
```

```
aws bedrock-agentcore get-payment-session \
    --payment-manager-arn "$PAYMENT_MANAGER_ARN" \
    --payment-session-id "$SESSION_ID" \
    --region us-west-2

aws bedrock-agentcore get-payment-instrument-balance \
    --payment-manager-arn "$PAYMENT_MANAGER_ARN" \
    --payment-instrument-id "$INSTRUMENT_ID" \
    --region us-west-2
```

```
session_status = dp_client.get_payment_session(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    paymentSessionId=SESSION_ID
)
print(f"Session status: {session_status['status']}")
print(f"Amount spent: {session_status.get('spentAmount', '0.00')} USD")
```
您还可以检查仪器平衡：  

```
balance = dp_client.get_payment_instrument_balance(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    paymentInstrumentId=INSTRUMENT_ID
)
print(f"Remaining balance: {balance['amount']} {balance['currency']}")
```

## 问题排查
<a name="payments-getting-started-troubleshooting"></a>

以下问题适用于基于技能的设置路径和手动设置路径。


| 问题 | 解决方案 | 
| --- | --- | 
| 付款管理器在创建时陷入困境 | 最多等待 2 分钟。如果它移至 CREATE\_FAILED，请检查您的服务角色 ARN 和权限是否正确。 | 
| “PaymentInstrument 未激活” | 最终用户必须通过重定向网址向钱包注资并授予签名权限，然后代理才能进行交易。 | 
| “会话已过期或超出预算” | 创建到期时间更长或支出限额更高的新付款会话。 | 
| “CredentialProvider 未找到” | 验证凭证提供者 ARN 是否与您在步骤 2 中创建的 ARN 相匹配。确保所有呼叫的区域一致。 | 
| ProcessPayment 退货失败 | 检查钱包中是否有足够的USDC余额来支付交易金额和汽油费。 | 

## 资源清理
<a name="payments-getting-started-cleanup"></a>

删除您在本教程中创建的资源：

**Example**  

```
agentcore remove payment-connector --manager my-payment-manager --name my-coinbase-connector --yes
agentcore remove payment-manager --name my-payment-manager --yes
agentcore deploy
```
这些`remove`命令更新本地配置。后续行动`deploy`会破坏您账户中的支付基础设施。

```
from bedrock_agentcore.payments import PaymentClient

payment_client = PaymentClient(region_name="us-west-2")

payment_client.delete_payment_manager(
    payment_manager_id="<paymentManagerId>"
)

print("Payment Manager deleted.")
```

```
aws bedrock-agentcore delete-payment-instrument \
    --payment-manager-arn "$PAYMENT_MANAGER_ARN" \
    --payment-instrument-id "$INSTRUMENT_ID" \
    --region us-west-2

aws bedrock-agentcore-control delete-payment-connector \
    --payment-manager-id "$PAYMENT_MANAGER_ID" \
    --payment-connector-id "$PAYMENT_CONNECTOR_ID" \
    --region us-west-2

aws bedrock-agentcore-control delete-payment-manager \
    --payment-manager-id "$PAYMENT_MANAGER_ID" \
    --region us-west-2
```

```
# Delete payment instrument
dp_client.delete_payment_instrument(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    paymentInstrumentId=INSTRUMENT_ID
)

# Delete payment connector
client.delete_payment_connector(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    paymentConnectorId=PAYMENT_CONNECTOR_ID
)

# Delete payment manager
client.delete_payment_manager(
    paymentManagerArn=PAYMENT_MANAGER_ARN
)

print("All payment resources deleted.")
```

## 你建造了什么
<a name="payments-getting-started-what-youve-built"></a>

通过本教程，您创建了：
+  **PaymentCredentialProvider**— 存储在 Ident AgentCore ity 中的支付提供商凭证
+  **PaymentManager**— 协调支付业务的 Top-level 资源
+  **PaymentConnector**— 您的经理和外部支付提供商之间的集成
+  **PaymentInstrument**— 嵌入式加密钱包，由最终用户资助和授权
+  **PaymentSession**— 有时间限制、预算有限的支付环境
+  **Strands Agent** — 自动处理 x402 付款的人工智能代理

## 后续步骤
<a name="payments-getting-started-next-steps"></a>
+  [连接 Coinbase x402 Bazaar](payments-connect-bazaar.md)，发现 10,000 多种付费 MCP 工具。
+  [与浏览器工具集成](payments-browser.md)以访问付费网站。
+  [启用可观察性](payments-observability.md)以监控中的支付操作。 CloudWatch
+  [查看 IAM 角色](payments-iam-roles.md)以配置生产的最低权限访问权限。