View a markdown version of this page

결제 처리 - Amazon Bedrock AgentCore

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

결제 처리

결제를 처리하려면 다음 두 가지 리소스가 필요합니다.

둘 다 존재하면 결제 세션 ID, 결제 수단 ID 및 결제 페이로드ProcessPayment로를 호출합니다. 서비스는 요청을 검증하고, 예산을 확인하고, 적절한 블록체인에서 트랜잭션에 서명하고, 서명된 결제 결과를 반환합니다. 전체 요청 및 응답 스키마는 API 참조의 ProcessPayment를 참조하세요.

AgentCore 결제는 paymentType 파라미터로 선택하는 두 가지 결제 프로토콜을 지원합니다.

  • CRYPTO_X402 - x402 프로토콜 입니다. 에 판매자의 x402 결제 페이로드를 제공paymentInput.cryptoX402하면 에이전트가 X-PAYMENT 헤더의 서명된 증명으로 요청을 재시도합니다.

  • MPP - 기계 결제 프로토콜(MPP). 에서 판매자의 WWW-Authenticate: Payment 챌린지를 전달paymentInput.mpp하면 에이전트가 Authorization 헤더에서 반환된 자격 증명으로 요청을 재시도합니다.

판매자가 402 Payment Required 응답에 사용한 프로토콜과 paymentType 일치하는를 선택합니다. x402 요청 및 응답 세부 정보는 x402 결제 요청 결제를 참조하세요. MPP 요청 및 응답 세부 정보는 MPP 챌린지 지불을 참조하세요.

작은 정보

AWS 에이전트 도구 키트의 AgentCore Payments 스킬을 사용하여이 페이지의 단계를 자동화할 수 있습니다. 스킬은 aws-agents 플러그인의 일부이며 AI 코딩 에이전트가 agentcore CLI를 사용하여 Payment Manager, 커넥터, 자격 증명 공급자, 결제 수단 및 세션을 생성하고 에이전트에 프로세스 결제 도구를 추가할 수 있도록 합니다. 자세한 내용은 GitHub의 빠른 시작 및 에이전트 툴킷을 참조하세요. AWS GitHub

ProcessPayment API를 호출하는 방법은 5가지입니다.

예
AgentCore CLI

에이전트가 결제 기능이 구성된 상태로 배포된 경우 결제 컨텍스트로 에이전트를 호출하면 x402 인터셉터가 결제 처리를 자동으로 처리합니다.

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 user@example.com

명시적 세션을 자동 생성하는 대신 사용하려면:

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 user@example.com

배포된 에이전트의 x402 플러그인은 HTTP 402 응답을 가로채고,를 호출하고ProcessPayment, 증거로 요청을 재시도합니다. AgentCore CLI v0.19.0 이상이 필요합니다.

AgentCore SDK

PaymentManager 클래스를 사용하여 에이전트 프레임워크 내에서 결제 헤더를 수동으로 생성합니다.

import uuid from bedrock_agentcore.payments import PaymentManager manager = PaymentManager( payment_manager_arn=mgr["paymentManagerArn"], 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["paymentInstrumentId"], payment_session_id=session["paymentSessionId"], payment_required_request=payment_required_request, client_token=str(uuid.uuid4()), )

payment_proof_headers 에는 결제 증명 헤더가 포함되어 있습니다. 유료 엔드포인트에 대한 요청을 재시도할 때이 헤더를 포함합니다. 입력을 더 잘 제어PaymentManager하려면의 process_payment 메서드를 호출할 수도 있습니다.

AWS CLI

다음 예시에서는에서 판매자의 페이로드를 전달하여 x402 결제를 처리합니다. paymentInput.cryptoX402

aws bedrock-agentcore process-payment \ --payment-manager-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager" \ --payment-session-id "payment-session-abc123" \ --payment-instrument-id "payment-instrument-xyz789" \ --payment-type "CRYPTO_X402" \ --payment-input '{ "cryptoX402": { "version": "2", "payload": { "scheme": "exact", "network": "eip155:84532", "amount": "100000", "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "payTo": "0x99935f281d3ED1E804bF1413b76E0B03e1fed4F9", "maxTimeoutSeconds": 300, "extra": {"name": "USDC", "version": "2"} } } }' \ --client-token "$(uuidgen)" \ --region us-west-2

MPP AWS CLI 예제를 포함하여 각 프로토콜에 paymentInput 대해를 빌드하는 방법을 알아보려면 x402 결제 요청 결제 및 MPP 챌린지 결제를 참조하세요.

AWS SDK

