접근 권한 복구
Updated:
주문의 액세스 토큰을 분실하셨나요? 일회성 메시지에 서명하여 결제용 지갑의 소유자임을 증명하면, 새로운 액세스 토큰이 부여된 해당 지갑의 모든 주문 내역과 진행 중인 결제 내역, 잔액을 확인할 수 있습니다.
기존 토큰은 취소하지 않는 한 계속 사용할 수 있습니다.
작업 흐름
도전 과제 받기
POST /wallet/challenge지갑에 대한 텍스트 메시지(EIP-4361)를 반환합니다.
메시지에 서명하세요
personal_sign(EIP-191)의message받은 그대로입니다. 서명만으로는 자금이 이체되지 않습니다.복구
POST /wallet/recover새로운 액세스 토큰이 포함된 지갑의 주문을 반환합니다.
도전 과제 받기
요청 본문
이름 | 유형 | 설명 |
|---|---|---|
주소 | 문구 | 필수. 지갑 주소, |
목적 | 문구 |
|
어떤 주소에든 도전이 발령됩니다: 응답을 통해 해당 주소에 명령이 있는지 여부는 알 수 없습니다.
예시
POST https://proxy-seller.com/api/x402/v1/wallet/challenge
{
"address": "0x1111111111111111111111111111111111111111",
"purpose": "recover"
}답변
200: OK
{
"challenge_id": "chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
"address": "0x1111111111111111111111111111111111111111",
"purpose": "recover",
"message": "proxy-seller.com wants you to sign in with your Ethereum account:\n0x1111111111111111111111111111111111111111\n\nRecover access to orders paid from this wallet at Proxy-Seller. Signing does not move funds.\n\nURI: https://proxy-seller.com/api/x402/v1/wallet/recover\nVersion: 1\nChain ID: 8453\nNonce: sDYRsY6sbhBxxPSC\nIssued At: 2026-11-02T12:00:00Z\nExpiration Time: 2026-11-02T12:05:00Z\nRequest ID: chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
"expires_at": "2026-11-02T12:05:00Z",
"signature": {
"type": "eip191_personal_sign",
"contract_wallets": "eip1271"
}
}챌린지는 5분 동안 유효하며 한 번만 사용할 수 있습니다. EIP-1271을 통해 스마트 계약 지갑이 지원되며, contract_wallets is eip1271.
복구
요청 본문
이름 | 유형 | 설명 |
|---|---|---|
challenge_id | 문구 | 필수. 챌린지의 ID는 |
서명 | 문구 | 필수. 서명: |
limit | 정수 | 페이지당 항목 수: 1~200개, 기본값은 50개 |
오프셋 | 정수 | 페이지 오프셋, 0부터 |
revoke_existing | 부울 | 이 챌린지가 생성되기 전에 이 지갑에서 발행된 모든 토큰을 취소하십시오. |
모든 페이지에는 새로운 과제가 필요합니다. 보내주세요 revoke_existing: true 첫 번째 페이지에서만 해당됩니다: 이후 페이지에서는 이전 페이지에서 방금 획득한 토큰이 취소됩니다.
예시
POST https://proxy-seller.com/api/x402/v1/wallet/recover
{
"challenge_id": "chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
"signature": "0x9a7c…1c",
"limit": 50,
"offset": 0
}답변
200: OK
{
"wallet": "0x1111111111111111111111111111111111111111",
"network": "eip155:8453",
"account": {
"type": "wallet",
"exists": true,
"status": "active",
"balance_usd": "6.40",
"email_attached": false,
"topup_url": "https://proxy-seller.com/api/x402/v1/topup",
"withdraw_url": "https://proxy-seller.com/api/x402/v1/wallet/withdraw"
},
"orders": [
{
"order_id": "ord_01JZ8Q7K5N2R4T6V8X0Z2B4D6F",
"status": "active",
"payment_state": "settled",
"summary": "2x IPv4 US, 30 days",
"amount_usd": "3.60",
"created_at": "2026-11-02T10:01:12Z",
"expires_at": "2026-12-02T23:59:59Z",
"url": "https://proxy-seller.com/api/x402/v1/orders/ord_01JZ8Q7K5N2R4T6V8X0Z2B4D6F",
"access_token": "x402_Nf5gT2hY8jU4kI1oL7pA3sD9fG6hJ0kL2zX5cV8bN4m",
"token_type": "Bearer"
}
],
"pending_payments": [],
"topups": [
{
"id": "tup_01JZ9D4E6F8G0H2J4K6M8N0P2Q",
"status": "credited",
"payment_state": "settled",
"amount_usd": "10.00",
"created_at": "2026-11-02T11:20:31Z",
"url": "https://proxy-seller.com/api/x402/v1/topup/tup_01JZ9D4E6F8G0H2J4K6M8N0P2Q",
"access_token": "x402_Rt6yU1iO7pA2sD8fG3hJ9kL4zX0cV5bN6mQ1wE7rT2y",
"token_type": "Bearer"
}
],
"withdrawals": [
{
"id": "wdr_01JZ9E8H0J2K4M6N8P0Q2R4S6T",
"status": "done",
"amount_usd": "6.40",
"address": "0x1111111111111111111111111111111111111111",
"network": "eip155:8453",
"created_at": "2026-12-03T09:14:22Z",
"tx_hash": "0x5c3e8a1f0b7d4e2c9a6f1b8d3e0c7a4f2b9e6d1c8a5f3e0b7d4c1a9f6e3b8d2c",
"sent_at": "2026-12-03T15:40:05Z",
"confirmed_at": "2026-12-03T15:43:10Z"
}
],
"pagination": {
"limit": 50,
"offset": 0,
"total": 1
}
}이름 | 설명 |
|---|---|
계정 |
|
주문 | 지갑 주문 내역은 최신 순으로 표시되며, 새로운 토큰이 포함됩니다. 주문의 접근 기간이 만료된 경우(만료일로부터 90일 후)에는 토큰이 발행되지 않습니다. |
pending_payments | 결제 결과가 아직 확정되지 않았거나 검토 중인 결제: |
topups | 최신 토큰을 포함한 최대 20건의 충전 내역 |
인출 | 지갑의 최근 인출 요청 20건(가장 최근 건부터 순서대로): |
페이지 나누기 |
|
참고 | 차단된 지갑 전용: 주문 목록에 토큰이 표시되지 않습니다. |
401: 접근 권한 없음 — 이 서명은 챌린지 주소가 아닙니다.
404: 찾을 수 없음
{
"error": "not_found",
"message": "Challenge not found",
"retryable": false,
"retry_action": "abandon",
"detail": "challenge is unknown, expired or already used"
}이 과제는 알 수 없거나, 만료되었거나, 이미 사용되었거나, 다음을 위해 발급된 것입니다. withdraw. 새 것을 구하세요.