Skip to main content
X402 omfattar HTTP, SDK, signaturer, Facilitator och on-chain-transaktioner. Vid felsökning av signatur- eller avräkningsproblem rekommenderas att bekräfta lager för lager i ordningen ”offentlig ingång -> 402-svar -> SDK payment handler -> on-chain settlement”. Den här handledningen beskriver kontrollmetoderna för varje lager och listar vanliga fel.

Kontrollera den offentliga ingången

Facilitator-kapacitetsdeklaration:
Om facilitator, supportedKinds och protokolländpunkter returneras, betyder det att kapacitetsmetadata fungerar normalt. API-resursupptäckt har avvecklats; anropa mål-API:et direkt och utgå från 402-svaret i realtid. Facilitator-stödda kapaciteter:
Om kinds returneras, betyder det att Facilitator-ingången fungerar normalt.

Kontrollera 402 accepts

Skicka en oautentiserad begäran som inte debiteras:
Kontrollera om accepts i svaret innehåller nätverket som du vill använda. network är en CAIP-2-identifierare:
  • eip155:8453 + exact (Base)
  • eip155:8453 + upto (Base, efterdebiterad mätning)
  • eip155:1187947933 + exact (SKALE)
  • solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp + exact (Solana)
Om målnätverket saknas betyder det att detta API eller den aktuella miljön inte har konfigurerats med motsvarande X402-betalningsmetod.

Kör X402Client avancerade verifieringsverktyg

X402Client-repositoriet tillhandahåller avancerade verifieringsverktyg som kan användas för att bekräfta val av 402-svar, signaturgenerering, paid retry och on-chain settlement. De kräver en funded wallet, RPC, privat nyckel och utvecklingsberoenden. För vanlig verksamhetsintegration rekommenderas att i första hand använda TypeScript- eller Python-SDK:n; kör dessa verktyg först när du behöver lokalisera problem med signaturer eller on-chain-avräkning. Repositorieadress: https://github.com/AceDataCloud/X402Client
Base:
SKALE:
Solana:
Verifieringsverktygen skriver vanligtvis ut:
  1. 402-svaret för den första begäran.
  2. Det valda payment requirement.
  3. Sammanfattningen av den signerade PAYMENT-SIGNATURE.
  4. HTTP-statusen och svarskroppen efter retry.
  5. On-chain settlement transaction, eller Facilitator-felorsaken vid misslyckande.
Skicka inte privata nycklar eller fullständiga PAYMENT-SIGNATURE till loggsystem eller supportärenden. Exempel på verifieringsresultat för publikt API:
Förklaring:
  • SKALE exact, Base exact, Solana exact och Base upto har alla slutfört paid retry från HTTP 402 till HTTP 200.
  • On-chain-transaktionen för SKALE exact kan kontrolleras i SKALE explorer, och avräkningsbeloppet är 0.095215 USDC.
  • On-chain-transaktionen för Base exact kan kontrolleras i BaseScan, och avräkningsbeloppet är 95215 atomic USDC.
  • Signaturgränsen för Base upto är 95215 atomic USDC, men den faktiska on-chain settlement är 3 atomic USDC, vilket visar att efterdebiterad mätning debiterar enligt faktisk användning.
  • Solana-sökvägen har bekräftat paid retry och modellutdata. Publik RPC kan vara rate-limitad; använd en egen Solana RPC eller bekräfta transaktionssignaturen via avräkningsposter på plattformssidan när strikt on-chain-avstämning krävs.

SDK smoke test

Avancerade verifieringsverktyg används för att kontrollera signaturer och on-chain-avräkning. Verksamhetssidan bör även utföra SDK smoke test för att bekräfta att applikationskoden automatiskt kan hantera 402 via payment handler. Nedan visas endast kärnfragmenten; komplett kod behöver kompletteras med wallet, provider och import. TypeScript:
Python:
Om modellen returnerar den fasta strängen enligt kravet betyder det att SDK, payment handler, Gateway, Facilitator och mål-API:et är sammankopplade. De två ovanstående smoke-testerna använder SKALE exact. SKALE erbjuder för närvarande endast exact, som avräknas med det fasta beloppet i 402-offerten och inte sänks med den faktiska tokenanvändningen. Chattkomplettering är ett scenario som mäts per token; vid produktionsintegration rekommenderas att byta till Base och skicka preferScheme: 'upto', för avräkning enligt faktisk användning. Programkörningsresultat för SDK smoke test:
Resultatbeskrivning:
  • TypeScript SDK hanterar automatiskt 402, signering och återförsök via createX402PaymentHandler, och erhåller slutligen ADC_TS_SDK_X402_OK.
  • Python SDK slutför samma flöde via create_x402_payment_handler, och erhåller slutligen ADC_PY_SDK_X402_OK.
  • Båda smoke-testerna använder SKALE payer 0xd0479FA9FD8C678303d477433d24C15e3723CC1C.
  • Python SDK:s retur-objekt är en dict, och i exemplet kan res["choices"][0]["message"]["content"] användas för att läsa innehållet.

