View a markdown version of this page

AgentCore 付款快速入門 - Amazon Bedrock AgentCore

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AgentCore 付款快速入門

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

您可以透過兩種方式設定付款:

  • 使用 AgentCore Payments 技能 — 透過與 Kiro、Claude Code 或 Codex 等 AI 編碼代理器的引導式對話來佈建所有資源的自動化設定體驗。此技能會為您處理 CLI 命令、軟體開發套件指令碼和架構佈線。

  • 使用 CLI、 SDK 或 Boto3 — 直接使用 AgentCore CLI、 AWS SDK 或 AWS CLI 的step-by-step手動設定。

您可以在建立 Coinbase 連接器時,以兩種方式提供登入資料。使用快速建立 (建議),您可以透過 Coinbase 和 AgentCore 付款佈建進行授權,並為您存放登入資料,無需產生或貼上任何金鑰。使用手動,您可以提供您自己產生的 Coinbase API 金鑰。Stripe (Privy) 僅使用手動流程。透過快速建立,您可以略過手動設定的步驟 1 和 2。

使用 AgentCore Payments 技能

AgentCore Payments 技能會透過互動式的引導式體驗來自動化整個設定程序。它會佈建下列資源:

  • PaymentCredentialProvider — 將付款供應商憑證存放在 AgentCore Identity 中。

  • Payment Manager — 協調付款操作的最上層資源。

  • Payment Connector — 透過 AgentCore CLI 將管理員連結至您的憑證。

  • 付款工具 — 您的代理程式用來代表使用者支付商家費用的加密錢包。

  • 付款工作階段 — 具有花費限制的時間限制內容。

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

先決條件

開始之前,請確定您有:

  • AWS 已設定登入資料的帳戶 (aws configure)

  • 可使用 AgentCore 付款 AWS 的區域 — 請參閱支援 AWS 的區域。

  • Coinbase AWS Marketplace 訂閱 (僅限 Coinbase) — 如果您使用 Coinbase 作為付款供應商,則必須訂閱 AWS Marketplace 中適用於 AgentCore 付款的 Coinbase Wallets 清單。透過此訂閱,您的 Coinbase 錢包使用費會根據 Coinbase 網站上的 Coinbase 定價合併到您的每月 AWS 帳單中。請參閱訂閱 Coinbase Wallets for AgentCore Payments in AWS Marketplace。

  • 已安裝 Node.js 20+ (技能會自動安裝 AgentCore CLI)

  • 存取付費端點的代理程式 — 技能可讓您的代理程式支付受 x402 保護APIs。針對測試,您可以使用沙盒端點 https://sandbox.node4all.com/v1/x402-test。

  • 安裝在 AI 編碼代理程式中的 Agent Toolkit for AWS aws-agents外掛程式:

    範例
    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

叫用技能

付款技能是agents-build客服人員工具組中 AWS技能的一部分。若要觸發它,請在 AI 編碼代理程式中描述您的意圖。例如:

  • 「使用aws-agents外掛程式中的agents-build技能將付款新增至我的客服人員」

  • 「使用aws-agents外掛程式中的agents-build技能為我的客服人員設定微交易」

  • 「我需要使用aws-agents外掛程式中的agents-build技能來處理 402 Payment Required 回應」

  • 「使用aws-agents外掛程式中的agents-build技能,將我的代理程式連接到支付受 x402 保護APIs」

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

技能的功能

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

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

  2. 建立付款管理員

  3. 暫停 — 您可以新增付款連接器。對於具有快速建立的 Coinbase (建議),您可以透過 Coinbase 和 AgentCore 付款來授權 為您佈建登入資料,無需輸入秘密。對於 Coinbase 手冊或 Stripe (Privy),您可以執行 agentcore add payment-connector 以輸入您的提供者秘密。

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

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

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

  7. 暫停 — 您授權錢包 (委派),並從 Circle faucet 網站使用睪丸 USDC 為其提供資金

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

如果您使用手動流程 (Coinbase 手動或 Stripe Privy),請在新增連接器之前向供應商取得憑證。使用 Coinbase Quick create 時,您略過此動作:您透過 Coinbase 授權,而不是貼上金鑰。

