Skip to main content
X402 obejmuje HTTP, SDK, podpisy, Facilitator i transakcje on-chain. Podczas rozwiązywania problemów z podpisami lub rozliczeniami zaleca się potwierdzanie warstwa po warstwie w kolejności „publiczny punkt wejścia -> odpowiedź 402 -> SDK payment handler -> on-chain settlement”. Ten samouczek wyjaśnia metody sprawdzania każdej warstwy oraz wymienia typowe błędy.

Sprawdź publiczny punkt wejścia

Deklaracja możliwości Facilitator:
Jeśli zwracane są facilitator, supportedKinds i punkty końcowe protokołu, oznacza to, że metadane możliwości są prawidłowe. Wykrywanie zasobów API zostało wycofane; wywołuj bezpośrednio docelowe API i kieruj się odpowiedzią 402 w czasie rzeczywistym. Obsługiwane możliwości Facilitator:
Jeśli zwracane jest kinds, oznacza to, że punkt wejścia Facilitator działa prawidłowo.

Sprawdź 402 accepts

Wyślij nieuwierzytelnione żądanie, które nie spowoduje opłaty:
Sprawdź, czy zwrócone accepts zawiera sieć, której chcesz użyć. network jest identyfikatorem CAIP-2:
  • eip155:8453 + exact(Base)
  • eip155:8453 + upto(Base, rozliczanie postpaid)
  • eip155:1187947933 + exact(SKALE)
  • solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp + exact(Solana)
Jeśli docelowa sieć nie jest obecna, oznacza to, że to API lub bieżące środowisko nie ma skonfigurowanej odpowiedniej metody pobierania płatności X402.

Uruchom zaawansowane narzędzia weryfikacyjne X402Client

Repozytorium X402Client udostępnia zaawansowane narzędzia weryfikacyjne, które można wykorzystać do potwierdzenia wyboru odpowiedzi 402, generowania podpisów, paid retry i on-chain settlement. Wymagają one funded wallet, RPC, klucza prywatnego oraz zależności deweloperskich. W przypadku zwykłej integracji biznesowej zaleca się preferowanie SDK TypeScript lub Python; uruchamiaj te narzędzia tylko wtedy, gdy konieczne jest zlokalizowanie problemów z podpisem lub rozliczeniem on-chain. Adres repozytorium:https://github.com/AceDataCloud/X402Client
Base:
SKALE:
Solana:
Narzędzia weryfikacyjne zazwyczaj wypisują:
  1. Odpowiedź 402 pierwszego żądania.
  2. Wybrane payment requirement.
  3. Skrót podpisanego PAYMENT-SIGNATURE.
  4. Status HTTP i treść odpowiedzi po ponowieniu próby.
  5. Transakcję on-chain settlement lub przyczynę błędu Facilitator w przypadku niepowodzenia.
Nie wysyłaj kluczy prywatnych ani pełnego PAYMENT-SIGNATURE do systemu logów ani w zgłoszeniach. Przykład wyników weryfikacji publicznego API:
Wyjaśnienie:
  • SKALE exact, Base exact, Solana exact i Base upto wszystkie zakończyły paid retry z HTTP 402 do HTTP 200.
  • Transakcję on-chain dla SKALE exact można sprawdzić w SKALE explorer, a kwota rozliczenia wynosi 0.095215 USDC.
  • Transakcję on-chain dla Base exact można sprawdzić w BaseScan, a kwota rozliczenia wynosi 95215 atomic USDC.
  • Limit podpisu Base upto wynosi 95215 atomic USDC, ale rzeczywisty on-chain settlement to 3 atomic USDC, co oznacza, że rozliczanie postpaid pobiera opłatę według rzeczywistego użycia.
  • Ścieżka Solana potwierdziła paid retry i wynik modelu. Publiczne RPC może podlegać ograniczeniu szybkości; gdy wymagane jest ścisłe uzgodnienie on-chain, użyj własnego Solana RPC lub potwierdź podpis transakcji na podstawie rekordów rozliczeniowych po stronie platformy.

SDK smoke test

Zaawansowane narzędzia weryfikacyjne służą do sprawdzania podpisów i rozliczeń on-chain. Strona biznesowa powinna również wykonać SDK smoke test, aby potwierdzić, że kod aplikacji potrafi automatycznie obsłużyć 402 przez payment handler. Poniżej pokazano tylko kluczowe fragmenty; pełny kod wymaga uzupełnienia wallet, provider i import. TypeScript:
Python:
Jeśli model zwróci stały ciąg zgodnie z wymaganiem, oznacza to, że SDK, payment handler, Gateway, Facilitator i docelowe API są połączone. Powyższe dwa smoke testy używają SKALE exact. SKALE obecnie udostępnia tylko exact, rozliczane według stałej kwoty wycenionej przez 402 i nieobniżane wraz z rzeczywistym zużyciem tokenów. Uzupełnianie czatu należy do scenariuszy rozliczanych według tokenów; przy wdrożeniu produkcyjnym zaleca się przejście na Base i przekazywanie preferScheme: 'upto', aby rozliczać się według rzeczywistego użycia. Wyniki uruchomienia programu smoke test SDK:
Opis wyników:
  • TypeScript SDK automatycznie obsługuje 402, podpisywanie i ponawianie przez createX402PaymentHandler, ostatecznie uzyskując ADC_TS_SDK_X402_OK.
  • Python SDK realizuje ten sam przepływ przez create_x402_payment_handler, ostatecznie uzyskując ADC_PY_SDK_X402_OK.
  • Oba smoke testy używają payera SKALE 0xd0479FA9FD8C678303d477433d24C15e3723CC1C.
  • Obiekt zwracany przez Python SDK jest typu dict; w przykładzie można użyć res["choices"][0]["message"]["content"], aby odczytać treść.

