

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

本教學課程會逐步引導您設定 AgentCore 付款並處理您的第一個微型交易。最後，您的代理程式將使用測試網路上的 x402 通訊協定來支付資源的費用。

您可以透過兩種方式設定付款：
+  [使用 AgentCore Payments 技能](#payments-getting-started-skill) — 透過與 Kiro、Claude Code 或 Codex 等 AI 編碼代理器的引導式對話來佈建所有資源的自動化設定體驗。此技能會為您處理 CLI 命令、軟體開發套件指令碼和架構佈線。
+  [使用 CLI、 SDK 或 Boto3](#payments-getting-started-manual) — 直接使用 AgentCore CLI、 AWS SDK 或 AWS CLI 的step-by-step手動設定。

## 使用 AgentCore Payments 技能
<a name="payments-getting-started-skill"></a>

AgentCore Payments 技能會透過互動式的引導式體驗來自動化整個設定程序。它會佈建下列資源：
+  **PaymentCredentialProvider** — 將付款供應商憑證存放在 AgentCore Identity 中。
+  **Payment Manager** — 協調付款操作的最上層資源。
+  **Payment Connector** — 透過 AgentCore CLI 將管理員連結至您的憑證。
+  **付款工具** — 您的代理程式用來代表使用者支付商家費用的加密錢包。
+  **付款工作階段** — 具有花費限制的時間限制內容。

此技能也會使用與架構無關的工具將付款匯入您的代理程式，因此可與 Strands、LangGraph、OpenAI 代理程式 SDK 或任何 Python 架構搭配使用。

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

開始之前，請確定您有：
+  ** AWS 已設定登入資料的帳戶** (`aws configure`)
+  **可使用 AgentCore 付款 AWS 的區域**：us-east-1、us-west-2、eu-central-1 或 ap-southeast-2。請參閱[支援的 AWS 區域](agentcore-regions.md)。
+  已安裝 **Node.js 20\+** （技能會自動安裝 AgentCore CLI)
+  **存取付費端點的代理程式** — 技能可讓您的代理程式支付受 x402 保護APIs。針對測試，您可以使用沙盒端點 `https://sandbox.node4all.com/v1/x402-test`。
+  安裝在 AI **編碼代理程式中的 Agent [Toolkit for AWS](https://github.com/aws/agent-toolkit-for-aws) `aws-agents`外掛程式**：  
**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>

付款技能是`agents-build`[客服人員工具組中 AWS](https://github.com/aws/agent-toolkit-for-aws)技能的一部分。若要觸發它，請在 AI 編碼代理程式中描述您的意圖。例如：
+ 「使用`aws-agents`外掛程式中的`agents-build`技能將付款新增至我的客服人員」
+ 「使用`aws-agents`外掛程式中的`agents-build`技能為我的客服人員設定微交易」
+ 「我需要使用`aws-agents`外掛程式中的`agents-build`技能來處理 402 Payment Required 回應」
+ 「使用`aws-agents`外掛程式中的`agents-build`技能，將我的代理程式連接到支付受 x402 保護APIs」

技能會偵測付款相關意圖，並自動載入付款工作流程。

### 技能的功能
<a name="payments-getting-started-skill-flow"></a>

此技能會執行自動化程序，end-to-end方式佈建您的付款基礎設施。技能會自動執行大多數步驟，並針對您的輸入暫停兩次：

1. 驗證或安裝 AgentCore CLI 並設定專案

1. 建立付款管理員

1.  **暫停** — 您執行 `agentcore add payment-connector`以輸入您的提供者秘密 (Coinbase CDP 或 Stripe Privy 登入資料）

1. 將資源部署到 AWS 您的帳戶 (`agentcore deploy -y`)

1. 將與架構無關的付款工具 (`x402_payment_tool.py`) 連接到您的代理程式

1. 透過 SDK 建立每個使用者的錢包 （檢測） 和預算限制的工作階段

1.  **暫停** — 您授權錢包 （委派），並從 [Circle faucet](https://faucet.circle.com/) 網站使用睪丸 USDC 為其提供資金

1. 設定環境變數，並針對付費端點執行測試付款

在執行連接器命令之前，從您的提供者取得登入資料：
+  **Coinbase CDP** — 來自 [Coinbase 開發人員平台](https://portal.cdp.coinbase.com/)網站的 API 金鑰 ID、API 金鑰秘密和錢包秘密 （啟用委派簽署）。
+  **Stripe Privy**：[Privy 儀表板](https://dashboard.privy.io/)網站上的應用程式 ID、應用程式秘密、授權 ID 和授權私有金鑰。

成功執行會顯示呼叫 的代理程式`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-west-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 或更新版本，您可以使用 CLI 命令來替代步驟 2、3、5 和 6 中的 SDK。以下每個步驟都顯示這兩個選項。

### 步驟 1：取得付款供應商憑證
<a name="payments-getting-started-provider-credentials"></a>

AgentCore 付款會連線至外部付款供應商以進行錢包操作。您需要其中一個支援提供者的登入資料，才能繼續。

**Example**  

1. 登入 [Coinbase 開發人員平台](https://docs.cdp.coinbase.com/api-reference/v2/authentication)並建立或選取專案。

1. 產生 API 金鑰並記下 **API 金鑰 ID**、**API 金鑰秘密**和**錢包秘密**。

1. 在**專案** > **錢包** > **非自訂錢包** > **安全性**下，啟用**委派簽署**。
您將在下一個步驟中使用這三個值：  


| Credential | 說明 | 
| --- | --- | 
|  `API Key ID`  | CDP 專案的公有識別符 | 
|  `API Key Secret`  | 用於簽署 API 請求的私有秘密 | 
|  `Wallet Secret`  | 密碼編譯錢包操作的秘密 （衍生地址、簽署交易） | 

1. 在 [dashboard.privy.io](https://dashboard.privy.io/)：// 建立**專用** Privy 應用程式。請勿重複使用用於其他用途的應用程式。

1. 從您的應用程式設定複製**應用程式 ID** 和**應用程式秘密**。

1. 導覽至**錢包基礎設施** > **授權**，然後選擇**新金鑰**以產生 P-256 金鑰對。
您將在下一個步驟中使用這四個值：  


| Credential | 說明 | 
| --- | --- | 
|  `App ID`  | 您的 Privy 應用程式識別符 | 
|  `App Secret`  | server-to-server基本驗證的秘密 | 
|  `Authorization ID`  | 來自 P-256 金鑰對的公有金鑰識別符 | 
|  `Authorization Private Key`  | 來自 P-256 金鑰對的私有金鑰 | 

如需包括安全最佳實務和登入資料輪換的完整詳細資訊，請參閱[先決條件](payments-prerequisites.md)。

### 步驟 2：將登入資料儲存在 AgentCore Identity 中
<a name="payments-getting-started-step2"></a>

將您的付款供應商憑證儲存為 PaymentCredentialProvider。這會將秘密保存在 AWS Secrets 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>

Payment Manager 是協調付款操作的最上層資源。Payment Connector 會將管理員連結至您的付款供應商憑證。建立這些資源之前，請先設定所需的 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. 輸入 Payment Manager **的名稱**。

1. 在**許可**下，選擇**建立並使用新的服務角色 **（或選取現有的角色）。

1. 在**傳入驗證**下，選擇**使用 IAM 使用者名稱**進行 IAM 授權。

1. （選用） 在**付款連接器**區段中，選擇連接器的名稱，然後選取現有的傳出身分驗證，或選取提供者 (Coinbase 或 Stripe Privy) 並輸入您的登入資料來建立新的身分驗證。

1. 選擇**建立付款管理員**。
CLI 會在單一流程中建立登入資料提供者、Payment Manager 和 Payment Connector。從您的 AgentCore 專案目錄中，將付款管理員和連接器一起新增。  
 **互動式精靈：**  

```
agentcore add payment-manager
```
精靈會提示管理員名稱、模式 （攔截器）、自動付款切換和預設花費限制。然後，它會詢問是否新增連接器，並逐步解說供應商選擇和登入資料輸入。  
 **非互動式 (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>
```
 **非互動式 (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 角色、將登入資料存放在 AgentCore Identity 中，以及佈建 Payment Manager 和 Connector。您會在輸出中看到「建立付款基礎設施...」。
AgentCore SDK 會在單一呼叫中建立 Payment Manager、登入資料提供者和連接器。  

```
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，將 取代`payment_credential_provider_config`為 `credential_provider_vendor: "StripePrivy"`和對應的 Privy 憑證。
建立付款管理員：  

```
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`狀態後，建立登入資料提供者和連接器。如需完整的 CLI AWS 工作流程，請參閱[建立付款管理員和連接器](payments-create-manager.md)。
首先，建立 Payment Manager （兩個提供者相同）：  

```
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)
```
然後為您的供應商建立 Payment Connector：  
 **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 參考中的 [CreatePaymentManager](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentManager.html) 和 [CreatePaymentConnector](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentConnector.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
```
從回應儲存 `paymentInstrumentId`和 `redirectUrl` 。

```
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` 在瀏覽器中從上述回應開啟 。從錢包中樞，使用者可以：
+ 使用加密傳輸、信用卡/簽帳金融卡、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 not active」 | 最終使用者必須先為錢包提供資金，並透過重新導向 URL 授予簽署許可，代理才能交易。 | 
| 「工作階段已過期或超出預算」 | 建立具有較長過期時間或更高花費限制的新付款工作階段。 | 
| 「找不到 CredentialProvider」 | 驗證登入資料提供者 ARN 符合您在步驟 2 中建立的內容。確保所有呼叫的區域一致。 | 
| 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** — 存放在 AgentCore Identity 中的付款供應商憑證
+  **PaymentManager** — 協調付款操作的頂層資源
+  **PaymentConnector** — 管理員與外部付款供應商之間的整合
+  **PaymentInstrument** — 內嵌密碼錢包，由最終使用者提供資金和授權
+  **PaymentSession** — 有時間限制、預算限制的付款內容
+  **Strands 代理**程式：自動處理 x402 付款的 AI 代理程式

## 後續步驟
<a name="payments-getting-started-next-steps"></a>
+  [連線至 Coinbase x402 Bazaar](payments-connect-bazaar.md) 以探索超過 10，000 個付費 MCP 工具。
+  [與瀏覽器工具整合](payments-browser.md)，以存取 paywalled 網站。
+  [啟用可觀測性](payments-observability.md)以監控 CloudWatch 中的付款操作。
+  [檢閱 IAM 角色](payments-iam-roles.md)以設定生產的最低權限存取。