

# Mendanai dompet dan memberikan izin agen
<a name="payments-fund-wallet"></a>

Setelah Anda membuat instrumen pembayaran, pengguna akhir harus mendanai dompet dengan USDC dan memberikan izin agen untuk menandatangani transaksi. Sampai kedua langkah selesai, operasi pembayaran proses gagal dengan pengecualian sisi klien.

**Tip**  
Anda dapat mengotomatiskan langkah-langkah di halaman ini dengan keterampilan AgentCore Pembayaran di toolkit AWS agen. Keterampilan adalah bagian dari plugin **aws-agents**. Dengan itu, agen pengkodean AI dapat membuat Manajer Pembayaran, konektor, penyedia kredensi, instrumen pembayaran, dan sesi menggunakan `agentcore` CLI, dan menambahkan alat pembayaran x402 ke agen Anda. Untuk detailnya, lihat [mulai cepat](payments-getting-started.md) dan [toolkit AWS agen aktif](https://github.com/aws/agent-toolkit-for-aws/tree/main). GitHub

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

Saat Anda membuat instrumen pembayaran dengan konektor Coinbase CDP, `CreatePaymentInstrument` API mengembalikan `redirectUrl` titik ke Coinbase WalletHub, portal untuk memberikan izin agen dan mendanai dompet. Arahkan pengguna akhir ke URL ini untuk mendanai dompet mereka dan memberikan izin agen dari satu antarmuka.

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

`redirectUrl`Dari `CreatePaymentInstrument` tanggapan membuka Coinbase WalletHub, di mana pengguna akhir dapat mendanai dompet dan memberikan izin penandatanganan kepada agen.

```
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 untuk pendanaan dan pemberian izin](http://docs.aws.amazon.com/id_id/bedrock-agentcore/latest/devguide/images/payments/grant-permission.png)


Atau, Anda dapat menerapkan [ AgentCore template Coinbase GitHub](https://github.com/coinbase/cdp-agentcore-template) sebagai Next.js frontend yang dihosting sendiri yang menyediakan fungsionalitas pendanaan dan izin yang sama dengan UI yang dapat disesuaikan. Lihat [(Alternatif) Terapkan frontend yang dihosting sendiri](#payments-fund-wallet-coinbase-self-hosted) untuk petunjuk penyiapan.

### Danai dompet
<a name="payments-fund-wallet-coinbase-funding"></a>

Dari WalletHub (atau frontend yang dihosting sendiri), pengguna akhir dapat mendanai dompet mereka menggunakan salah satu metode berikut:


| Metode | Deskripsi | Ketersediaan | 
| --- | --- | --- | 
|  **Coinbase Onramp () card/bank**  | Beli USDC secara langsung menggunakan kartu kredit, kartu debit, Apple Pay, Google Pay, atau ACH melalui alur pembelian yang dihosting Coinbase. | Hanya mainnet | 
|  **Terima (kode QR)**  | Tampilkan kode QR dan alamat dompet. Pengguna memindai QR atau menyalin alamat untuk mengirim dana dari dompet atau pertukaran eksternal. | Mainnet dan testnet | 
|  **Transfer dari dompet eksternal**  | Hubungkan dompet ekstensi browser (MetaMask, Phantom, Coinbase Wallet) dan transfer USDC langsung ke dompet yang disematkan. | Mainnet dan testnet | 

Untuk lingkungan testnet, danai dompet dengan testnet USDC dari faucet [Circle](https://faucet.circle.com/) USDC.

### Berikan izin agen
<a name="payments-fund-wallet-coinbase-permissions"></a>

Izin agen di Coinbase CDP menggunakan **delegasi lingkup dompet — setiap dompet menerima hibah** independen dan terikat waktu sendiri dari pengguna akhir yang memberi wewenang kepada agen untuk menandatangani transaksi.

1. Pengguna akhir menavigasi ke bagian **Izin** di dasbor frontend Coinbase.

1. Pengguna akhir memilih satu atau lebih dompet (EVM and/or Solana) untuk diotorisasi.

1. **Pengguna akhir memilih **izin Hibah** dan memilih durasi kedaluwarsa: **7 hari, **30 hari**** (default), **60 hari, atau 90 hari**.**

Setelah diberikan, agen dapat menandatangani transaksi atas nama dompet pengguna akhir sampai hibah berakhir. Pengguna akhir dapat mencabut izin kapan saja dari dasbor yang sama. Setelah hibah diberikan, lanjutkan ke [Buat sesi pembayaran](payments-create-session.md).

#### Mencabut izin
<a name="payments-fund-wallet-coinbase-permissions-revoke"></a>

Pengguna akhir dapat mencabut akses agen ke dompet apa pun kapan saja dari bagian izin di dasbor WalletHub atau frontend. Setelah pencabutan, agen tidak dapat lagi menandatangani transaksi untuk dompet itu sampai pengguna memberikan izin baru.

### (Alternatif) Terapkan frontend yang dihosting sendiri
<a name="payments-fund-wallet-coinbase-self-hosted"></a>

Jika Anda memerlukan UI yang dapat disesuaikan alih-alih yang dihosting WalletHub, gunakan [ AgentCore template Coinbase](https://github.com/coinbase/cdp-agentcore-template) sebagai aplikasi yang dihosting sendiri. Next.js 

1. Kloning repositori:

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

1. Buat `.env.local` file dengan kredensyal CDP Anda:

   ```
   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. Instal dependensi dan mulai aplikasi:

   ```
   npm install
   npm run dev
   ```

1. **Di [Portal Pengembang Coinbase](https://portal.cdp.coinbase.com/), tambahkan URL aplikasi Anda ke daftar **Asal yang Diizinkan** di bawah **Non-custodial Dompet > **Dompet** > Keamanan**.**

Frontend yang dihosting sendiri menyediakan aliran pendanaan dan pemberian izin yang sama seperti yang dijelaskan di atas, dengan kontrol penuh atas gaya dan pengalaman pengguna.

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

[Privy AgentCore SDK on GitHub](https://github.com/privy-io/aws-agentcore-sdk) adalah frontend Next.js referensi yang memungkinkan pengguna akhir untuk mengautentikasi, mendanai dompet, dan memberikan izin agen melalui alur penyiapan yang dipandu.

### Terapkan frontend
<a name="payments-fund-wallet-privy-deploy"></a>

1. ****Izinkan endpoint localhost di dasbor Privy di bawah Pengaturan **Aplikasi > Dasar-Dasar > Domain****** 

![Dasbor privy yang menampilkan bidang Domain di bawah Pengaturan Aplikasi tempat localhost ditambahkan ke daftar asal yang diizinkan](http://docs.aws.amazon.com/id_id/bedrock-agentcore/latest/devguide/images/payments/privy-allowlist.png)


1. Kloning repositori:

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

1. Buat `.env.local` file dengan kredensyal Privy Anda:

   ```
   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
   ```

   `NEXT_PUBLIC_PRIVY_SIGNER_ID`**Nilainya adalah ID Otorisasi (ID Kunci) dari dasbor Privy Anda di bawah **Infrastruktur Dompet** > Otorisasi.** Ini adalah pengenal publik dan aman untuk mengekspos sisi klien.

1. Instal dependensi dan mulai aplikasi:

   ```
   pnpm install
   pnpm dev
   ```

### Danai dompet
<a name="payments-fund-wallet-privy-funding"></a>

Saat pengguna akhir mengautentikasi melalui frontend Privy, dompet tertanam secara otomatis dibuat untuk jaringan Base (EVM) dan Solana. Pengguna akhir dapat mendanai dompet mereka menggunakan salah satu metode berikut:


| Metode | Deskripsi | Ketersediaan | 
| --- | --- | --- | 
|  **Bayar dengan kartu (Stripe)**  | Beli USDC menggunakan kartu kredit atau debit melalui onramp kripto yang dihosting Stripe di. `crypto.link.com` | Hanya mainnet | 
|  **Terima (kode QR)**  | Tampilkan kode QR dan alamat dompet menggunakan EIP-681 (EVM) atau format URI Solana Pay. Pengguna memindai QR atau menyalin alamat untuk mengirim dana dari dompet atau pertukaran eksternal. | Mainnet dan testnet | 
|  **Transfer dari dompet eksternal**  | Hubungkan dompet ekstensi browser (MetaMask untuk Base, Phantom for Solana) dan transfer USDC langsung ke dompet yang disematkan. | Mainnet dan testnet | 

Untuk lingkungan testnet, danai dompet dengan testnet USDC dari faucet [Circle](https://faucet.circle.com/) USDC.

### Berikan izin agen
<a name="payments-fund-wallet-privy-permissions"></a>

Izin agen dalam **penandatangan sesi** penggunaan Privy (juga disebut kunci otorisasi) —pengguna akhir mendaftarkan kunci otorisasi agen pada setiap dompet yang disematkan, memberikan izin agen untuk menandatangani transaksi tanpa persetujuan per transaksi.

1. Di frontend Privy, pengguna akhir masuk dan dompet tertanam otomatis dibuat (satu EVM, satu Solana).

1. Layar beranda menampilkan kartu pengaturan **agen Connect**.

1. Pengguna akhir memilih **agen Connect**, dan modal menampilkan: “Berikan agen Anda akses ke dompet Anda.”

1. Pengguna akhir memilih **Berikan akses**.

Frontend memanggil `addSessionSigners` dari Privy SDK untuk mendaftarkan kunci otorisasi agen pada setiap dompet yang disematkan. Operasi ini idempoten—jika penandatangan sudah terdaftar, tidak ada kesalahan yang dikembalikan.

Setelah terhubung, agen dapat menandatangani transaksi atas nama dompet pengguna. Izin tetap ada sampai dicabut secara eksplisit.

#### (Opsional) Verifikasi koneksi agen
<a name="payments-fund-wallet-privy-permissions-verify"></a>

Frontend memverifikasi bahwa izin aktif dengan memanggil Privy API:

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

Responsnya mencakup `additional_signers` array. Jika ID Otorisasi yang dikonfigurasi muncul dalam array ini, agen terhubung.

Setelah hibah diberikan, lanjutkan ke [Buat sesi pembayaran](payments-create-session.md).

## Pengujian dengan testnet USDC
<a name="payments-fund-wallet-testnet"></a>

Untuk pengembangan dan pengujian, gunakan jaringan testnet dan dompet dana dengan uji USDC:

1. Atur `NEXT_PUBLIC_NETWORK_MODE=testnet` dalam `.env.local` file frontend.

1. Dapatkan testnet USDC dari faucet [Circle USDC](https://faucet.circle.com/):
   + Pilih **Base Seplia untuk dompet** EVM
   + Pilih **Solana Devnet untuk dompet** Solana

1. Rekatkan alamat dompet yang disematkan (ditampilkan di dasbor frontend atau layar kode QR) ke dalam faucet.

1. Faucet memberikan tes USDC ke dompet Anda dalam hitungan detik.

**catatan**  
Onramp kartu Stripe (Privy) dan Coinbase Onramp tidak tersedia di testnet. Gunakan faucet Circle, transfer dompet eksternal, atau transfer alamat langsung untuk pendanaan testnet.