E2E płatności za zamówienie

Płatności za zamówienia używają platformowego API platform.acedata.cloud i wymagają tokena konta platformy. Pełny przepływ jest następujący: utworzenie zamówienia Pending, wywołanie 402 przez POST /api/v1/orders/{order_id}/pay/, a następnie ponowienie z PAYMENT-SIGNATURE. Przykład wyników weryfikacji płatności za zamówienie o małej wartości:
Poniższe rekordy transakcji są historycznymi próbkami rzeczywistych testów w ramach starej polityki; kwoty i hashe transakcji zachowano w oryginalnej postaci. Nowe zamówienia X402 nie mają już zniżek zależnych od metody płatności; jako podstawy podpisu i płatności należy używać amount z bieżącej odpowiedzi 402.
Opis wyników:
  • Po utworzeniu zamówienia jego stan to Pending, a cena to 1.26.
  • Pierwsze żądanie pay/ zwraca HTTP 402; w accepts znajdują się Base exact i Solana exact, a obie kwoty wynoszą 1200000 atomic USDC.
  • Po ponowieniu z Base PAYMENT-SIGNATURE zwracany jest HTTP 200, stan zamówienia zmienia się na Finished, a pay_way to X402.
  • Po zdekodowaniu PAYMENT-RESPONSE wyświetlane są success=True, network=base oraz ten sam hash transakcji.
  • Na BaseScan stan transakcji to 1, a kwota transferu wynosi 1200000 atomic USDC, czyli 1.2 USDC.
  • Cena utworzenia 1.26 została opłacona w okresie starej polityki rabatów płatności X402, a końcowa kwota podpisu i rozliczenia wynosi 1.2 USDC.
Jeśli płatność za zamówienie nie zawiera Authorization: Bearer {platform_token} lub zamówienie nie należy do bieżącego konta, zakończy się niepowodzeniem na warstwie uprawnień platformy; różni się to od bezkontowego API X402 wywoływanego bezpośrednio przez x402.acedata.cloud.

Częste błędy

Lista kontrolna Base upto

upto jest obecnie dostępne tylko na Base (eip155:8453). SKALE udostępnia tylko exact. Ponieważ podpis upto wiąże więcej parametrów EVM typed data, podczas integracji należy szczególnie potwierdzić, że pola czasu rzeczywistego w odpowiedzi 402 są w pełni zgodne z podpisem klienta.
Jeśli Base upto zwraca invalid_upto_evm_payload_invalid_signature, w pierwszej kolejności sprawdź:
  1. extra.chainId (powinno wynosić 8453) w elemencie eip155:8453 + upto zwróconym przez API.
  2. extra.facilitatorAddress zwrócone przez API.
  3. Adres facilitatora Base upto zwrócony przez https://facilitator.acedata.cloud/supported.
  4. Permit2 domain, spender, kontrakt USDC i konto podpisujące.
  5. Czy portfel wykonał już approve Permit2 dla Base USDC.
Digest podpisu upto jednocześnie wiąże Permit2 domain, chain ID, spender, adres odbiorcy, adres facilitatora i validAfter. Jeśli dowolna pozycja jest niezgodna, Facilitator odzyska nieprawidłowego signera, a następnie zwróci invalid signature. Jeśli wszystkie są zgodne, ale nadal zwracane jest 402, w kolejnym kroku sprawdź Permit2 allowance; przy braku autoryzacji zwracane jest PERMIT2_ALLOWANCE_REQUIRED.

Zapisywanie informacji weryfikacyjnych

Co najmniej w ramach jednej pełnej weryfikacji zapisz:
  • ścieżkę API i podsumowanie treści żądania;
  • wybrane network i scheme;
  • maxAmountRequired;
  • adres portfela płatnika;
  • końcowy status HTTP;
  • wynik modelu lub identyfikator zadania w odpowiedzi;
  • link do transakcji rozliczeniowej;
  • identyfikator śledzenia Gateway lub identyfikator rekordu użycia platformy.
Nie zapisuj kluczy prywatnych, pełnego PAYMENT-SIGNATURE, pełnego podpisu EIP-712 ani frazy seed.

Ustrukturyzowane błędy płatności

Błędy X402 po podpisaniu zwracają w extensions.acedatacloud.paymentError stabilny code, bezpieczne parametry interpolacji, etap i flagę ponawiania. Przy rozwiązywaniu problemów preferuj tę strukturę, nie analizuj angielskiego error najwyższego poziomu i nie wymagaj od użytkowników podawania podpisu portfela ani oryginalnego tekstu symulacji on-chain.
  • charged: false: weryfikacja została wyraźnie odrzucona przed rozliczeniem, w tym przypadku nie zainicjowano obciążenia.
  • Brak charged: wynik jest nieznany lub proces wszedł już w etap rozliczenia; najpierw sprawdź zamówienie i status on-chain, bezpośrednie ponawianie płatności jest zabronione.
  • settlement_pending: na razie nie ponawiaj płatności; najpierw odśwież zamówienie lub skontaktuj się ze wsparciem.
  • Nierozpoznany code: traktuj jako payment_failed i zachowaj publiczny kod techniczny na potrzeby wyszukiwania przez obsługę klienta.