成功執行會顯示呼叫 的代理程式x402_fetch、偵測 402、透過 AgentCore SDK 穩定付款,以及200使用付費內容傳回的重試。

使用 CLI、 SDK 或 Boto3

本節將引導您使用 AgentCore CLI、 AWS CLI 或 AWS SDK (Boto3) 手動完成每個步驟。

先決條件

開始之前,請確定您有:

安裝必要的套件:

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:取得付款供應商登入資料 (手動流程)

步驟 1 和 2 適用於手動登入資料流程 — Coinbase (手動) 或 Stripe (私有)。

注意

使用快速建立 Coinbase (建議)。略過步驟 1 和 2,並參閱步驟 3。AgentCore 付款會在您透過 Coinbase 授權後為您佈建 Coinbase 登入資料 — 您不會取得或存放任何金鑰。

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

範例
Coinbase CDP
  1. 登入 Coinbase 開發人員平台並建立或登入您的帳戶。選取專案。

  2. 導覽至 API Keys 儀表板,選擇建立秘密 API Key,然後記下 API Key ID 和 API Key Secret。返回您的專案。

  3. 在產品 > 錢包 > 非自訂錢包 > 安全性下,選擇產生錢包密碼下的產生新密碼,並記下錢包密碼。

  4. 在產品 > 錢包 > 非自訂錢包 > 安全性下,啟用委派簽署。

您將在下一個步驟中使用這些值:

Credential 說明

API Key ID

CDP 專案的公有識別符

API Key Secret

用於簽署 API 請求的私有秘密

Wallet Secret

密碼編譯錢包操作的秘密 (衍生地址、簽署交易)

Privy
  1. 在 dashboard.privy.io:// 建立專用 Privy 應用程式。請勿重複使用用於其他用途的應用程式。

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

  3. 導覽至錢包基礎設施 > 授權,然後選擇新金鑰以產生 P-256 金鑰對。

您將在下一個步驟中使用這四個值:

Credential 說明

App ID

您的 Privy 應用程式識別符

App Secret

server-to-server基本驗證的秘密

Authorization ID

來自 P-256 金鑰對的公有金鑰識別符

Authorization Private Key

來自 P-256 金鑰對的私有金鑰

如需包括安全最佳實務和登入資料輪換的完整詳細資訊,請參閱先決條件。

步驟 2:將登入資料儲存在 AgentCore Identity 中 (手動流程)

將您的付款供應商憑證儲存為 PaymentCredentialProvider。這會將秘密保存在 AWS Secrets Manager 中,而不是在您的應用程式程式碼中。如果您使用的是 Coinbase Quick Create,請略過此步驟。AgentCore 付款會在步驟 3 中為您建立和存放登入資料提供者。

範例
Coinbase CDP
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}")
Privy
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。

CLI 替代方案:存放登入資料

使用 AgentCore CLI,當您新增付款連接器時,登入資料儲存會自動發生 (步驟 3)。如果您打算使用 CLI 路徑,請略過此步驟。

步驟 3:建立付款管理員和連接器

Payment Manager 是協調付款操作的最上層資源。Payment Connector 會將管理員連結至您的付款供應商憑證。建立這些資源之前,請先設定所需的 IAM 角色,如 AgentCore 付款的 IAM 角色中所述。

首先,建立 Payment Manager (適用於所有供應商):

範例
Console
  1. 開啟 Amazon Bedrock AgentCore 主控台。

  2. 在導覽窗格的建置下,選擇付款。

  3. 選擇建立付款管理員,輸入名稱,然後在許可下選擇建立並使用新的服務角色 (或選取現有角色)。

  4. 在傳入驗證下,選擇使用 IAM 使用者名稱。

  5. 選擇建立付款管理員。您可以在下面的供應商區段中新增連接器。

如需包含 JWT 授權和自訂宣告的完整主控台演練,請參閱建立付款管理員和連接器。

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

在下面的供應商區段中新增連接器,然後執行 agentcore deploy。

