Skip to main content
Oltre al pagamento diretto per richiesta API, Ace Data Cloud supporta anche il pagamento degli ordini della console tramite X402. Il protocollo principale del pagamento degli ordini e della chiamata API è lo stesso: la prima richiesta restituisce 402, il client firma PAYMENT-SIGNATURE, quindi riprova con la stessa richiesta. La differenza è che il pagamento degli ordini appartiene alle API della piattaforma e richiede un token dell’account; mentre la chiamata diretta dell’API AI di x402.acedata.cloud può usare solo X402, senza richiedere un API Token.

Preparare l’ordine

Accedi alla console Ace Data Cloud, seleziona l’ordine da pagare e annota l’ID dell’ordine. Se non hai ancora un ordine, puoi creare un ordine in attesa di pagamento nella pagina dei piani. Il prezzo dell’ordine fa fede a quanto mostrato nella pagina, mentre amount nella risposta X402 402 è la base finale per la firma.

Creare un token dell’account

Le richieste di pagamento degli ordini richiedono un token dell’account. Apri la pagina Token della piattaforma e crea un token nel formato platform-v1-.... Usa nelle richieste successive:
Il token dell’account è diverso dal normale API Token. Il normale API Token viene usato per consumare il credito API; il token dell’account viene usato per operare sulle risorse della piattaforma a nome del tuo account, ad esempio il pagamento degli ordini.

Attivare 402

Invia prima una richiesta senza PAYMENT-SIGNATURE:
Lo stato restituito è 402 e la risposta contiene accepts:
Il pagamento degli ordini utilizza x402 v2 ufficiale: x402Version è 2, network usa l’identificatore CAIP-2 e il campo dell’importo è amount. Risultato dell’esecuzione del programma che crea un ordine da 10 Credits e attiva 402:
I seguenti record di transazione sono campioni storici verificati in base alla vecchia politica; gli importi e gli hash delle transazioni sono mantenuti invariati. I nuovi ordini X402 non applicano più sconti sul metodo di pagamento; usa amount nella risposta 402 corrente come base per la firma e il pagamento.
Spiegazione dei risultati:
  • Dopo la creazione dell’ordine, lo stato è Pending e non è ancora stato effettuato alcun pagamento on-chain.
  • La prima richiesta pay/ non include PAYMENT-SIGNATURE, quindi restituisce HTTP 402.
  • accepts fornisce contemporaneamente Base exact e Solana exact; questo tutorial seleziona Base nelle sezioni successive.
  • Il prezzo al momento della creazione dell’ordine era 1.26; durante il periodo della vecchia politica di sconto per i pagamenti X402, l’importo effettivo firmato e regolato era 1.2 USDC, corrispondente a 1200000 atomic USDC.
Nota che resource qui è un campo restituito dal server e partecipa alla firma; il client non deve riscrivere autonomamente il protocollo, il percorso o l’ID dell’ordine al suo interno.

Firmare e riprovare

Il pagamento degli ordini può riutilizzare la funzione di firma di basso livello di @acedatacloud/x402-client o acedatacloud-x402. Di seguito è riportato un esempio TypeScript:
Risultato dell’esecuzione del programma dopo aver firmato e riprovato lo stesso ordine con Base exact:
Risultato della conferma on-chain:
Spiegazione del risultato:
  • status 200 indica che l’interfaccia di pagamento degli ordini della piattaforma ha accettato questa PAYMENT-SIGNATURE.
  • has_x_payment_response True indica che l’intestazione della risposta contiene una ricevuta PAYMENT-RESPONSE codificata in Base64.
  • settle_header.success=True e network=base indicano che il Facilitator ha completato il settlement su Base.
  • Lo stato finale dell’ordine è Finished, pay_way è X402 e pay_id contiene l’hash della transazione on-chain.
  • L’evento Transfer su BaseScan mostra che l’indirizzo di pagamento ha trasferito 1200000 USDC atomic all’indirizzo di incasso della piattaforma, ovvero 1.2 USDC.

Risposta di successo e ricevuta

Dopo che il pagamento dell’ordine è andato a buon fine, il corpo della risposta contiene le informazioni dell’ordine. La piattaforma includerà inoltre nell’intestazione della risposta PAYMENT-RESPONSE una settlement response codificata in Base64; dopo la decodifica, i campi comuni includono: Se è necessario effettuare una riconciliazione, si consiglia di salvare contemporaneamente l’ID dell’ordine, l’indirizzo del wallet pagatore, transaction e lo stato finale dell’ordine.

Note

  • Il pagamento dell’ordine richiede il token dell’account della piattaforma e non può essere completato soltanto con la firma del wallet X402.
  • amount utilizza USDC atomic units; 1200000 indica 1.2 USDC.
  • Non comporre autonomamente l’indirizzo di incasso o l’indirizzo dell’asset; fare riferimento a accepts nella risposta 402.
  • Se la stessa PAYMENT-SIGNATURE viene inviata ripetutamente, il Facilitator applicherà la protezione dal replay in base al nonce.

Risposta di pagamento non riuscito

Il primo HTTP 402 senza PAYMENT-SIGNATURE è una normale richiesta di pagamento e non indica un pagamento non riuscito. Gli errori di verifica o settlement dopo la firma mantengono comunque la stringa standard error come fallback di compatibilità e restituiscono una struttura di errore stabile in extensions.acedatacloud.paymentError:
Il client dovrebbe dare priorità alla localizzazione in base a code, mentre per code sconosciuti dovrebbe ripiegare sull’errore generico di pagamento non riuscito. charged è un campo a tre stati: false viene restituito solo quando il rifiuto avviene esplicitamente prima del settlement; l’assenza del campo indica che lo stato dell’addebito è sconosciuto e non può essere interpretata come “nessun addebito”. Dopo che l’ordine corrente entra in Failed, non è possibile riprovare lo stesso ordine; creare un nuovo ordine dopo aver corretto il problema del wallet. Non registrare né inviare la PAYMENT-SIGNATURE completa, la firma del wallet, il payload di autorizzazione, la diagnostica originale del Facilitator o le risposte RPC. Per l’analisi da parte dell’assistenza clienti sono necessari solo l’ID dell’ordine e il code di errore pubblico.