E2E för orderbetalning

Orderbetalning använder plattforms-API:t på platform.acedata.cloud och kräver en plattformskontotoken. Det fullständiga flödet är: skapa en Pending-order, utlös 402 med POST /api/v1/orders/{order_id}/pay/, och försök sedan igen med PAYMENT-SIGNATURE. Exempel på verifieringsresultat för betalning av en mindre order:
Följande transaktionsposter är historiska faktiskt testade exempel enligt den gamla policyn; belopp och transaktionshashar behålls oförändrade. Nya X402-order har inte längre rabatt beroende på betalningsmetod; använd amount i denna 402-respons som grund för signering och betalning.
Resultatbeskrivning:
  • Efter att ordern skapats är orderstatusen Pending och priset är 1.26.
  • Den första pay/-begäran returnerar HTTP 402. accepts innehåller Base exact och Solana exact, och beloppen är båda 1200000 atomic USDC.
  • Efter återförsök med Base PAYMENT-SIGNATURE returneras HTTP 200, orderstatusen ändras till Finished och pay_way är X402.
  • Efter avkodning av PAYMENT-RESPONSE visas success=True, network=base, samt samma transaktionshash.
  • På BaseScan är transaktionsstatusen 1, överföringsbeloppet är 1200000 atomic USDC, alltså 1.2 USDC.
  • Skapandepriset 1.26 betalades under den gamla X402-betalningsrabattpolicyn, och det slutliga signerade och avräknade beloppet är 1.2 USDC.
Om orderbetalningen saknar Authorization: Bearer {platform_token}, eller om ordern inte tillhör det aktuella kontot, misslyckas den i plattformens behörighetslager; detta skiljer sig från det kontolösa X402 API:t som direkt anropar x402.acedata.cloud.

Vanliga fel

Checklista för Base upto

upto erbjuds för närvarande endast på Base (eip155:8453). SKALE erbjuder endast exact. Eftersom upto-signaturen binder fler EVM typed data-parametrar, bör man vid integration särskilt bekräfta att realtidsfälten i 402-responsen exakt överensstämmer med klientens signatur.
Om Base upto returnerar invalid_upto_evm_payload_invalid_signature, kontrollera i första hand:
  1. extra.chainId i API:ts returnerade eip155:8453 + upto-post (bör vara 8453).
  2. extra.facilitatorAddress som returneras av API:t.
  3. Base upto facilitator-adressen som returneras av https://facilitator.acedata.cloud/supported.
  4. Permit2 domain, spender, USDC-kontraktet och signeringskontot.
  5. Om plånboken redan har godkänt Permit2 för Base USDC.
Digest för upto-signaturen binder samtidigt Permit2 domain, chain ID, spender, mottagaradress, facilitator-adress och validAfter. Om någon uppgift inte överensstämmer återställer Facilitator fel signer och returnerar därmed invalid signature. Om dessa alla överensstämmer men 402 ändå returneras, kontrollera sedan Permit2 allowance; vid uteblivet godkännande returneras PERMIT2_ALLOWANCE_REQUIRED.

Spara verifieringsinformation

En fullständig verifiering sparar minst:
  • API-sökväg och sammanfattning av begärandetexten;
  • valt network och scheme;
  • maxAmountRequired;
  • betalarens plånboksadress;
  • slutlig HTTP-status;
  • modellutdata eller uppgifts-ID i svaret;
  • länk till settlement transaction;
  • Gateway trace ID eller plattformens användningspost-ID.
Spara inte privata nycklar, fullständig PAYMENT-SIGNATURE, fullständig EIP-712 signature eller seed phrase.

Strukturerade betalningsfel

X402-fel efter signering returnerar stabil code, säkra interpoleringsparametrar, fas och återförsöksflagga i extensions.acedatacloud.paymentError. Prioritera felsökning med denna struktur, analysera inte toppnivåns engelska error och be inte heller användare att tillhandahålla plånbokssignaturer eller ursprunglig on-chain-simuleringstext.
  • charged: false: verifieringen avvisades uttryckligen före settlement, ingen debitering initierades denna gång.
  • Utan charged: resultatet är okänt eller har redan gått in i settlement-fasen, kontrollera först order- och on-chain-status, direkt upprepad betalning är förbjuden.
  • settlement_pending: gör inte om betalningen ännu, uppdatera först ordern eller kontakta support.
  • Oidentifierad code: hantera som payment_failed och behåll offentlig teknisk kod för kundtjänstsökning.