Proxy-seller

Recupera l'accesso

Updated:

Hai perso il token di accesso di un ordine? Dimostra di essere il titolare del portafoglio utilizzato per il pagamento firmando un messaggio monouso e ottieni tutti gli ordini del portafoglio con i nuovi token di accesso, i pagamenti ancora in corso e il saldo.

I vecchi token continuano a funzionare a meno che non li revochi.

Il flusso

  1. Accetta una sfida

    POST /wallet/challenge

    Restituisce un messaggio di testo (EIP-4361) per il tuo portafoglio.

  2. Firma il messaggio

    personal_sign (EIP-191) di message esattamente come ricevuto. La firma non comporta alcun trasferimento di fondi.

  3. Recupera

    POST /wallet/recover

    Restituisce gli ordini del portafoglio con i nuovi token di accesso.

Accetta una sfida

POSThttps://proxy-seller.com/api/x402/v1/wallet/challenge

Corpo della richiesta

Nome

Tipo

Descrizione

indirizzo

Stringa

Obbligatorio. Indirizzo del portafoglio, 0x + 40 esadecimali. Un indirizzo con maiuscole e minuscole deve avere un checksum EIP-55 valido

scopo

Stringa

recover (impostazione predefinita) oppure withdraw (Prelevare il saldo)

Viene inviata una sfida a un indirizzo qualsiasi: la risposta non indica se l’indirizzo abbia ordini.

Esempio

POST https://proxy-seller.com/api/x402/v1/wallet/challenge
{
    "address": "0x1111111111111111111111111111111111111111",
    "purpose": "recover"
}

Risposta

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

Una sfida ha una durata di 5 minuti e può essere utilizzata una sola volta. I portafogli basati su smart contract sono supportati tramite EIP-1271 quando contract_wallets è eip1271.

Recupera

POSThttps://proxy-seller.com/api/x402/v1/wallet/recover

Corpo della richiesta

Nome

Tipo

Descrizione

challenge_id

Stringa

Obbligatorio. ID di una sfida con purpose: recover

firma

Stringa

Obbligatorio. Firma di message, 0x hex: 65 byte per un portafoglio standard, di più per un portafoglio basato su smart contract

limite

Numero intero

Numero di voci per pagina: da 1 a 200, 50 per impostazione predefinita

offset

Numero intero

Numero di pagina, a partire da 0

revoke_existing

Booleano

Revoca tutti i token di questo portafoglio emessi prima della creazione di questa sfida

Ogni pagina richiede una nuova sfida. Invia revoke_existing: true solo nella prima pagina: in una pagina successiva ciò annullerebbe i gettoni appena ricevuti nelle pagine precedenti.

Esempio

POST https://proxy-seller.com/api/x402/v1/wallet/recover
{
    "challenge_id": "chl_01JZ9E5F7G9H1J3K5M7N9P1Q3R",
    "signature": "0x9a7c…1c",
    "limit": 50,
    "offset": 0
}

Risposta

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

Nome

Descrizione

account

exists, status (active oppure blocked), balance_usd, topup_url, withdraw_url

ordini

Ordini del portafoglio, in ordine cronologico (dal più recente al più vecchio), con i nuovi token. Non viene emesso alcun token quando il periodo di validità dell’ordine è scaduto (90 giorni dopo la scadenza)

pending_payments

Pagamenti il cui esito non è ancora noto o che sono in fase di revisione: {nonce, network, status, operation_id, kind, order_id, payment_state, amount_atomic, status_changed_at}. Non pagare di nuovo per essi

ricariche

Fino a 20 ricariche recenti con nuovi gettoni

prelievi

Fino a 20 richieste di prelievo più recenti dal portafoglio, in ordine cronologico (dalla più recente alla più vecchia): {id, status, amount_usd, address, network, created_at, tx_hash, sent_at, confirmed_at}. status: requested, approved, sent, done oppure rejected (Prelevare il saldo)

impaginazione

{limit, offset, total}

avviso

Solo per portafogli bloccati: gli ordini sono elencati senza token

401: Accesso non autorizzato — la firma non proviene dall’indirizzo della sfida.

404: Pagina non trovata

{
    "error": "not_found",
    "message": "Challenge not found",
    "retryable": false,
    "retry_action": "abandon",
    "detail": "challenge is unknown, expired or already used"
}

La sfida è sconosciuta, scaduta, già utilizzata o assegnata per withdraw. Prendine uno nuovo.

On this page