AgentCore SDK
from bedrock_agentcore.payments.client import PaymentClient payment_client = PaymentClient(region_name="us-west-2") manager = payment_client.create_payment_manager( name="my-first-payment-manager", authorizer_type="AWS_IAM", role_arn="<YOUR_SERVICE_ROLE_ARN>", ) PAYMENT_MANAGER_ID = manager["paymentManagerId"]

使用 PAYMENT_MANAGER_ID payment_client搭配 在下面的提供者區段中建立連接器。

AWS CLI
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 SDK
import time manager = client.create_payment_manager( name="my-first-payment-manager", authorizerType="AWS_IAM", roleArn="<YOUR_SERVICE_ROLE_ARN>" ) PAYMENT_MANAGER_ID = manager["paymentManagerId"] while client.get_payment_manager(paymentManagerId=PAYMENT_MANAGER_ID)["status"] != "READY": time.sleep(5)

然後為您的供應商建立 Payment Connector。選擇 Coinbase 區段 (快速建立或手動) 或 Stripe (私有) 區段。

Coinbase — 快速建立 (建議)

透過快速建立,您不會取得或存放 Coinbase 登入資料。在 主控台中,您可以選擇 Quick Create with Coinbase 來完成此操作。使用 AWS CLI、 AWS SDK、AgentCore CLI 或 AgentCore SDK,provisionMode=QUICK_CREATE傳遞空白的登入資料清單。連接器會在 中啟動,PENDING_AUTHENTICATION並傳回 authorizationUrl。您可以在瀏覽器authorizationUrl中開啟傳回的 。透過 Coinbase 授權之後,AgentCore 付款會佈建登入資料,並將連接器移至 READY。

範例
Console
  1. 在付款連接器區段中,選擇新增傳出身分驗證 > 建立付款身分驗證,然後針對付款提供者選擇 Coinbase。

  2. 選擇快速建立組態 - 建議,然後選擇建立付款驗證。

  3. Coinbase 視窗隨即開啟:登入或註冊並授權 (連結) Coinbase CDP 帳戶。

  4. AgentCore 付款會佈建 Coinbase CDP API 金鑰和錢包秘密,並為您存放它們。連接器會從 移至 PENDING_AUTHENTICATION READY。

AgentCore CLI
agentcore add payment-connector \ --manager my-payment-manager \ --name my-coinbase-connector \ --provider CoinbaseCDP \ --provision-mode QUICK_CREATE agentcore deploy

CLI 會開啟 Coinbase 授權流程。在您授權之後,服務會佈建登入資料,而連接器會達到 READY。

AgentCore SDK
connector = payment_client.create_payment_connector( payment_manager_id=PAYMENT_MANAGER_ID, name="my-coinbase-connector", connector_type="CoinbaseCDP", credential_provider_configurations=[], provision_mode="QUICK_CREATE", ) # Open connector["authorizationUrl"], authorize through Coinbase, # then poll get_payment_connector until status == "READY".
AWS CLI
aws bedrock-agentcore-control create-payment-connector \ --payment-manager-id "<PAYMENT_MANAGER_ID>" \ --name "my-coinbase-connector" \ --type CoinbaseCDP \ --credential-provider-configurations '[]' \ --provision-mode QUICK_CREATE \ --region us-west-2

回應包含 status: PENDING_AUTHENTICATION和 authorizationUrl。在瀏覽器中開啟 URL 並完成 Coinbase 授權,然後輪詢直到連接器為 READY:

aws bedrock-agentcore-control get-payment-connector \ --payment-manager-id "<PAYMENT_MANAGER_ID>" \ --payment-connector-id "<PAYMENT_CONNECTOR_ID>" \ --region us-west-2
AWS SDK
connector = client.create_payment_connector( paymentManagerId=PAYMENT_MANAGER_ID, name="my-coinbase-connector", type="CoinbaseCDP", credentialProviderConfigurations=[], provisionMode="QUICK_CREATE", ) PAYMENT_CONNECTOR_ID = connector["paymentConnectorId"] print(connector["status"], connector.get("authorizationUrl")) # PENDING_AUTHENTICATION https://... # Open the authorizationUrl, authorize, then poll get_payment_connector until READY.

