

# AgentCore inicio rápido de pagos
<a name="payments-getting-started"></a>

Este tutorial te explica cómo configurar AgentCore los pagos y procesar tu primera microtransacción. Al final, su agente pagará por un recurso utilizando el protocolo x402 en una red de prueba.

Puedes configurar los pagos de dos maneras:
+  [Uso de la habilidad de AgentCore pagos](#payments-getting-started-skill): una experiencia de configuración automatizada que aprovisiona todos los recursos mediante una conversación guiada con agentes de programación de IA como Kiro, Claude Code o Codex. La habilidad maneja los comandos CLI, los scripts del SDK y el cableado del framework por usted.
+  [Uso de CLI, SDK o Boto3](#payments-getting-started-manual): configuración manual paso a paso mediante la AgentCore CLI, el AWS SDK o la AWS CLI directamente.

## Uso de la habilidad de pagos AgentCore
<a name="payments-getting-started-skill"></a>

La habilidad de AgentCore pagos automatiza todo el proceso de configuración a través de una experiencia guiada e interactiva. Proporciona los siguientes recursos:
+  **PaymentCredentialProvider**— Almacena las credenciales del proveedor de pagos en AgentCore Identity.
+  **Gestor de pagos**: el recurso de nivel superior que coordina las operaciones de pago.
+  **Conector de pago**: vincula al administrador con sus credenciales a través de la AgentCore CLI.
+  **Instrumento de pago**: monedero criptográfico que su agente utiliza para pagar a los comerciantes en nombre de un usuario.
+  **Sesión de pago**: un contexto limitado en el tiempo con límites de gasto.

Esta habilidad también transfiere los pagos a tu agente con una herramienta independiente del marco, por lo que funciona con Strands, el SDK de agentes de LangGraph OpenAI o cualquier marco de Python.

### Requisitos previos
<a name="payments-getting-started-skill-prereqs"></a>

Antes de empezar, asegúrate de tener:
+  ** AWS Cuenta** con credenciales configuradas (`aws configure`)
+  **Una AWS región en la que estén disponibles AgentCore los pagos**: us-east-1, us-west-2, eu-central-1 o ap-southeast-2. Consulta las [AWS regiones](agentcore-regions.md) admitidas.
+  **Node.js Más de 20** instalados (la habilidad instala la AgentCore CLI automáticamente)
+  **Un agente que accede a un terminal de pago**: esta habilidad le permite a su agente pagar por las API protegidas por la x402. Para las pruebas, puede utilizar el punto final de entorno aislado. `https://sandbox.node4all.com/v1/x402-test`
+  **El kit de [herramientas Agent Toolkit para el AWS](https://github.com/aws/agent-toolkit-for-aws) `aws-agents` complemento** instalado en tu agente de codificación de IA:  
**Example**  

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

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

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

  El plugin se descubre automáticamente en el manifiesto del mercado. Para añadir el mercado, ejecuta el siguiente comando:

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

------

### Invoca la habilidad
<a name="payments-getting-started-skill-invoke"></a>

La habilidad de pagos forma parte de la `agents-build` habilidad del [kit de herramientas para agentes](https://github.com/aws/agent-toolkit-for-aws). AWS Para activarla, describe tu intención en tu agente de programación de IA. Por ejemplo:
+ «Añada pagos a mi agente utilizando el `aws-agents` plugin `agents-build` Skill in»
+ «Configura microtransacciones para mi agente usando el `aws-agents` plugin `agents-build` Skill in»
+ «Necesito gestionar 402 respuestas de pago obligatorias utilizando el `aws-agents` plugin `agents-build` Skill in»
+ «Contrata a mi agente para que pague por las API protegidas por x402 utilizando el plugin `agents-build` Skill in» `aws-agents`

La habilidad detecta la intención de pago relacionada con el pago y carga el flujo de trabajo de los pagos automáticamente.

### ¿Qué hace la habilidad
<a name="payments-getting-started-skill-flow"></a>

La habilidad ejecuta un proceso automatizado que aprovisiona tu infraestructura de pagos de principio a fin. La habilidad ejecuta la mayoría de los pasos de forma automática y se detiene dos veces para que tú introduzcas información:

1. Verifica o instala la AgentCore CLI y configura el proyecto

1. Crea el administrador de pagos

1.  **Pausas**: tienes que `agentcore add payment-connector` introducir los secretos de tu proveedor (credenciales de Coinbase CDP o Stripe Privy)

1. Despliega recursos en tu cuenta () AWS `agentcore deploy -y`

1. Transfiere una herramienta de pago independiente del marco () a su agente `x402_payment_tool.py`

1. Crea una cartera (instrumento) por usuario y una sesión con un presupuesto limitado mediante el SDK

1.  **Pausas**[: autorizas el monedero (delegación) y lo financias con la red de prueba USDC desde el sitio web de Circle Faucet](https://faucet.circle.com/)

1. Establece variables de entorno y ejecuta un pago de prueba con un punto final de pago

Antes de ejecutar el comando connector, obtenga las credenciales de su proveedor:
+  **Coinbase CDP**: ID de clave de API, clave secreta de API y secreto de cartera del sitio web de la [plataforma de desarrolladores de Coinbase](https://portal.cdp.coinbase.com/) (con la firma delegada habilitada).
+  **Stripe Privy**[: ID de aplicación, secreto de aplicación, ID de autorización y clave privada de autorización del sitio web de Privy Dashboard.](https://dashboard.privy.io/)

Si se ejecuta correctamente, el agente llama`x402_fetch`, detecta un pago`402`, liquida el pago mediante el AgentCore SDK y vuelve a intentarlo `200` con contenido de pago.

## Uso de CLI, SDK o Boto3
<a name="payments-getting-started-manual"></a>

En esta sección, se explica cada paso manualmente mediante la AgentCore CLI, la AWS CLI o el AWS SDK (Boto3).

### Requisitos previos
<a name="payments-getting-started-manual-prereqs"></a>

Antes de empezar, asegúrese de tener:
+  ** AWS Cuenta** con credenciales configuradas (`aws configure`)
+  **Python 3.10\+ instalado**
+  **Una AWS región en la que estén disponibles AgentCore los pagos**: us-east-1, us-west-2, eu-central-1 o ap-southeast-2. Consulta las [AWS regiones](agentcore-regions.md) admitidas.

Instale los paquetes obligatorios:

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

Compruebe que sus credenciales estén configuradas:

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

**sugerencia**  
Si tiene instalada la AgentCore CLI v0.19.0 o posterior, puede usar los comandos de CLI como alternativa al SDK en los pasos 2, 3, 5 y 6. En cada uno de los pasos siguientes se muestran ambas opciones.

### Paso 1: Obtenga las credenciales del proveedor de pagos
<a name="payments-getting-started-provider-credentials"></a>

AgentCore payments se conecta a un proveedor de pagos externo para las operaciones de monedero. Necesitas las credenciales de uno de los proveedores compatibles antes de continuar.

**Example**  

1. Inicie sesión en la [plataforma de desarrolladores de Coinbase](https://docs.cdp.coinbase.com/api-reference/v2/authentication) y cree o seleccione un proyecto.

1. Genere una clave de API y anote el **ID de la clave de API**, el secreto de la **clave de API y el secreto** de la **cartera**.

1. En **Proyecto** > **Carteras** > **Non-custodial Cartera** > **Seguridad**, habilita la firma **delegada.**
Utilizará estos tres valores en el siguiente paso:  


| Credencial | Description (Descripción) | 
| --- | --- | 
|  `API Key ID`  | Identificador público para su proyecto de CDP | 
|  `API Key Secret`  | Secreto privado para firmar solicitudes de API | 
|  `Wallet Secret`  | Secreto para las operaciones de monedero criptográfico (derivación de direcciones, firma de transacciones) | 

1. [Crea una aplicación privada **dedicada en dashboard.privy.io**.](https://dashboard.privy.io/) No reutilices aplicaciones que sirvan para otros fines.

1. Copia el **ID de la aplicación** **y el secreto** de la aplicación de la configuración de la aplicación.

1. Vaya a **Wallet Infrastructure** > **Autorización** y elija **Nueva clave** para generar un P-256 key pair.
Utilizará estos cuatro valores en el siguiente paso:  


| Credencial | Description (Descripción) | 
| --- | --- | 
|  `App ID`  | Su identificador de aplicación Privy | 
|  `App Secret`  | Secreto para la autenticación básica de servidor a servidor | 
|  `Authorization ID`  | Identificador de clave pública del par de P-256 claves | 
|  `Authorization Private Key`  | Clave privada del par de P-256 claves | 

Para obtener todos los detalles, incluidas las mejores prácticas de seguridad y la rotación de credenciales, consulte [Requisitos previos](payments-prerequisites.md).

### Paso 2: Almacene las credenciales en Identity AgentCore
<a name="payments-getting-started-step2"></a>

Guarde las credenciales de su proveedor de pagos como PaymentCredentialProvider. Esto guarda los AWS secretos en Secrets Manager y no en el código de la aplicación.

**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}")
```

Para ver el esquema completo de solicitudes y respuestas, consulte [CreatePaymentCredentialProvider](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentCredentialProvider.html)la referencia de la API.

#### Alternativa CLI: almacenar credenciales
<a name="payments-getting-started-step2-cli"></a>

Con la AgentCore CLI, el almacenamiento de credenciales se produce automáticamente al añadir un conector de pago (paso 3). Omita este paso si planea usar la ruta CLI.

### Paso 3: Cree un administrador de pagos y un conector
<a name="payments-getting-started-step3"></a>

Un administrador de pagos es el recurso de nivel superior que coordina las operaciones de pago. Un conector de pago vincula al administrador con las credenciales de su proveedor de pagos. Antes de crear estos recursos, configure las funciones de IAM necesarias, tal y como se describe en las funciones de [IAM para AgentCore pagos](payments-iam-roles.md).

**Example**  
Para ver el tutorial completo de la consola, que incluye la autorización de JWT y las solicitudes personalizadas, consulte [Crear un administrador y un conector de pagos](payments-create-manager.md).  

1. Abre la [ AgentCore consola Amazon Bedrock](https://console.aws.amazon.com/bedrock-agentcore/).

1. En el panel de navegación, en **Crear**, selecciona **Pagos**.

1. Selecciona **Crear administrador de pagos**.

1. Introduce un **nombre** para tu gestor de pagos.

1. En **Permisos**, selecciona **Crear y usar un nuevo rol de servicio** (o selecciona un rol existente).

1. En **Autenticación entrante, selecciona Usar el** **nombre de usuario de IAM para la autorización de IAM**.

1. (Opcional) En la sección **Conector de pagos**, elige un nombre para el conector y selecciona una autenticación saliente existente o crea una nueva seleccionando tu proveedor (Coinbase o Stripe Privy) e introduciendo tus credenciales.

1. **Selecciona Crear administrador de pagos.**
La CLI crea el proveedor de credenciales, el administrador de pagos y el conector de pago en un solo flujo. Desde el directorio de su AgentCore proyecto, añada un administrador de pagos y un conector.  
 **Asistente interactivo:**   

```
agentcore add payment-manager
```
El asistente solicita el nombre del administrador, el patrón (interceptor), la opción de pago automático y el límite de gasto predeterminado. A continuación, pregunta si se debe añadir un conector y explica la selección del proveedor y la introducción de las credenciales.  
 **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 (Privado):**   

```
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>
```
Tras añadirlo, despliéguelo para aprovisionar la infraestructura de pago:  

```
agentcore deploy
```
El paso de implementación crea las funciones de IAM, almacena las credenciales en AgentCore Identity y aprovisiona el administrador de pagos y el conector. Verás «Creando una infraestructura de pago...» en el resultado.
El AgentCore SDK crea el administrador de pagos, el proveedor de credenciales y el conector en una sola llamada.  

```
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}")
```
En el caso de Stripe Privy, sustituya `payment_credential_provider_config` las credenciales de `credential_provider_vendor: "StripePrivy"` Privy por las correspondientes.
Crea el administrador de pagos:  

```
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
```
Cuando el administrador alcance el `READY` estado, cree un proveedor de credenciales y un conector. Consulte [Crear un administrador de pagos y un conector](payments-create-manager.md) para ver el flujo de trabajo completo de la AWS CLI.
Primero, cree el administrador de pagos (el mismo para ambos proveedores):  

```
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)
```
A continuación, cree el conector de pago para su proveedor:  
 **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}")
```
 **Privado:**   

```
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}")
```
Si no tiene una función de servicio, consulte [Funciones de IAM para AgentCore pagos para obtener](payments-iam-roles.md) instrucciones sobre cómo crear una. La consola también puede crear un rol en tu nombre. Para ver los esquemas completos de solicitud y respuesta, consulte [CreatePaymentManager](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentManager.html)y [CreatePaymentConnector](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentConnector.html)en la Referencia de la API.

### Paso 4: Crea un instrumento de pago
<a name="payments-getting-started-step4"></a>

Un instrumento de pago es una cartera criptográfica integrada que su agente utiliza para pagar a los comerciantes en nombre de un usuario. Cada instrumento está asociado a una red de cadenas de bloques específica.

**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
```
Guarde la respuesta `paymentInstrumentId` y `redirectUrl` de ella.

```
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}")
```

Para ver el esquema completo de solicitud y respuesta, consulta [CreatePaymentInstrument](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_CreatePaymentInstrument.html)la referencia de la API.

#### Financie la cartera y conceda los permisos
<a name="payments-getting-started-step4-fund"></a>

Antes de que el agente pueda realizar transacciones, el usuario final debe depositar fondos en la cartera y conceder permisos de firma. Abre la `redirectUrl` de la respuesta anterior en un navegador. Desde el centro de monederos, el usuario puede:
+ Recarga el monedero mediante transferencia criptográfica, credit/debit tarjeta, Apple Pay, Google Pay o ACH
+ Conceda permiso al agente para firmar transacciones en su nombre

Para un entorno de prueba, financie la cartera con testnet USDC.

Tras la financiación, sondee el estado del instrumento hasta que pase a ser: `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)
```

Para obtener más información sobre los flujos de financiación por proveedor, consulta Cómo [financiar el monedero](payments-how-it-works.md#payments-how-it-works-funding-wallet).

### Paso 5: Crea una sesión de pago
<a name="payments-getting-started-step5"></a>

Una sesión de pago es un contexto de tiempo limitado con límites de gasto opcionales. Cuando la sesión vence o se agote el presupuesto, el agente no podrá realizar más pagos dentro de esa sesión.

**Example**  
Al utilizar la CLI, no es necesario crear una sesión manualmente. Al pasar `--auto-session` a`agentcore invoke`, la CLI crea o reutiliza una sesión con el límite de gasto predeterminado que configuraste en el administrador de pagos.  

```
agentcore invoke \
  --prompt "your prompt here" \
  --payment-instrument-id <INSTRUMENT_ID> \
  --auto-session \
  --payment-user-id test-user-123
```
Para usar una sesión específica que creaste a través del SDK, pasa `--payment-session-id` en lugar de`--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)")
```
Para ver el esquema completo de solicitudes y respuestas, consulta [CreatePaymentSession](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_CreatePaymentSession.html)la referencia de la API.

### Paso 6: Procesa un pago con un agente de Strands
<a name="payments-getting-started-step6"></a>

Con todos los recursos disponibles, cree un agente de Strands que gestione los pagos x402 automáticamente. Cuando el agente llama a un terminal de pago y recibe una respuesta HTTP 402, el complemento de pagos firma la transacción y vuelve a intentar la solicitud.

**Example**  
Invoca al agente desplegado con el contexto de pago. La CLI pasa el instrumento de pago y la sesión al agente en tiempo de ejecución, y el interceptor x402 del agente gestiona el pago automáticamente.  

```
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
```
Para pasar una sesión explícita en lugar de crear una automáticamente:  

```
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
```
Usa la `PaymentManager` clase para generar encabezados de pago cuando recibas una respuesta HTTP 402:  

```
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`contiene el encabezado del comprobante de pago. Incluya este encabezado cuando vuelva a intentar enviar la solicitud al punto final de pago.
Llama `process-payment` directamente con una carga útil x402 (que se usa cuando gestionas tú mismo la organización de los pagos):  

```
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
```
Para ver el esquema completo de solicitudes y respuestas, consulta la referencia de [ProcessPayment](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_ProcessPayment.html)la API.

```
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)
```
Para ver el esquema completo de solicitud y respuesta de la llamada a la API subyacente, consulta [ProcessPayment](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_ProcessPayment.html)la Referencia de la API.

### Verifica el pago
<a name="payments-getting-started-verify"></a>

Una vez que el agente procese un pago, comprueba la sesión para confirmar que la transacción se ha registrado:

**Example**  

```
session = manager.get_payment_session(
    user_id="test-user-123",
    payment_session_id=SESSION_ID
)
print(f"Status: {session['status']}, Remaining: {session['remainingAmount']}")
```
También puede consultar el saldo del instrumento:  

```
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")
```
También puede consultar el saldo del instrumento:  

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

## Resolución de problemas
<a name="payments-getting-started-troubleshooting"></a>

Los siguientes problemas se aplican tanto a las rutas de configuración manual como a las basadas en habilidades.


| Problema | Solución | 
| --- | --- | 
| El administrador de pagos está atascado en CREATING | Espere hasta 2 minutos. Si pasa a CREATE\_FAILED, compruebe que el ARN y los permisos de su rol de servicio son correctos. | 
| «no activo» PaymentInstrument  | El usuario final debe depositar fondos en la cartera y conceder permisos de firma a través de la URL de redireccionamiento antes de que el agente pueda realizar la transacción. | 
| «La sesión ha caducado o se ha superado el presupuesto» | Cree una nueva sesión de pago con un vencimiento más largo o un límite de gasto más alto. | 
| «CredentialProvider no se ha encontrado» | Compruebe que el ARN del proveedor de credenciales coincide con el que creó en el paso 2. Asegúrese de que la región sea coherente en todas las llamadas. | 
| ProcessPayment LAS devoluciones HAN FALLADO | Comprueba que la cartera tenga un saldo en USDC suficiente para el importe de la transacción más las tasas de gas. | 

## Limpieza
<a name="payments-getting-started-cleanup"></a>

Elimina los recursos que creaste durante este tutorial:

**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
```
Los `remove` comandos actualizan la configuración local. El seguimiento `deploy` destruye la infraestructura de pagos de tu cuenta.

```
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.")
```

## Lo que has creado
<a name="payments-getting-started-what-youve-built"></a>

A través de este tutorial, has creado:
+  **PaymentCredentialProvider**— Credenciales del proveedor de pagos almacenadas en AgentCore Identity
+  **PaymentManager**— Top-level recurso que coordina las operaciones de pago
+  **PaymentConnector**— Integración entre su gestor y el proveedor de pagos externo
+  **PaymentInstrument**— Un monedero criptográfico integrado, financiado y autorizado por el usuario final
+  **PaymentSession**— Un contexto de pago limitado en el tiempo y en el presupuesto
+  **Strands Agent: un agente** de IA que gestiona los pagos de 402 veces al día de forma automática

## Siguientes pasos
<a name="payments-getting-started-next-steps"></a>
+  [Conéctese a Coinbase x402 Bazaar](payments-connect-bazaar.md) para descubrir más de 10 000 herramientas MCP de pago.
+  [Intégrelo con la herramienta del navegador para acceder a sitios web con muros](payments-browser.md) de pago.
+  [Habilite la observabilidad](payments-observability.md) para monitorear las operaciones de pago en. CloudWatch
+  [Revise las funciones de IAM](payments-iam-roles.md) para configurar el acceso con menos privilegios para la producción.