

# AgentCore pembayaran mulai cepat
<a name="payments-getting-started"></a>

Tutorial ini memandu Anda melalui pengaturan AgentCore pembayaran dan memproses transaksi mikro pertama Anda. Pada akhirnya, agen Anda akan membayar sumber daya menggunakan protokol x402 pada jaringan uji.

Anda dapat mengatur pembayaran dengan dua cara:
+  [Menggunakan keterampilan AgentCore Pembayaran](#payments-getting-started-skill) — Pengalaman pengaturan otomatis yang menyediakan semua sumber daya melalui percakapan terpandu dengan agen pengkodean AI seperti Kiro, Claude Code, atau Codex. Keterampilan ini menangani perintah CLI, skrip SDK, dan kabel kerangka kerja untuk Anda.
+  [Menggunakan CLI, SDK, atau Boto3](#payments-getting-started-manual) - Pengaturan manual langkah demi langkah menggunakan CLI, SDK, AWS atau AgentCore CLI secara langsung. AWS 

## Menggunakan keterampilan AgentCore Pembayaran
<a name="payments-getting-started-skill"></a>

Keterampilan AgentCore Pembayaran mengotomatiskan seluruh proses penyiapan melalui pengalaman interaktif dan terpandu. Ini menyediakan sumber daya berikut:
+  **PaymentCredentialProvider**— Menyimpan kredensi penyedia pembayaran di AgentCore Identity.
+  **Manajer Pembayaran** — Sumber daya tingkat atas yang mengoordinasikan operasi pembayaran.
+  **Konektor Pembayaran** - Menautkan manajer ke kredensil Anda melalui CLI AgentCore .
+  **Instrumen Pembayaran** — Dompet kripto yang digunakan agen Anda untuk membayar pedagang atas nama pengguna.
+  **Sesi Pembayaran** — Konteks yang dibatasi waktu dengan batas pengeluaran.

Keterampilan ini juga menghubungkan pembayaran ke agen Anda dengan alat kerangka agnostik, sehingga berfungsi dengan Strands,, LangGraph OpenAI Agents SDK, atau kerangka kerja Python apa pun.

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

Sebelum memulai, pastikan Anda memiliki:
+  ** AWS Akun** dengan kredensi yang dikonfigurasi () `aws configure`
+  ** AWS Wilayah di mana AgentCore pembayaran tersedia** — us-east-1, us-west-2, eu-central-1, atau ap-southeast-2. Lihat [AWS Wilayah yang Didukung](agentcore-regions.md).
+  **Node.js 20\+** diinstal (keterampilan menginstal CLI AgentCore secara otomatis)
+  **Agen yang mengakses titik akhir berbayar** — Keterampilan ini memungkinkan agen Anda membayar API yang dilindungi x402. Untuk pengujian, Anda dapat menggunakan `https://sandbox.node4all.com/v1/x402-test` endpoint sandbox.
+  **[Agen Toolkit untuk AWS](https://github.com/aws/agent-toolkit-for-aws) `aws-agents` plugin** yang diinstal di agen pengkodean AI Anda:  
**Example**  

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

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

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

  Plugin ditemukan secara otomatis dari manifes pasar. Untuk menambahkan marketplace, jalankan perintah berikut:

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

------

### Memanggil keterampilan
<a name="payments-getting-started-skill-invoke"></a>

Keterampilan pembayaran adalah bagian dari `agents-build` keterampilan dalam [Toolkit Agen untuk AWS](https://github.com/aws/agent-toolkit-for-aws). Untuk memicunya, jelaskan maksud Anda di agen pengkodean AI Anda. Contoh:
+ “Tambahkan pembayaran ke agen saya menggunakan `agents-build` keterampilan di `aws-agents` plugin”
+ “Siapkan transaksi mikro untuk agen saya menggunakan `agents-build` keterampilan di `aws-agents` plugin”
+ “Saya perlu menangani 402 Tanggapan Pembayaran yang Diperlukan menggunakan `agents-build` keterampilan di `aws-agents` plugin”
+ “Kawat agen saya untuk membayar API yang dilindungi x402 menggunakan `agents-build` skill in plugin” `aws-agents`

Keterampilan mendeteksi maksud terkait pembayaran dan memuat alur kerja pembayaran secara otomatis.

### Apa yang dilakukan keterampilan
<a name="payments-getting-started-skill-flow"></a>

Keterampilan menjalankan proses otomatis yang menyediakan infrastruktur pembayaran Anda secara end-to-end. Keterampilan menjalankan sebagian besar langkah secara otomatis dan berhenti dua kali untuk masukan Anda:

1. Memverifikasi atau menginstal AgentCore CLI dan menyiapkan proyek

1. Membuat manajer pembayaran

1.  **Jeda** - Anda menjalankan `agentcore add payment-connector` untuk memasukkan rahasia penyedia Anda (kredensi Coinbase CDP atau Stripe Privy)

1. Menyebarkan sumber daya ke AWS akun Anda () `agentcore deploy -y`

1. Menghubungkan alat pembayaran kerangka kerja agnostik () ke agen Anda `x402_payment_tool.py`

1. Membuat dompet per pengguna (instrumen) dan sesi terbatas anggaran melalui SDK

1.  **Jeda** [- Anda mengotorisasi dompet (delegasi) dan mendanainya dengan testnet USDC dari situs web faucet Circle](https://faucet.circle.com/)

1. Menetapkan variabel lingkungan dan menjalankan pembayaran uji terhadap titik akhir berbayar

Sebelum menjalankan perintah konektor, dapatkan kredensi dari penyedia Anda:
+  **Coinbase CDP** — ID Kunci API, Rahasia Kunci API, dan Rahasia Dompet dari situs web [Platform Pengembang Coinbase](https://portal.cdp.coinbase.com/) (dengan penandatanganan Delegasi diaktifkan).
+  **Stripe Privy** [— ID Aplikasi, Rahasia Aplikasi, ID Otorisasi, dan Kunci Pribadi Otorisasi dari situs web dasbor Privy.](https://dashboard.privy.io/)

Jalankan yang berhasil menunjukkan agen menelepon`x402_fetch`, mendeteksi`402`, menyelesaikan pembayaran melalui AgentCore SDK, dan coba lagi kembali `200` dengan konten berbayar.

## Menggunakan CLI, SDK, atau Boto3
<a name="payments-getting-started-manual"></a>

Bagian ini memandu Anda melalui setiap langkah secara manual menggunakan AgentCore CLI, AWS CLI, atau AWS SDK (Boto3).

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

Sebelum memulai, pastikan Anda memiliki:
+  ** AWS Akun** dengan kredensi yang dikonfigurasi () `aws configure`
+  **Python 3.10\+ diinstal**
+  ** AWS Wilayah di mana AgentCore pembayaran tersedia** — us-east-1, us-west-2, eu-central-1, atau ap-southeast-2. Lihat [AWS Wilayah yang Didukung](agentcore-regions.md).

Instal paket yang diperlukan:

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

Verifikasi kredenal Anda dikonfigurasi:

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

**Tip**  
Jika Anda menginstal AgentCore CLI v0.19.0 atau yang lebih baru, Anda dapat menggunakan perintah CLI sebagai alternatif SDK di Langkah 2, 3, 5, dan 6. Setiap langkah di bawah ini menunjukkan kedua opsi.

### Langkah 1: Dapatkan kredensi penyedia pembayaran
<a name="payments-getting-started-provider-credentials"></a>

AgentCore pembayaran terhubung ke penyedia pembayaran eksternal untuk operasi dompet. Anda memerlukan kredensi dari salah satu penyedia yang didukung sebelum melanjutkan.

**Example**  

1. Masuk ke [Platform Pengembang Coinbase](https://docs.cdp.coinbase.com/api-reference/v2/authentication) dan buat atau pilih proyek.

1. Buat kunci API dan catat **ID Kunci API**, **Rahasia Kunci API, dan Rahasia** **Dompet**.

1. Di bawah **Project** > **Wallets > **Non-custodial Wallet**** > **Security**, aktifkan penandatanganan **Delegasi.**
Anda akan menggunakan tiga nilai ini di langkah berikutnya:  


| Kredensi | Deskripsi | 
| --- | --- | 
|  `API Key ID`  | Pengidentifikasi publik untuk proyek CDP Anda | 
|  `API Key Secret`  | Rahasia pribadi untuk menandatangani permintaan API | 
|  `Wallet Secret`  | Rahasia untuk operasi dompet kriptografi (memperoleh alamat, menandatangani transaksi) | 

1. Buat aplikasi Privy **khusus** di [dashboard.privy.io](https://dashboard.privy.io/). Jangan gunakan kembali aplikasi yang melayani tujuan lain.

1. Salin **ID Aplikasi** dan **Rahasia Aplikasi** dari setelan aplikasi Anda.

1. Arahkan ke **Wallet Infrastructure** > **Authorization** dan pilih **New Key** untuk menghasilkan P-256 key pair.
Anda akan menggunakan empat nilai ini di langkah berikutnya:  


| Kredensi | Deskripsi | 
| --- | --- | 
|  `App ID`  | Pengidentifikasi aplikasi Privy Anda | 
|  `App Secret`  | Rahasia untuk Auth Dasar server-ke-server | 
|  `Authorization ID`  | Pengidentifikasi kunci publik dari P-256 key pair | 
|  `Authorization Private Key`  | Kunci pribadi dari P-256 key pair | 

Untuk detail selengkapnya termasuk praktik terbaik keamanan dan rotasi kredensi, lihat [Prasyarat](payments-prerequisites.md).

### Langkah 2: Simpan kredensi di Identitas AgentCore
<a name="payments-getting-started-step2"></a>

Simpan kredensi penyedia pembayaran Anda sebagai. PaymentCredentialProvider Ini menyimpan AWS rahasia di Secrets Manager daripada di kode aplikasi Anda.

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

Untuk skema permintaan dan respons lengkap, lihat [CreatePaymentCredentialProvider](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentCredentialProvider.html)di Referensi API.

#### Alternatif CLI: Kredensi toko
<a name="payments-getting-started-step2-cli"></a>

Dengan AgentCore CLI, penyimpanan kredensi terjadi secara otomatis ketika Anda menambahkan konektor pembayaran (Langkah 3). Lewati langkah ini jika Anda berencana untuk menggunakan jalur CLI.

### Langkah 3: Buat Manajer Pembayaran dan Konektor
<a name="payments-getting-started-step3"></a>

Manajer Pembayaran adalah sumber daya tingkat atas yang mengoordinasikan operasi pembayaran. Konektor Pembayaran menautkan manajer ke kredensi penyedia pembayaran Anda. Sebelum membuat sumber daya ini, siapkan peran IAM yang diperlukan seperti yang dijelaskan dalam peran [IAM untuk AgentCore pembayaran](payments-iam-roles.md).

**Example**  
Untuk panduan lengkap konsol termasuk otorisasi JWT dan klaim khusus, lihat [Membuat](payments-create-manager.md) Manajer Pembayaran dan Konektor.  

1. Buka [ AgentCore konsol Amazon Bedrock](https://console.aws.amazon.com/bedrock-agentcore/).

1. Di panel navigasi, di bawah **Build**, pilih **Pembayaran**.

1. Pilih **Buat Manajer Pembayaran**.

1. Masukkan **Nama** untuk Manajer Pembayaran Anda.

1. Di bawah **Izin**, pilih **Buat dan gunakan peran layanan baru** (atau pilih peran yang ada).

1. Di bawah **Inbound Auth**, pilih **Gunakan nama pengguna IAM untuk otorisasi IAM**.

1. (Opsional) Di bagian **Konektor pembayaran**, pilih nama untuk konektor dan pilih autentikasi keluar yang ada atau buat yang baru dengan memilih penyedia Anda (Coinbase atau Stripe Privy) dan masukkan kredensil Anda.

1. Pilih **Buat Manajer Pembayaran**.
CLI menciptakan penyedia kredensi, Manajer Pembayaran, dan Konektor Pembayaran dalam satu aliran. Dari direktori AgentCore proyek Anda, tambahkan manajer pembayaran dan konektor bersama-sama.  
 **Wisaya interaktif:**   

```
agentcore add payment-manager
```
Wizard meminta nama manajer, pola (pencegat), sakelar pembayaran otomatis, dan batas pengeluaran default. Kemudian menanyakan apakah akan menambahkan konektor dan berjalan melalui pemilihan penyedia dan input kredenal.  
 **Non-interactive (CDP Coinbase):**   

```
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 (Penasihat):**   

```
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>
```
Setelah menambahkan, gunakan untuk menyediakan infrastruktur pembayaran:  

```
agentcore deploy
```
Langkah penerapan membuat peran IAM, menyimpan kredensi di AgentCore Identity, dan menyediakan Manajer Pembayaran dan Konektor. Anda akan melihat “Membuat infrastruktur pembayaran...” di output.
 AgentCore SDK membuat Manajer Pembayaran, penyedia kredensi, dan konektor dalam satu panggilan.  

```
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}")
```
Untuk Stripe Privy, ganti `payment_credential_provider_config` dengan `credential_provider_vendor: "StripePrivy"` dan kredenal Privy yang sesuai.
Buat Manajer Pembayaran:  

```
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
```
Setelah manajer mencapai `READY` status, buat penyedia kredensi dan konektor. Lihat [Membuat Manajer Pembayaran dan Konektor](payments-create-manager.md) untuk alur kerja AWS CLI selengkapnya.
Pertama, buat Manajer Pembayaran (sama untuk kedua penyedia):  

```
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)
```
Kemudian buat Konektor Pembayaran untuk penyedia Anda:  
 **CDP Coinbase:**   

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

```
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}")
```
Jika Anda tidak memiliki peran layanan, lihat peran [IAM untuk AgentCore pembayaran](payments-iam-roles.md) untuk petunjuk cara membuatnya. Konsol juga dapat membuat peran atas nama Anda. Untuk skema permintaan dan respons lengkap, lihat [CreatePaymentManager](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentManager.html)dan [CreatePaymentConnector](https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_CreatePaymentConnector.html)di Referensi API.

### Langkah 4: Buat instrumen pembayaran
<a name="payments-getting-started-step4"></a>

Instrumen pembayaran adalah dompet kripto tertanam yang digunakan agen Anda untuk membayar pedagang atas nama pengguna. Setiap instrumen dikaitkan dengan jaringan blockchain tertentu.

**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
```
Simpan `paymentInstrumentId` dan `redirectUrl` dari respon.

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

Untuk skema permintaan dan respons lengkap, lihat [CreatePaymentInstrument](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_CreatePaymentInstrument.html)di Referensi API.

#### Mendanai dompet dan memberikan izin
<a name="payments-getting-started-step4-fund"></a>

Sebelum agen dapat bertransaksi, pengguna akhir harus mendanai dompet dan memberikan izin penandatanganan. Buka `redirectUrl` dari respons di atas di browser. Dari hub dompet, pengguna dapat:
+ Isi ulang dompet menggunakan transfer kripto, credit/debit kartu, Apple Pay, Google Pay, atau ACH
+ Memberikan izin agen untuk menandatangani transaksi atas nama mereka

Untuk lingkungan pengujian, danai dompet dengan testnet USDC.

Setelah pendanaan, jajak pendapat status instrumen hingga menjadi`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)
```

Untuk detail selengkapnya tentang aliran pendanaan menurut penyedia, lihat [Mendanai dompet](payments-how-it-works.md#payments-how-it-works-funding-wallet).

### Langkah 5: Buat sesi pembayaran
<a name="payments-getting-started-step5"></a>

Sesi pembayaran adalah konteks yang dibatasi waktu dengan batas pengeluaran opsional. Ketika sesi berakhir atau anggaran habis, agen tidak dapat melakukan pembayaran lebih lanjut dalam sesi itu.

**Example**  
Saat menggunakan CLI, Anda tidak perlu membuat sesi secara manual. Lulus `--auto-session` ke `agentcore invoke` dan CLI membuat atau menggunakan kembali sesi dengan batas pengeluaran default yang Anda konfigurasikan pada manajer pembayaran.  

```
agentcore invoke \
  --prompt "your prompt here" \
  --payment-instrument-id <INSTRUMENT_ID> \
  --auto-session \
  --payment-user-id test-user-123
```
Untuk menggunakan sesi tertentu yang Anda buat melalui SDK, teruskan `--payment-session-id` saja. `--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)")
```
Untuk skema permintaan dan respons lengkap, lihat [CreatePaymentSession](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_CreatePaymentSession.html)di Referensi API.

### Langkah 6: Proses pembayaran dengan agen Strands
<a name="payments-getting-started-step6"></a>

Dengan semua sumber daya di tempat, buat agen Strands yang menangani pembayaran x402 secara otomatis. Ketika agen memanggil titik akhir berbayar dan menerima respons HTTP 402, plugin pembayaran menandatangani transaksi dan mencoba ulang permintaan tersebut.

**Example**  
Panggil agen yang Anda gunakan dengan konteks pembayaran. CLI meneruskan instrumen pembayaran dan sesi ke agen saat runtime, dan pencegat x402 agen menangani pembayaran secara otomatis.  

```
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
```
Untuk meneruskan sesi eksplisit alih-alih membuat sesi otomatis:  

```
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
```
Gunakan `PaymentManager` kelas untuk menghasilkan header pembayaran saat Anda menerima respons 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`berisi header bukti pembayaran. Sertakan header ini saat mencoba kembali permintaan ke titik akhir berbayar.
Hubungi `process-payment` langsung dengan payload x402 (digunakan saat Anda menangani orkestrasi pembayaran sendiri):  

```
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
```
Untuk skema permintaan dan respons lengkap, lihat [ProcessPayment](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_ProcessPayment.html)di Referensi 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)
```
Untuk skema permintaan dan respons lengkap dari panggilan API yang mendasarinya, lihat [ProcessPayment](https://docs.aws.amazon.com/bedrock-agentcore/latest/APIReference/API_ProcessPayment.html)di Referensi API.

### Verifikasi pembayaran
<a name="payments-getting-started-verify"></a>

Setelah agen memproses pembayaran, periksa sesi untuk mengonfirmasi transaksi dicatat:

**Example**  

```
session = manager.get_payment_session(
    user_id="test-user-123",
    payment_session_id=SESSION_ID
)
print(f"Status: {session['status']}, Remaining: {session['remainingAmount']}")
```
Anda juga dapat memeriksa saldo instrumen:  

```
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")
```
Anda juga dapat memeriksa saldo instrumen:  

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

## Pemecahan masalah
<a name="payments-getting-started-troubleshooting"></a>

Masalah berikut berlaku untuk jalur penyiapan berbasis keterampilan dan manual.


| Isu | Solusi | 
| --- | --- | 
| Manajer Pembayaran terjebak dalam MENCIPTAKAN | Tunggu hingga 2 menit. Jika pindah ke CREATE\_FAILED, periksa apakah ARN dan izin peran layanan Anda sudah benar. | 
| “PaymentInstrument tidak aktif” | Pengguna akhir harus mendanai dompet dan memberikan izin penandatanganan melalui URL pengalihan sebelum agen dapat bertransaksi. | 
| “Sesi kedaluwarsa atau anggaran terlampaui” | Buat sesi pembayaran baru dengan kadaluwarsa yang lebih lama atau batas pengeluaran yang lebih tinggi. | 
| “CredentialProvider tidak ditemukan” | Verifikasi penyedia kredensi ARN cocok dengan apa yang Anda buat di Langkah 2. Pastikan wilayah konsisten di semua panggilan. | 
| ProcessPayment mengembalikan GAGAL | Pastikan dompet memiliki saldo USDC yang cukup untuk jumlah transaksi ditambah biaya gas. | 

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

Hapus sumber daya yang Anda buat selama tutorial ini:

**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
```
`remove`Perintah memperbarui konfigurasi lokal. Tindak lanjut `deploy` meruntuhkan infrastruktur pembayaran di akun Anda.

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

## Apa yang telah Anda bangun
<a name="payments-getting-started-what-youve-built"></a>

Melalui tutorial ini, Anda membuat:
+  **PaymentCredentialProvider**— Kredensi penyedia pembayaran yang disimpan dalam Identitas AgentCore 
+  **PaymentManager**— Top-level operasi pembayaran koordinasi sumber daya
+  **PaymentConnector**— Integrasi antara manajer Anda dan penyedia pembayaran eksternal
+  **PaymentInstrument**— Dompet kripto tertanam, didanai dan disahkan oleh pengguna akhir
+  **PaymentSession**— Konteks pembayaran terbatas waktu dan terbatas anggaran
+  **Strands Agent** — Agen AI yang menangani pembayaran x402 secara otomatis

## Langkah selanjutnya
<a name="payments-getting-started-next-steps"></a>
+  [Connect ke Coinbase x402 Bazaar](payments-connect-bazaar.md) untuk menemukan 10.000\+ alat MCP berbayar.
+  [Integrasikan dengan Alat Browser](payments-browser.md) untuk mengakses situs web berbayar.
+  [Aktifkan observabilitas](payments-observability.md) untuk memantau operasi pembayaran di CloudWatch.
+  [Tinjau peran IAM](payments-iam-roles.md) untuk mengonfigurasi akses hak istimewa terkecil untuk produksi.