

# Financez le portefeuille et accordez les autorisations aux agents
<a name="payments-fund-wallet"></a>

Après avoir créé un instrument de paiement, l'utilisateur final doit approvisionner le portefeuille avec l'USDC et autoriser l'agent à signer des transactions. Tant que les deux étapes ne sont pas terminées, l'opération de traitement du paiement échoue avec une exception côté client.

**Astuce**  
Vous pouvez automatiser les étapes de cette page à l'aide de la compétence AgentCore Paiements de la boîte à outils de l' AWS agent. La compétence fait partie du plugin **aws-agents**. Grâce à lui, un agent de codage basé sur l'IA peut créer votre gestionnaire de paiement, votre connecteur, votre fournisseur d'informations d'identification, votre instrument de paiement et votre session à l'aide de la `agentcore` CLI, et ajouter un outil de paiement x402 à votre agent. Pour plus de détails, consultez le guide de [démarrage rapide](payments-getting-started.md) et le [kit d'outils de l'AWS agent sur GitHub](https://github.com/aws/agent-toolkit-for-aws/tree/main).

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

Lorsque vous créez un instrument de paiement avec le connecteur Coinbase CDP, l'`CreatePaymentInstrument`API renvoie un `redirectUrl` pointeur vers Coinbase WalletHub, un portail permettant d'accorder des autorisations aux agents et de financer le portefeuille. Dirigez l'utilisateur final vers cette URL pour approvisionner son portefeuille et accorder des autorisations aux agents à partir d'une interface unique.

### Utilisez l' WalletHub URL
<a name="payments-fund-wallet-coinbase-wallethub"></a>

La `CreatePaymentInstrument` réponse `redirectUrl` from ouvre la Coinbase WalletHub, où l'utilisateur final peut approvisionner le portefeuille et accorder des autorisations de signature à l'agent.

```
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 pour le financement et l'octroi d'autorisations](http://docs.aws.amazon.com/fr_fr/bedrock-agentcore/latest/devguide/images/payments/grant-permission.png)


Vous pouvez également déployer le [ AgentCore modèle Coinbase](https://github.com/coinbase/cdp-agentcore-template) en GitHub tant que Next.js frontend auto-hébergé qui fournit les mêmes fonctionnalités de financement et d'autorisations avec une interface utilisateur personnalisable. Consultez [(Alternative) Déployez le frontend auto-hébergé](#payments-fund-wallet-coinbase-self-hosted) les instructions de configuration.

### Approvisionnez le portefeuille
<a name="payments-fund-wallet-coinbase-funding"></a>

Depuis le frontend WalletHub (ou depuis le frontend auto-hébergé), l'utilisateur final peut approvisionner son portefeuille en utilisant l'une des méthodes suivantes :


| Méthode | Description | Disponibilité | 
| --- | --- | --- | 
|  **Rampe Coinbase () card/bank**  | Achetez des USDC directement par carte de crédit, carte de débit, Apple Pay, Google Pay ou ACH via le flux d'achat hébergé par Coinbase. | Réseau principal uniquement | 
|  **Recevoir (code QR)**  | Affichez un code QR et une adresse de portefeuille. L'utilisateur scanne le QR ou copie l'adresse pour envoyer des fonds depuis un portefeuille externe ou une plateforme de change. | Réseau principal et réseau de test | 
|  **Transfert depuis un portefeuille externe**  | Connectez un portefeuille d'extension de navigateur (PhantomMetaMask, Coinbase Wallet) et transférez l'USDC directement vers le portefeuille intégré. | Réseau principal et réseau de test | 

Pour les environnements testnet, approvisionnez le portefeuille avec le testnet USDC provenant du robinet [Circle](https://faucet.circle.com/) USDC.

### Accorder des autorisations aux agents
<a name="payments-fund-wallet-coinbase-permissions"></a>

Les autorisations d'agent dans Coinbase CDP utilisent une **délégation à l'échelle du portefeuille** : chaque portefeuille reçoit sa propre autorisation indépendante et limitée dans le temps de la part de l'utilisateur final qui autorise l'agent à signer des transactions.

1. L'utilisateur final accède à la section **Permissions** du tableau de bord frontal Coinbase.

1. L'utilisateur final sélectionne un ou plusieurs portefeuilles (EVM and/or Solana) à autoriser.

1. L'utilisateur final choisit **Accorder l'autorisation** et sélectionne une durée d'expiration : **7 jours****, 30 jours** (par défaut), **60 jours** ou **90 jours**.

Une fois l'autorisation accordée, l'agent peut signer les transactions pour le compte des portefeuilles de l'utilisateur final jusqu'à son expiration. L'utilisateur final peut révoquer les autorisations à tout moment depuis le même tableau de bord. Une fois la subvention accordée, passez à [Créer une session de paiement](payments-create-session.md).

#### Révoquer les autorisations
<a name="payments-fund-wallet-coinbase-permissions-revoke"></a>

L'utilisateur final peut révoquer l'accès de l'agent à n'importe quel portefeuille à tout moment depuis la section des autorisations du tableau de bord WalletHub ou du frontend. Après la révocation, l'agent ne peut plus signer les transactions pour ce portefeuille tant que l'utilisateur n'a pas accordé de nouvelles autorisations.

### (Alternative) Déployez le frontend auto-hébergé
<a name="payments-fund-wallet-coinbase-self-hosted"></a>

Si vous avez besoin d'une interface utilisateur personnalisable au lieu d'une interface hébergée WalletHub, déployez le [ AgentCore modèle Coinbase](https://github.com/coinbase/cdp-agentcore-template) en tant qu'application auto-hébergée Next.js .

1. Clonez le dépôt :

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

1. Créez un `.env.local` fichier avec vos informations d'identification 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. Installez les dépendances et démarrez l'application :

   ```
   npm install
   npm run dev
   ```

1. **Dans le [portail des développeurs Coinbase](https://portal.cdp.coinbase.com/), ajoutez l'URL de votre application à la liste des **origines autorisées** sous **Portefeuilles** > **Non-custodial Portefeuille > Sécurité**.**

Le frontend auto-hébergé fournit les mêmes flux de financement et d'octroi d'autorisations décrits ci-dessus, avec un contrôle total sur le style et l'expérience utilisateur.

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

Le [ AgentCore SDK Privy GitHub](https://github.com/privy-io/aws-agentcore-sdk) est une interface de Next.js référence qui permet aux utilisateurs finaux de s'authentifier, de financer des portefeuilles et d'accorder des autorisations aux agents via un flux de configuration guidé.

### Déployer le frontend
<a name="payments-fund-wallet-privy-deploy"></a>

1. ****Autoriser le point de terminaison localhost dans le tableau de bord privé sous **Paramètres de l'application > Principes de base** > Domaines**** 

![Tableau de bord privé affichant le champ Domaines sous Paramètres de l'application, où localhost est ajouté à la liste des origines autorisées.](http://docs.aws.amazon.com/fr_fr/bedrock-agentcore/latest/devguide/images/payments/privy-allowlist.png)


1. Clonez le dépôt :

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

1. Créez un `.env.local` fichier avec vos identifiants 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
   ```

   La `NEXT_PUBLIC_PRIVY_SIGNER_ID` valeur est l'ID d'autorisation (ID clé) de votre tableau de bord privé sous **Wallet Infrastructure** > **Autorisation**. Il s'agit d'un identifiant public qui peut être exposé en toute sécurité côté client.

1. Installez les dépendances et démarrez l'application :

   ```
   pnpm install
   pnpm dev
   ```

### Approvisionnez le portefeuille
<a name="payments-fund-wallet-privy-funding"></a>

Lorsque l'utilisateur final s'authentifie via le frontend Privy, des portefeuilles intégrés sont automatiquement créés pour les réseaux Base (EVM) et Solana. L'utilisateur final peut approvisionner son portefeuille en utilisant l'une des méthodes suivantes :


| Méthode | Description | Disponibilité | 
| --- | --- | --- | 
|  **Payer par carte (Stripe)**  | Achetez des USDC à l'aide d'une carte de crédit ou de débit via la rampe d'accès cryptée hébergée par Stripe à l'adresse. `crypto.link.com` | Réseau principal uniquement | 
|  **Recevoir (code QR)**  | Affichez un code QR et une adresse de portefeuille au format URI EIP-681 (EVM) ou Solana Pay. L'utilisateur scanne le QR ou copie l'adresse pour envoyer des fonds depuis un portefeuille externe ou une plateforme de change. | Réseau principal et réseau de test | 
|  **Transfert depuis un portefeuille externe**  | Connectez un portefeuille d'extension de navigateur (MetaMask pour Base, Phantom pour Solana) et transférez l'USDC directement vers le portefeuille intégré. | Réseau principal et réseau de test | 

Pour les environnements testnet, approvisionnez le portefeuille avec le testnet USDC provenant du robinet [Circle](https://faucet.circle.com/) USDC.

### Accorder des autorisations aux agents
<a name="payments-fund-wallet-privy-permissions"></a>

Dans Privy, les autorisations d'agent utilisent **des signataires de session** (également appelés clés d'autorisation) : l'utilisateur final enregistre la clé d'autorisation de l'agent sur chaque portefeuille intégré, autorisant ainsi l'agent à signer des transactions sans approbation par transaction.

1. Dans le frontend Privy, l'utilisateur final se connecte et des portefeuilles intégrés automatiques sont créés (un EVM, un Solana).

1. L'écran d'accueil affiche une carte de configuration de **l'agent Connect**.

1. L'utilisateur final choisit l'**agent Connect**, et un message s'affiche : « Donnez à votre agent l'accès à vos portefeuilles ».

1. L'utilisateur final choisit **Donner accès**.

Le frontend appelle `addSessionSigners` depuis le Privy SDK pour enregistrer la clé d'autorisation de l'agent sur chaque portefeuille intégré. L'opération est inopérante : si le signataire est déjà enregistré, aucune erreur n'est renvoyée.

Une fois connecté, l'agent peut signer des transactions pour le compte des portefeuilles de l'utilisateur. Les autorisations sont conservées jusqu'à ce qu'elles soient explicitement révoquées.

#### (Facultatif) Vérifiez la connexion à l'agent
<a name="payments-fund-wallet-privy-permissions-verify"></a>

Le frontend vérifie que les autorisations sont actives en appelant l'API Privy :

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

La réponse inclut un `additional_signers` tableau. Si l'ID d'autorisation configuré apparaît dans ce tableau, l'agent est connecté.

Une fois la subvention accordée, passez à [Créer une session de paiement](payments-create-session.md).

## Tester avec testnet USDC
<a name="payments-fund-wallet-testnet"></a>

Pour le développement et les tests, utilisez les réseaux testnet et financez des portefeuilles avec test USDC :

1. `NEXT_PUBLIC_NETWORK_MODE=testnet`Défini dans le `.env.local` fichier frontal.

1. Obtenez le testnet USDC à partir du robinet [Circle USDC](https://faucet.circle.com/) :
   + Select **Base Sepolia pour les portefeuilles EVM**
   + Sélectionnez **Solana Devnet** pour les portefeuilles Solana

1. Collez l'adresse du portefeuille intégré (affichée sur le tableau de bord frontal ou sur l'écran du code QR) dans le robinet.

1. Le robinet distribue le test USDC à votre portefeuille en quelques secondes.

**Note**  
La carte Stripe Onramp (Privy) et Coinbase Onramp ne sont pas disponibles sur testnet. Utilisez le robinet Circle, le transfert de portefeuille externe ou le transfert d'adresse direct pour le financement du testnet.