Coinbase — 手動

使用您自行產生的 Coinbase CDP 登入資料 (步驟 1–2)。建立登入資料提供者,然後建立參考其 ARN 的連接器。如需主控台或 AgentCore CLI 手動演練,請參閱建立付款管理員和連接器。

範例
AgentCore CLI
agentcore add payment-connector \ --manager <manager-name> \ --name my-coinbase-connector \ --provider CoinbaseCDP \ --api-key-id <YOUR_API_KEY_ID> \ --api-key-secret <YOUR_API_KEY_SECRET> \ --wallet-secret <YOUR_WALLET_SECRET> agentcore deploy

CLI 會將登入資料存放在 AgentCore Identity 中,並在您執行 時建立連接器agentcore deploy。

AgentCore SDK
connector = payment_client.create_payment_connector( payment_manager_id=PAYMENT_MANAGER_ID, name="my-coinbase-connector", connector_type="CoinbaseCDP", credential_provider_configurations=[ {"coinbaseCDP": {"credentialProviderArn": CREDENTIAL_PROVIDER_ARN}} ], )
AWS CLI
aws bedrock-agentcore-control create-payment-connector \ --payment-manager-id "<PAYMENT_MANAGER_ID>" \ --name "my-coinbase-connector" \ --type CoinbaseCDP \ --credential-provider-configurations '[{"coinbaseCDP":{"credentialProviderArn":"<CREDENTIAL_PROVIDER_ARN>"}}]' \ --region us-west-2
AWS SDK
connector = client.create_payment_connector( paymentManagerId=PAYMENT_MANAGER_ID, name="my-coinbase-connector", type="CoinbaseCDP", credentialProviderConfigurations=[{"coinbaseCDP": {"credentialProviderArn": CREDENTIAL_PROVIDER_ARN}}], )

條紋 (私有) — 手動

Stripe (Privy) 僅使用手動流程。從 Privy 登入資料建立登入資料提供者 (步驟 1–2),然後建立參考其 ARN 的連接器。如需主控台或 AgentCore CLI 手動演練,請參閱建立付款管理員和連接器。

範例
AgentCore CLI
agentcore add payment-connector \ --manager <manager-name> \ --name my-privy-connector \ --provider StripePrivy \ --app-id <YOUR_APP_ID> \ --app-secret <YOUR_APP_SECRET> \ --authorization-id <YOUR_AUTHORIZATION_ID> \ --authorization-private-key <YOUR_PRIVATE_KEY_BASE64> agentcore deploy

CLI 會將登入資料存放在 AgentCore Identity 中,並在您執行 時建立連接器agentcore deploy。

AgentCore SDK
connector = payment_client.create_payment_connector( payment_manager_id=PAYMENT_MANAGER_ID, name="my-privy-connector", connector_type="StripePrivy", credential_provider_configurations=[ {"stripePrivy": {"credentialProviderArn": CREDENTIAL_PROVIDER_ARN}} ], )
AWS CLI
aws bedrock-agentcore-control create-payment-connector \ --payment-manager-id "<PAYMENT_MANAGER_ID>" \ --name "my-privy-connector" \ --type StripePrivy \ --credential-provider-configurations '[{"stripePrivy":{"credentialProviderArn":"<CREDENTIAL_PROVIDER_ARN>"}}]' \ --region us-west-2
AWS SDK
connector = client.create_payment_connector( paymentManagerId=PAYMENT_MANAGER_ID, name="my-privy-connector", type="StripePrivy", credentialProviderConfigurations=[{"stripePrivy": {"credentialProviderArn": CREDENTIAL_PROVIDER_ARN}}], )

如果您沒有服務角色,請參閱 AgentCore 付款的 IAM 角色,以取得建立服務角色的說明。主控台也可以代表您建立角色。如需完整的請求和回應結構描述,請參閱《Amazon Bedrock AgentCore 控制 API 參考》中的 CreatePaymentManager 和 CreatePaymentConnector。

