Skip to main content
Il Facilitator è il componente di regolamento server-side nel link X402. Il client è responsabile della firma, il Gateway o il tuo server sono responsabili della chiamata ai metodi /verify e /settle del Facilitator. L’indirizzo del Facilitator di produzione di Ace Data Cloud è:
Repository del codice sorgente: https://github.com/AceDataCloud/FacilitatorX402

Convenzioni v2 wire

Il link X402 di Ace Data Cloud utilizza completamente la versione ufficiale x402 v2 e non accetta più l’intestazione X-Payment v1. Durante l’integrazione, è necessario prestare attenzione a tre punti:
  • L’intestazione della richiesta è PAYMENT-SIGNATURE, il cui valore è un envelope JSON codificato in base64.
  • Il livello superiore dell’envelope deve essere x402Version: 2 e dichiarare l’oggetto accepted con lo scheme e il network scelti.
  • Il network utilizza l’identificatore CAIP-2 (ad esempio eip155:8453), non è possibile utilizzare abbreviazioni come base.
Struttura dell’envelope:
La risposta 402, oltre al corpo JSON, includerà anche un’intestazione di risposta PAYMENT-REQUIRED, il cui valore è la stessa sfida codificata in base64, per facilitare al client la lettura dei requisiti di pagamento senza dover analizzare il corpo.

Interfacce principali

GET /supported

Visualizza le reti e gli schemi supportati:
Esempio di risposta:
Spiegazione dei risultati:
  • Il network utilizza l’identificatore CAIP-2, non abbreviazioni come base, skale.
  • /supported indica che il Facilitator ha le capacità di verifica e regolamento corrispondenti.
  • Base, SKALE e Solana supportano exact; upto è attualmente disponibile solo su Base.
  • signers sono gli indirizzi utilizzati dal Facilitator per inviare le transazioni di regolamento.
  • Se un’API specifica consente queste opzioni, è comunque soggetta a quanto indicato in accepts della risposta 402 di quell’API.

POST /verify

Verifica se il PAYMENT-SIGNATURE fornito dal client soddisfa un determinato requisito di pagamento. Corpo della richiesta:
Il campo paymentRequirements della v2 include scheme, network, asset, amount, payTo, maxTimeoutSeconds e extra, il campo dell’importo è amount. La risposta API 402 includerà anche maxAmountRequired per consentire al client di leggere il limite, ma non fa parte dei campi del corpo della richiesta del Facilitator. Risposta di successo:
L’intestazione di risposta PAYMENT-RESPONSE per il pagamento degli ordini di produzione decodificata contiene il risultato del regolamento. Risultato dell’esecuzione del pagamento dell’ordine su Base:
Spiegazione dei risultati:
  • success=True indica che il regolamento del Facilitator è andato a buon fine.
  • transaction è l’hash della transazione sulla blockchain, l’pay_id dell’ordine è scritto anche con lo stesso valore.
  • Su explorer è possibile vedere il trasferimento di 1200000 atomic USDC.
  • errorReason=None indica che non ci sono stati errori di business in questo regolamento.
Le verifiche fallite restituiscono solitamente anche un HTTP 200, ma isValid sarà false. Il lato business dovrebbe leggere invalidReason, piuttosto che limitarsi a controllare il codice di stato HTTP.

POST /settle

Regola l’autorizzazione già verificata sulla blockchain. Il corpo della richiesta è sostanzialmente identico a quello di /verify. La differenza per upto è che: paymentRequirements.amount viene riscritto come l’importo effettivo del regolamento; il limite di firma è registrato dal Facilitator nella fase di verifica, e durante il regolamento si verifica che l’importo effettivo non superi tale limite. Risposta di successo:
Se l’importo effettivo di upto è 0, transaction potrebbe essere una stringa vuota, indicando che non è necessaria alcuna transazione sulla blockchain.

Come utilizzare il Facilitator con Ace Data Cloud Gateway

Il flusso del Gateway API di Ace Data Cloud è il seguente:
  1. Il client effettua la prima richiesta API, senza Authorization e PAYMENT-SIGNATURE.
  2. Il Gateway calcola il prezzo stimato della richiesta, restituendo 402 e accepts.
  3. Dopo la firma, il client riprova con PAYMENT-SIGNATURE.
  4. Il Gateway decodifica PAYMENT-SIGNATURE, selezionando il requisito di pagamento corrispondente.
  5. Il Gateway chiama il Facilitator /verify.
  6. Dopo il successo di /verify, il Gateway consente la richiesta all’API di destinazione.
  7. Dopo la risposta dell’API di destinazione, il Gateway chiama il Facilitator /settle nella fase di /record.
  8. Il Gateway scrive l’hash della transazione sulla blockchain nei metadati della registrazione. exact nella fase 7 per il saldo dell’importo della firma; upto nella fase 7 scrive amount in base all’uso reale, quindi salda l’importo effettivo.

Come integrare la propria API

Se desideri che la tua API supporti X402, puoi implementare questa struttura:
  1. Prepara paymentRequirements per ogni interfaccia a pagamento, includendo rete, importo, indirizzo di ricezione, indirizzo dell’asset e dominio di firma.
  2. Se la richiesta non ha PAYMENT-SIGNATURE, restituisci HTTP 402 e accepts.
  3. Se la richiesta ha PAYMENT-SIGNATURE, decodifica in Base64 per ottenere paymentPayload.
  4. Chiama il Facilitator /verify.
  5. Dopo una verifica riuscita, esegui la logica di business.
  6. Dopo il successo dell’attività, chiama il Facilitator /settle.
  7. Salva payer, transaction, amount, network per la riconciliazione.
Il server deve utilizzare i propri paymentRequirements per chiamare /verify e /settle, non fidarti degli importi, degli indirizzi di ricezione o degli indirizzi degli asset restituiti dal client.

Protezione contro la ripetizione

Il Facilitator registrerà il nonce. Le autorizzazioni con lo stesso nonce non possono essere verificate e saldate nuovamente. Questo significa:
  • Il client dovrebbe firmare un nuovo envelope ad ogni richiesta;
  • Se /settle ha inviato una transazione ma non è ancora confermata, puoi riprovare /settle con lo stesso nonce per una riconciliazione idempotente;
  • Non memorizzare lo stesso PAYMENT-SIGNATURE per utilizzarlo in più chiamate API.

Errori comuni