

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 创建付款工具
<a name="payments-create-instrument"></a>

支付工具代表嵌入式加密钱包，代理使用它代表用户向商家付款。每种工具都与特定的区块链网络相关联。`ETHEREUM`网络价值涵盖以太坊主网和所有支持的 EVM-compatible 第 2 层网络（Base、Arbitrum 等）。有关完整的请求和响应架构，请参阅 API 参考[CreatePaymentInstrument](https://docs.amazonaws.cn/bedrock-agentcore/latest/APIReference/API_CreatePaymentInstrument.html)中的。

**提示**  
您可以使用 Amazon 代理工具包中的 AgentCore 付款技能自动执行此页面上的步骤。该技能是 ** aws-agents ** 插件的一部分，它允许 AI 编码代理使用 `agentcore` CLI 创建您的支付管理器、连接器、凭证提供商、支付工具和会话，并为您的代理添加流程付款工具。有关详细信息，请参阅上的[ GitHub](payments-getting-started.md)[快速入门和](https://github.com/aws/agent-toolkit-for-aws/tree/main)Amazon 代理工具包。

**Example**  

```
from bedrock_agentcore.payments import PaymentManager

manager = PaymentManager(
    payment_manager_arn=mgr["paymentManagerArn"],
    region_name="us-west-2"
)

# Create payment instrument (Ethereum)
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": "myemail@example.com"
                }
            }]
   }},
)
```
对于与 Solana 兼容的链，使用枚举`SOLANA`进行网络输入。

```
aws bedrock-agentcore create-payment-instrument \
    --payment-manager-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager" \
    --payment-connector-id "my-connector-id" \
    --user-id "test-user-123" \
    --payment-instrument-type "EMBEDDED_CRYPTO_WALLET" \
    --payment-instrument-details '{
        "embeddedCryptoWallet": {
            "network": "ETHEREUM",
            "linkedAccounts": [{"email": {"emailAddress": "myemail@example.com"}}]
        }
    }' \
    --client-token "$(uuidgen)" \
    --region us-west-2
```
对于与 Solana 兼容的链，请使用`"network": "SOLANA"`。

```
import boto3
import uuid

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

# Create payment instrument (Ethereum)
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": "myemail@example.com"
                }
            }]
        },
    },
    clientToken=str(uuid.uuid4()),
)
```
对于与 Solana 兼容的链，使用枚举`SOLANA`进行网络输入。

**注意**  
创建付款工具后，最终用户必须为该工具注资并授予签名权限，然后代理才能处理付款。有关详细说明，请参阅向钱包注[资和授予代理权限](payments-fund-wallet.md)。

## 获取支付工具
<a name="payments-create-instrument-get"></a>

**Example**  

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

```
aws bedrock-agentcore get-payment-instrument \
    --payment-manager-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager" \
    --payment-instrument-id "payment-instrument-abc123" \
    --user-id "test-user-123" \
    --region us-west-2
```

```
response = dp_client.get_payment_instrument(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    paymentInstrumentId="payment-instrument-abc123"
)
print(f"Status: {response['status']}, Network: {response['paymentInstrumentDetails']['embeddedCryptoWallet']['network']}")
```

## 列出付款工具
<a name="payments-create-instrument-list"></a>

**Example**  

```
instruments = manager.list_payment_instruments(
    user_id="test-user-123"
)
for inst in instruments['paymentInstruments']:
    print(f"{inst['paymentInstrumentId']} - {inst['status']}")
```

```
aws bedrock-agentcore list-payment-instruments \
    --payment-manager-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager" \
    --user-id "test-user-123" \
    --region us-west-2
```

```
response = dp_client.list_payment_instruments(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    userId="test-user-123"
)
for inst in response['paymentInstruments']:
    print(f"{inst['paymentInstrumentId']} - {inst['status']}")
```

## 检查乐器平衡
<a name="payments-create-instrument-balance"></a>

**Example**  

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

```
aws bedrock-agentcore get-payment-instrument-balance \
    --payment-manager-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager" \
    --payment-instrument-id "payment-instrument-abc123" \
    --region us-west-2
```

```
response = dp_client.get_payment_instrument_balance(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    paymentInstrumentId="payment-instrument-abc123"
)
print(f"Balance: {response['amount']} {response['currency']}")
```

## 删除付款工具
<a name="payments-create-instrument-delete"></a>

**Example**  

```
manager.delete_payment_instrument(
    user_id="test-user-123",
    payment_instrument_id="payment-instrument-abc123"
)
```

```
aws bedrock-agentcore delete-payment-instrument \
    --payment-manager-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager" \
    --payment-instrument-id "payment-instrument-abc123" \
    --region us-west-2
```

```
dp_client.delete_payment_instrument(
    paymentManagerArn=PAYMENT_MANAGER_ARN,
    paymentInstrumentId="payment-instrument-abc123"
)
```