다음 예시에서는에서 판매자의 페이로드process_payment로를 호출하여 x402 결제를 처리합니다. paymentInput.cryptoX402

import uuid payment = dp_client.process_payment( userId="test-user-123", paymentManagerArn=PAYMENT_MANAGER_ARN, paymentSessionId=SESSION_ID, paymentInstrumentId=INSTRUMENT_ID, paymentType="CRYPTO_X402", paymentInput={ "cryptoX402": { "version": "2", "payload": { "scheme": "exact", "network": "eip155:84532", "amount": "100000", "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "payTo": "0x99935f281d3ED1E804bF1413b76E0B03e1fed4F9", "maxTimeoutSeconds": 300, "extra": {"name": "USDC", "version": "2"}, }, } }, clientToken=str(uuid.uuid4()), )

응답:

{ "processPaymentId": "12345678-1234-1234-1234-123456789012", "paymentManagerArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager-a1b2c3d4e5", "paymentSessionId": "payment-session-abc123def4567", "paymentInstrumentId": "payment-instrument-xyz789abc1234", "paymentType": "CRYPTO_X402", "status": "PROOF_GENERATED", "paymentOutput": { "cryptoX402": { "version": "2", "payload": { "...signed transaction proof..." } } }, "createdAt": "2025-07-15T10:35:00Z", "updatedAt": "2025-07-15T10:35:02Z" }

status의는 트랜잭션이 서명되었고 결제 증명이에 포함되어 있음을 PROOF_GENERATED 나타냅니다paymentOutput.

MPP AWS SDK 예제 및 응답을 포함하여 각 프로토콜에 paymentInput 대해를 빌드하는 방법을 알아보려면 x402 결제 요청 결제 및 MPP 챌린지 결제를 참조하세요.

Strands SDK

AgentCore 결제 플러그인은 Strands Agents에 대한 자동 결제 처리를 제공합니다. 에이전트가 HTTP 402 응답을 자동으로 처리할 수 있도록 x402 Payment Required 프로토콜을 지원합니다.

설치:

pip install 'bedrock-agentcore[strands-agents]'

플러그인을 구성하고 사용합니다.

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 # Configure the plugin config = AgentCorePaymentsPluginConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/pm-abc123", user_id="test-user-123", payment_instrument_id="payment-instrument-XJU4RSQP9VO0ler", payment_session_id="payment-session-xuzrnUCd7RT725G", region="us-west-2", ) # Create the plugin plugin = AgentCorePaymentsPlugin(config=config) # Create agent with the plugin agent = Agent( system_prompt="You are a helpful assistant that can access paid APIs.", tools=[http_request], plugins=[plugin], ) # Use the agent -- 402 responses are automatically handled agent("access https://drvd12nxpcyd5.cloudfront.net/market-recap")

AgentCore 결제 플러그인은 x402 결제 요청을 자동으로 가로채고, 결제를 처리하고, 에이전트에 대한 결제 증명으로 요청을 재시도합니다.

LangGraph

AgentCore 결제 미들웨어는 LangGraph 에이전트를 위한 자동 결제 처리를 제공합니다. 에이전트가 HTTP 402 응답을 자동으로 처리할 수 있도록 x402 Payment Required 프로토콜을 지원합니다.

설치:

pip install 'bedrock-agentcore[langgraph]'

미들웨어를 구성하고 사용합니다.

from langchain.agents import create_agent from bedrock_agentcore.payments.integrations.langgraph import ( AgentCorePaymentsConfig, AgentCorePaymentsMiddleware, ) config = AgentCorePaymentsConfig( payment_manager_arn="arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/pm-abc123", user_id="test-user-123", payment_instrument_id="payment-instrument-XJU4RSQP9VO0ler", region="us-west-2", auto_session=True, ) payments = AgentCorePaymentsMiddleware(config) agent = create_agent( model="us.anthropic.claude-sonnet-4-20250514-v1:0", tools=[], middleware=[payments], ) result = agent.invoke({"messages": [{"role": "user", "content": "access https://drvd12nxpcyd5.cloudfront.net/market-recap"}]}) print(result)

AgentCore 결제 미들웨어는 x402 결제 요청을 자동으로 가로채고, 결제를 처리하고, 에이전트에 대한 결제 증명으로 요청을 재시도합니다.

x402 결제 요청 결제

판매자가 응답에서 x402 결제 페이로드로 402 Payment Required 응답하면 해당 페이로드를 AgentCore 결제에 전달하고 AgentCore 결제는 서명된 증명을 반환합니다. 판매자의 페이로드를에 복사paymentInput.cryptoX402하면 AgentCore 결제가 예산을 확인하고, Wallet으로 거래에 서명하고, 서명된 증명을 반환합니다. 헤더에 증명을 연결하고 원래 요청을 X-PAYMENT 다시 시도합니다.

요청 및 응답

에 paymentInput.cryptoX402다음 필드를 입력합니다.

  • version - x402 프로토콜 버전(예: 1 또는 2). 필수 사항입니다.

  • payload - 판매자의 x402 결제 요구 사항으로, JSON 객체로 전달됩니다. 판매자의 402 응답에서 scheme, network, asset, maxAmountRequiredpayTo, 및 기타 필드를 지정합니다. 필수 사항입니다.

  • permit2AllowanceLimit - 자산의 최소 액면가에서 부여할 최대 체인 내 Permit2 허용량입니다. 선택 사항. Permit2 계약을 통해 해결되는 upto (측정된) 체계에 대해서만 이를 설정합니다. exact 체계에 이를 제공하는 것은 검증 오류입니다. 최대 결제에 대한 Permit2 허용량을 참조하세요.

응답은에서 paymentOutput.cryptoX402다음 필드를 반환합니다.

  • version - x402 프로토콜 버전 입니다.

  • payload - 서명된 트랜잭션 증명으로, JSON 객체입니다. X-PAYMENT 헤더에 연결하고 원래 요청을 다시 시도합니다.

status의는 트랜잭션이 서명되었고 결제 증명이에 포함되어 있음을 PROOF_GENERATED 나타냅니다paymentOutput.

스키마

x402 페이로드의 이름은 입니다scheme. AgentCore 결제는 다음 체계를 지원합니다.

  • exact - 판매자의 페이로드에 지정된 고정 금액을 지불합니다. 이는 기본 체계이며 허용량 처리가 필요하지 않습니다.

  • upto - 천장까지 측정된 금액을 지불합니다. 이 체계는 Permit2 계약을 통해 해결되므로 지급인 월렛이 Permit2 허용량을 부여해야 합니다. 최대 결제에 대한 Permit2 허용량을 참조하세요.

최대 결제에 대한 Permit2 허용량

이 upto 체계는와 자금을 이동하는 Permit2 계약을 통해 해결됩니다transferFrom. 지급인 지갑은 먼저 Permit2에 ERC-20 허용량을 부여해야 합니다. 그렇지 않으면 Permit2-allowance 사전 조건 오류와 함께 결제가 실패합니다. 이 권한 부여는 모든 직접적인 Permit2 승인과 동일한 체인 내 승인 모델을 따릅니다. 자세한 내용은 Uniswap 웹 사이트의 Uniswap Permit2 및 GitHub 웹 사이트의 x402 최대 체계 사양을 참조하세요.

이를 처리하려면 자산permit2AllowanceLimit의 최소 액면가의 최대 허용량(예: 10진수 6의 1000000 = 1 USDC)으로 설정합니다. 무제한 허용량을 부여하려면 최대값을 문자열uint256로 전달합니다115792089237316195423570985008687907853269984665640564039457584007913129639935. 이 필드를 설정하면 AgentCore 결제는 서명 전에 체인 내 approve 트랜잭션을 제출합니다. 이 트랜잭션에는 Wallet의 기본 토큰 밸런스에서 지불되는 블록체인 네트워크(가스) 요금이 발생합니다.

는가 아닌 월렛의 허용량을 approve 설정하기 때문에 중복된 온 체인 트랜잭션을 방지하기 위해 월렛에 승인(예: 첫 번째 upto 결제)이 필요한 permit2AllowanceLimit 경우에만 설정됩니다. 허용량 처리를 완전히 건너뛰려면 필드를 생략합니다. 이 필드는 upto 스키마에만 적용되며 exact 스키마에 이를 제공하는 것은 검증 오류입니다.

다음 예시에서는 upto 결제를 처리하고 허용량 1 USDC를 Permit2에 부여합니다. 의 경우 upto는 판매자가 402 응답에서 광고하는 상한선을 maxAmountRequired 가지며 동일한 응답의 결제 조력자extra.facilitatorAddress입니다.

예
AWS CLI
aws bedrock-agentcore process-payment \ --payment-manager-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager" \ --payment-session-id "payment-session-abc123" \ --payment-instrument-id "payment-instrument-xyz789" \ --payment-type "CRYPTO_X402" \ --payment-input '{ "cryptoX402": { "version": "2", "payload": { "scheme": "upto", "network": "eip155:8453", "maxAmountRequired": "3495", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0x99935f281d3ED1E804bF1413b76E0B03e1fed4F9", "maxTimeoutSeconds": 300, "extra": {"name": "USDC", "version": "2", "facilitatorAddress": "0x8581784D3E598cCa3482375CFF2409Ac9DD8c402"} }, "permit2AllowanceLimit": "1000000" } }' \ --client-token "$(uuidgen)" \ --region us-west-2
AWS SDK
import uuid payment = dp_client.process_payment( userId="test-user-123", paymentManagerArn=PAYMENT_MANAGER_ARN, paymentSessionId=SESSION_ID, paymentInstrumentId=INSTRUMENT_ID, paymentType="CRYPTO_X402", paymentInput={ "cryptoX402": { "version": "2", "payload": { "scheme": "upto", "network": "eip155:8453", "maxAmountRequired": "3495", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0x99935f281d3ED1E804bF1413b76E0B03e1fed4F9", "maxTimeoutSeconds": 300, "extra": {"name": "USDC", "version": "2", "facilitatorAddress": "0x8581784D3E598cCa3482375CFF2409Ac9DD8c402"}, }, "permit2AllowanceLimit": "1000000", } }, clientToken=str(uuid.uuid4()), )

제한 사항

  • permit2AllowanceLimit 필드는 upto 체계에만 유효합니다. exact 스키마에 이를 제공하면가 반환됩니다ValidationException.

x402 결제 요청 검증 오류 및 해결 방법은 x402 결제 요청 오류를 참조하세요. 결제 처리 오류 및 해결 방법은 결제 처리 오류를 참조하세요.

MPP 챌린지 지불

판매자가 402 Payment Required 응답에서 WWW-Authenticate: Payment 챌린지를 반환하면에서 챌린지를 축어적으로 전달합니다paymentInput.mpp. AgentCore 결제는 챌린지를 구문 분석하고, 예산을 확인하고, Wallet에 서명하고, 즉시 ready-to-send Authorization 헤더 값을 반환합니다. AgentCore 결제는 헤더 구문 분석, base64url 디코딩 및 서명을 처리하므로 이러한 작업을 수행할 필요가 없습니다.

요청 및 응답

에 paymentInput.mpp다음 필드를 입력합니다.

  • version - MPP 프로토콜 버전(예: 1). 필수 사항입니다.

  • wwwAuthenticateHeaders - 판매자 응답의 원시 WWW-Authenticate: Payment 헤더 값으로402, 축어적으로 전달됩니다. 정확히 하나의 헤더를 제공합니다. 필수 사항입니다.

  • buyerPaysGasFees - 판매자가 후원하지 않을 때 구매자의 지갑에서 블록체인 네트워크(가스) 요금을 지불하도록 승인할지 여부입니다. 선택 사항. 생략됨 또는 구매자가 거부함을 false 의미합니다. 네트워크 요금 동의를 참조하세요.

응답은에서 paymentOutput.mpp다음 필드를 반환합니다.

  • version - MPP 프로토콜 버전 입니다.

  • selectedPaymentId - 자격 증명을 디코딩하지 않고도 결과를 상호 연관시킬 수 있도록 AgentCore 결제가 지불한 챌린지 id의 입니다.

  • paymentCredential - 형식의 즉시 전송 가능한 Authorization 헤더 값입니다Payment <base64url-token>. ready-to-send Authorization 헤더로 연결하고 원래 요청을 다시 시도합니다.

중요

를 디코딩하거나 수정하지 마십시오paymentCredential. 원래 챌린지와 서명된 페이로드를 포함하며 판매자의 HMAC는 이러한 정확한 바이트에 바인딩됩니다. 반환된 값을 연결합니다.

다음 예제에서는 MPP 챌린지를 처리합니다. 에서 판매자의 WWW-Authenticate: Payment 챌린지 축어를 설정하고 --payment-type "MPP" 전달합니다paymentInput.mpp.wwwAuthenticateHeaders(정확히 헤더 하나).

예
AWS CLI
aws bedrock-agentcore process-payment \ --payment-manager-arn "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager" \ --payment-session-id "payment-session-abc123" \ --payment-instrument-id "payment-instrument-xyz789" \ --payment-type "MPP" \ --payment-input '{ "mpp": { "version": "1", "wwwAuthenticateHeaders": [ "Payment id=\"c1\", realm=\"seller.example.com\", method=\"evm\", intent=\"charge\", request=\"eyJhbW91bnQiOiIxMDAwMDAifQ\"" ] } }' \ --client-token "$(uuidgen)" \ --region us-west-2
AWS SDK
import uuid payment = dp_client.process_payment( userId="test-user-123", paymentManagerArn=PAYMENT_MANAGER_ARN, paymentSessionId=SESSION_ID, paymentInstrumentId=INSTRUMENT_ID, paymentType="MPP", paymentInput={ "mpp": { "version": "1", "wwwAuthenticateHeaders": [ 'Payment id="c1", realm="seller.example.com", method="evm", ' 'intent="charge", request="eyJhbW91bnQiOiIxMDAwMDAifQ"' ], } }, clientToken=str(uuid.uuid4()), )

응답:

{ "processPaymentId": "12345678-1234-1234-1234-123456789012", "paymentManagerArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:payment-manager/my-manager-a1b2c3d4e5", "paymentSessionId": "payment-session-abc123def4567", "paymentInstrumentId": "payment-instrument-xyz789abc1234", "paymentType": "MPP", "status": "PROOF_GENERATED", "paymentOutput": { "mpp": { "version": "1", "selectedPaymentId": "c1", "paymentCredential": "Payment <base64url-token>" } }, "createdAt": "2025-07-15T10:35:00Z", "updatedAt": "2025-07-15T10:35:02Z" }

status의는 자격 증명이 서명되었으며에 포함되어 있음을 PROOF_GENERATED 나타냅니다paymentOutput.mpp.paymentCredential.

메서드 및 토큰

MPP 챌린지는 결제의 이름을 지정합니다method. AgentCore 결제는 charge 의도에 대해 다음과 같은 방법을 지원합니다.

  • evm - 정식 USDC만 해당. 챌린지에는 methodDetails.chainId 및가 포함되어야 합니다realm.

  • tempo - 네트워크의 인식된 USDC에 상응하는 토큰을 methodDetails.chainId사용하여에서 선택한 모든 Tempo 체인입니다.

  • solana - 서버 후원 요금만 부과 되는 mainnet 및 devnet 네트워크.

결제 수단의 블록체인 네트워크는 챌린지 방법과 일치해야 합니다. 공급자 지원은 커넥터 유형에 따라 다릅니다.

방법 Coinbase CDP 스트라이프(프라이빗)

evm

지원됨

지원됨

tempo

지원됨

지원됨

solana

지원되지 않음

지원됨

네트워크 요금 동의

블록체인 네트워크(가스) 요금은 챌린지 금액과 별개입니다. 챌린지는 methodDetails.feePayer 플래그를 통해 후원자를 알립니다.

  • methodDetails.feePayer=true - 판매자가 네트워크 요금을 후원합니다. buyerPaysGasFees는 아무런 효과가 없습니다.

  • methodDetails.feePayer=false 또는 없음 - 구매자가 지불 금액 외에도 지불 월렛의 네트워크 요금을 지불합니다. 이 비용은 챌린지 금액에 표시되지 않으므로 AgentCore 결제는를 설정한 경우에만 서명하며buyerPaysGasFees=true, 그렇지 않으면를 반환합니다ValidationException. tempo 메서드의 경우 판매자가 요금을 후원하지 않을 때마다이 동의가 필요합니다.

진행자가 트랜잭션을 브로드캐스트하고 가스를 지불하기 때문에 evm 메서드에는 수수료 동의가 필요하지 않습니다. solana 메서드는 현재 서버 후원 요금만 지원합니다.

제한 사항

  • AgentCore 결제는 ProcessPayment 호출당 정확히 하나의 챌린지를 충족합니다. 에 단일 헤더를 제공합니다wwwAuthenticateHeaders.

  • charge 의도 및 풀 모드만 지원됩니다.

  • MPP 챌린지는 수명이 짧습니다. 챌린지가 만료된 경우 AgentCore 결제는를 반환ValidationException하고 예산을 소비하지 않습니다. 유료 리소스를 다시 요청하여 새로운 챌린지를 가져온 다음 다시 시도하세요.

MPP 챌린지 검증 오류 및 해결 방법은 MPP 챌린지 오류를 참조하세요.

프레임워크 통합

오류 처리, 구성 옵션 및 기본 제공 도구를 포함한 전체 참조 문서는 프레임워크 통합을 참조하세요.

프레임워크 통합 유형 레퍼런스

에이전트 스트랜드

플러그인(후크 기반)

중단 처리, 구성 옵션, 기본 제공 도구

LangGraph

미들웨어(도구 호출 래핑)

오류 콜백, 허용 목록, 비동기 지원, 구성 옵션