

# Financie a carteira e conceda permissões ao agente
<a name="payments-fund-wallet"></a>

Depois de criar um instrumento de pagamento, o usuário final deve financiar a carteira com USDC e conceder permissão ao agente para assinar transações. Até que ambas as etapas sejam concluídas, a operação de pagamento do processo falhará com uma exceção do lado do cliente.

**dica**  
Você pode automatizar as etapas nesta página com a habilidade AgentCore Pagamentos no kit de ferramentas do AWS agente. A habilidade faz parte do plug-in **aws-agents**. Com ele, um agente de codificação de IA pode criar seu gerenciador de pagamentos, conector, provedor de credenciais, instrumento de pagamento e sessão usando a `agentcore` CLI e adicionar uma ferramenta de pagamento x402 ao seu agente. Para obter detalhes, consulte o [guia de início rápido](payments-getting-started.md) e o [kit de ferramentas do AWS agente](https://github.com/aws/agent-toolkit-for-aws/tree/main) em. GitHub

## Coinbase CDP
<a name="payments-fund-wallet-coinbase"></a>

Quando você cria um instrumento de pagamento com o conector CDP da Coinbase, a `CreatePaymentInstrument` API retorna um `redirectUrl` apontamento para o Coinbase WalletHub, um portal para conceder permissões ao agente e financiar a carteira. Direcione o usuário final para esse URL para financiar sua carteira e conceder permissões ao agente em uma única interface.

### Use o WalletHub URL
<a name="payments-fund-wallet-coinbase-wallethub"></a>

O `redirectUrl` formulário da `CreatePaymentInstrument` resposta abre a Coinbase WalletHub, onde o usuário final pode financiar a carteira e conceder permissões de assinatura ao agente.

```
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": "user@example.com"}}]
        }
    },
    clientToken=str(uuid.uuid4()),
)

# Direct the end user to this URL
wallet_hub_url = instrument["paymentInstrumentDetails"]["redirectUrl"]
print(f"Open the WalletHub: {wallet_hub_url}")
```

![Coinbase WalletHub para financiamento e concessão de permissões](http://docs.aws.amazon.com/pt_br/bedrock-agentcore/latest/devguide/images/payments/grant-permission.png)


Como alternativa, você pode implantar o [ AgentCore modelo Coinbase GitHub](https://github.com/coinbase/cdp-agentcore-template) como um Next.js front-end auto-hospedado que fornece a mesma funcionalidade de financiamento e permissões com uma interface de usuário personalizável. Consulte [(Alternativa) Implemente o front-end auto-hospedado](#payments-fund-wallet-coinbase-self-hosted) para obter instruções de configuração.

### Financie a carteira
<a name="payments-fund-wallet-coinbase-funding"></a>

A partir do WalletHub (ou do frontend auto-hospedado), o usuário final pode financiar sua carteira usando qualquer um dos seguintes métodos:


| Método | Description | Disponibilidade | 
| --- | --- | --- | 
|  **Rampa de entrada da Coinbase () card/bank**  | Compre USDC diretamente usando um cartão de crédito, cartão de débito, Apple Pay, Google Pay ou ACH por meio do fluxo de compra hospedado pela Coinbase. | Somente Mainnet | 
|  **Receber (código QR)**  | Exiba um código QR e o endereço da carteira. O usuário escaneia o QR ou copia o endereço para enviar fundos de uma carteira ou bolsa externa. | Mainnet e testnet | 
|  **Transferir de uma carteira externa**  | Conecte uma carteira de extensão de navegador (MetaMask, Phantom, Coinbase Wallet) e transfira USDC diretamente para a carteira incorporada. | Mainnet e testnet | 

Para ambientes de testnet, financie a carteira com testnet USDC da torneira [Circle](https://faucet.circle.com/) USDC.

### Conceda permissões ao agente
<a name="payments-fund-wallet-coinbase-permissions"></a>

As permissões do agente no Coinbase CDP usam a **delegação no escopo da carteira** — cada carteira recebe sua própria concessão independente e com prazo determinado do usuário final, que autoriza o agente a assinar transações.

1. O usuário final navega até a seção **Permissões do painel** de front-end da Coinbase.

1. O usuário final seleciona uma ou mais carteiras (EVM and/or Solana) para autorizar.

1. **O usuário final escolhe **Conceder permissão** e seleciona uma duração de expiração: **7 dias**, **30 dias** (padrão), **60 dias ou 90 dias**.**

Depois de concedida, o agente pode assinar transações em nome das carteiras do usuário final até que a concessão expire. O usuário final pode revogar as permissões a qualquer momento no mesmo painel. Depois que o subsídio for fornecido, vá para [Criar uma sessão de pagamento](payments-create-session.md).

#### Revogar permissões
<a name="payments-fund-wallet-coinbase-permissions-revoke"></a>

O usuário final pode revogar o acesso do agente a qualquer carteira a qualquer momento na seção de permissões WalletHub ou no painel de front-end. Após a revogação, o agente não poderá mais assinar transações para essa carteira até que o usuário conceda novas permissões.

### (Alternativa) Implemente o front-end auto-hospedado
<a name="payments-fund-wallet-coinbase-self-hosted"></a>

Se você precisar de uma interface de usuário personalizável em vez da hospedada WalletHub, implante o [ AgentCore modelo Coinbase](https://github.com/coinbase/cdp-agentcore-template) como um aplicativo Next.js auto-hospedado.

1. Clone o repositório:

   ```
   git clone https://github.com/coinbase/cdp-agentcore-template.git
   cd cdp-agentcore-template
   ```

1. Crie um `.env.local` arquivo com suas credenciais do CDP:

   ```
   NEXT_PUBLIC_CDP_PROJECT_ID=<YOUR_CDP_PROJECT_ID>
   CDP_API_KEY_ID=<YOUR_CDP_API_KEY_ID>
   CDP_API_KEY_SECRET=<YOUR_CDP_API_KEY_SECRET>
   CDP_WALLET_SECRET=<YOUR_CDP_WALLET_SECRET>
   NEXT_PUBLIC_NETWORK_MODE=testnet
   ```

1. Instale as dependências e inicie o aplicativo:

   ```
   npm install
   npm run dev
   ```

1. **No [Portal do Desenvolvedor da Coinbase](https://portal.cdp.coinbase.com/), adicione o URL do seu aplicativo à lista **Origens permitidas** em **Carteiras** > **Non-custodial Carteira > Segurança**.**

O frontend auto-hospedado fornece os mesmos fluxos de financiamento e concessão de permissões descritos acima, com controle total sobre o estilo e a experiência do usuário.

## Stripe (Privado)
<a name="payments-fund-wallet-privy"></a>

O [Privy AgentCore SDK on GitHub](https://github.com/privy-io/aws-agentcore-sdk) é um front-end de Next.js referência que permite que os usuários finais se autentiquem, financiem carteiras e concedam permissões aos agentes por meio de um fluxo de configuração guiado.

### Implemente o front-end
<a name="payments-fund-wallet-privy-deploy"></a>

1. ****Liste o endpoint localhost no painel Privy em Configurações do **aplicativo** > Básico > Domínios**** 

![Painel privado mostrando o campo Domínios em Configurações do aplicativo, onde localhost é adicionado à lista de origens permitidas](http://docs.aws.amazon.com/pt_br/bedrock-agentcore/latest/devguide/images/payments/privy-allowlist.png)


1. Clone o repositório:

   ```
   git clone https://github.com/privy-io/aws-agentcore-sdk.git
   cd aws-agentcore-sdk
   ```

1. Crie um `.env.local` arquivo com suas credenciais Privy:

   ```
   NEXT_PUBLIC_PRIVY_APP_ID=<YOUR_PRIVY_APP_ID>
   PRIVY_APP_SECRET=<YOUR_PRIVY_APP_SECRET>
   NEXT_PUBLIC_PRIVY_SIGNER_ID=<YOUR_PRIVY_AUTHORIZATION_ID>
   NEXT_PUBLIC_NETWORK_MODE=testnet
   ```

   O `NEXT_PUBLIC_PRIVY_SIGNER_ID` valor é o ID de autorização (ID da chave) do seu painel privado em **Infraestrutura de carteira** > **Autorização**. Esse é um identificador público e pode ser exposto com segurança no lado do cliente.

1. Instale as dependências e inicie o aplicativo:

   ```
   pnpm install
   pnpm dev
   ```

### Financie a carteira
<a name="payments-fund-wallet-privy-funding"></a>

Quando o usuário final se autentica por meio do frontend Privy, carteiras incorporadas são criadas automaticamente para as redes Base (EVM) e Solana. O usuário final pode financiar sua carteira usando qualquer um dos seguintes métodos:


| Método | Description | Disponibilidade | 
| --- | --- | --- | 
|  **Pague com cartão (Stripe)**  | Compre USDC usando um cartão de crédito ou débito por meio da rampa de acesso criptográfica hospedada pela Stripe em. `crypto.link.com` | Somente Mainnet | 
|  **Receber (código QR)**  | Exiba um código QR e endereço de carteira usando o formato EIP-681 (EVM) ou Solana Pay URI. O usuário escaneia o QR ou copia o endereço para enviar fundos de uma carteira ou bolsa externa. | Mainnet e testnet | 
|  **Transferir de uma carteira externa**  | Conecte uma carteira com extensão de navegador (MetaMask para Base, Phantom para Solana) e transfira USDC diretamente para a carteira incorporada. | Mainnet e testnet | 

Para ambientes de testnet, financie a carteira com testnet USDC da torneira [Circle](https://faucet.circle.com/) USDC.

### Conceda permissões ao agente
<a name="payments-fund-wallet-privy-permissions"></a>

As permissões do agente no Privy usam **signatários de sessão** (também chamadas de chaves de autorização) — o usuário final registra a chave de autorização do agente em cada carteira incorporada, concedendo ao agente permissão para assinar transações sem aprovação por transação.

1. No frontend Privy, o usuário final faz login e carteiras incorporadas automáticas são criadas (uma EVM, uma Solana).

1. A tela inicial exibe uma placa de configuração do **agente Connect**.

1. O usuário final escolhe o **agente Connect** e um modal exibe: “Dê ao seu agente acesso às suas carteiras”.

1. O usuário final escolhe **Conceder acesso**.

O front-end usa `addSessionSigners` o Privy SDK para registrar a chave de autorização do agente em cada carteira incorporada. A operação é idempotente — se o assinante já estiver registrado, nenhum erro será retornado.

Uma vez conectado, o agente pode assinar transações em nome das carteiras do usuário. As permissões persistem até serem revogadas explicitamente.

#### (Opcional) Verifique a conexão do agente
<a name="payments-fund-wallet-privy-permissions-verify"></a>

O front-end verifica se as permissões estão ativas chamando a API Privy:

```
GET https://auth.privy.io/api/v1/wallets/{walletId}
Authorization: Basic <base64(appId:appSecret)>
```

A resposta inclui uma `additional_signers` matriz. Se a ID de autorização configurada aparecer nessa matriz, o agente está conectado.

Depois que o subsídio for fornecido, vá para [Criar uma sessão de pagamento](payments-create-session.md).

## Testando com testnet USDC
<a name="payments-fund-wallet-testnet"></a>

Para desenvolvimento e teste, use redes testnet e carteiras de fundos com o teste USDC:

1. Definido `NEXT_PUBLIC_NETWORK_MODE=testnet` no `.env.local` arquivo de front-end.

1. Obtenha testnet USDC na torneira [Circle USDC](https://faucet.circle.com/):
   + Selecione **Base Sepolia** para carteiras EVM
   + Selecione **Solana Devnet** para carteiras Solana

1. Cole o endereço da carteira incorporada (mostrado no painel frontal ou na tela do código QR) na torneira.

1. A torneira distribui o USDC de teste em sua carteira em segundos.

**nota**  
O cartão Stripe onramp (Privy) e o Coinbase Onramp não estão disponíveis na testnet. Use a torneira Circle, a transferência externa de carteira ou a transferência direta de endereço para obter financiamento na testnet.