步驟 4:建立付款工具

付款工具是您的代理程式用來代表使用者支付商家費用的內嵌加密錢包。每個工具都與特定的區塊鏈網路相關聯。

範例
AgentCore SDK
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 CLI
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 。

AWS SDK
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。

為錢包提供資金並授予許可

在代理程式可以交易之前,最終使用者必須為錢包提供資金並授予簽署許可。redirectUrl 在瀏覽器中從上述回應開啟 。從錢包中樞,使用者可以:

  • 使用加密傳輸、信用卡/簽帳金融卡、Apple Pay、Google Pay 或 ACH 來補充錢包

  • 授予代理程式代其簽署交易的許可

對於測試環境,請使用睪丸 USDC 為錢包提供資金。

出資後,輪詢檢測狀態,直到變成 ACTIVE:

範例
AgentCore SDK
instrument = manager.get_payment_instrument( user_id="test-user-123", payment_instrument_id=INSTRUMENT_ID ) print(f"Status: {instrument['status']}")
AWS CLI
aws bedrock-agentcore get-payment-instrument \ --payment-manager-arn "$PAYMENT_MANAGER_ARN" \ --payment-instrument-id "$INSTRUMENT_ID" \ --region us-west-2
AWS SDK
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)

如需依供應商提供資金流程的詳細資訊,請參閱為錢包提供資金。

步驟 5:建立付款工作階段

付款工作階段是具有選擇性花費限制的時間限制內容。當工作階段過期或預算用盡時,代理程式無法在該工作階段內進一步付款。

範例
AgentCore CLI

使用 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。

AgentCore SDK
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 CLI
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
AWS SDK
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。

步驟 6:使用 Strands 代理程式處理付款

備妥所有資源後,建立可自動處理 x402 付款的 Strands 代理程式。當客服人員呼叫付費端點並收到 HTTP 402 回應時,付款外掛程式會簽署交易並重試請求。

範例
AgentCore CLI

使用付款內容調用您部署的代理程式。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
AgentCore SDK

當您收到 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 包含付款證明標頭。將請求重試至付費端點時,請包含此標頭。

AWS CLI

使用 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。

AWS SDK
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。

驗證付款

客服人員處理付款後,請檢查工作階段以確認交易已記錄:

範例
AgentCore SDK
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 CLI
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
AWS SDK
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']}")

疑難排解

下列問題適用於技能型和手動設定路徑。

問題 解決方案

付款管理員卡在建立中

等待最多 2 分鐘。如果移至 CREATE_FAILED,請檢查您的服務角色 ARN 和許可是否正確。

「PaymentInstrument not active」

最終使用者必須先為錢包提供資金,並透過重新導向 URL 授予簽署許可,代理才能交易。

「工作階段已過期或超出預算」

建立具有較長過期時間或更高花費限制的新付款工作階段。

「找不到 CredentialProvider」

驗證登入資料提供者 ARN 符合您在步驟 2 中建立的內容。確保所有呼叫的區域一致。

ProcessPayment 傳回失敗

檢查錢包是否有足夠的 USDC 餘額來支付交易金額和瓦斯費用。

清除

刪除您在本教學課程中建立的資源:

範例
AgentCore CLI
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會縮減您帳戶中的付款基礎設施。

AgentCore SDK
from bedrock_agentcore.payments.client import PaymentClient payment_client = PaymentClient(region_name="us-west-2") payment_client.delete_payment_manager( payment_manager_id="<paymentManagerId>" ) print("Payment Manager deleted.")
AWS CLI
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
AWS SDK
# 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.")

您已建置的內容

透過本教學課程,您建立了:

  • PaymentCredentialProvider — 存放在 AgentCore Identity 中的付款供應商憑證

  • PaymentManager — 協調付款操作的頂層資源

  • PaymentConnector — 管理員與外部付款供應商之間的整合

  • PaymentInstrument — 內嵌密碼錢包,由最終使用者提供資金和授權

  • PaymentSession — 有時間限制、預算限制的付款內容

  • Strands 代理程式:自動處理 x402 付款的 AI 代理程式

後續步驟