Vérifier l’entrée publique
Déclaration des capacités du Facilitator :facilitator, supportedKinds et les points de terminaison du protocole sont renvoyés, les métadonnées de capacité sont normales. La découverte des ressources API a été retirée ; appelez directement l’API cible et référez-vous à la réponse 402 en temps réel.
Capacités prises en charge par le Facilitator :
kinds est renvoyé, l’entrée du Facilitator fonctionne normalement.
Vérifier les accepts de 402
Envoyez une requête non authentifiée qui ne sera pas facturée :
accepts renvoyés contiennent le réseau que vous souhaitez utiliser. network est un identifiant CAIP-2 :
eip155:8453+exact(Base)eip155:8453+upto(Base, mesure postérieure)eip155:1187947933+exact(SKALE)solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp+exact(Solana)
Exécuter les outils avancés de validation X402Client
Le dépôt X402Client fournit des outils avancés de validation, qui peuvent être utilisés pour confirmer la sélection de réponse 402, la génération de signatures, le paid retry et le settlement on-chain. Ils nécessitent un portefeuille approvisionné, un RPC, une clé privée et des dépendances de développement. Pour une intégration métier normale, il est recommandé de privilégier le SDK TypeScript ou Python ; exécutez ces outils uniquement lorsqu’il est nécessaire de localiser des problèmes de signature ou de règlement on-chain. Adresse du dépôt : https://github.com/AceDataCloud/X402Client- La réponse 402 de la première requête.
- Le payment requirement sélectionné.
- Le résumé du
PAYMENT-SIGNATUREaprès signature. - Le statut HTTP et le corps de réponse après nouvelle tentative.
- La transaction de settlement on-chain, ou la cause de l’erreur Facilitator en cas d’échec.
PAYMENT-SIGNATURE complets vers le système de logs ou dans les tickets.
Exemple de résultats de validation de l’API publique :
exactde SKALE,exactde Base,exactde Solana etuptode Base ont tous effectué un paid retry de HTTP 402 à HTTP 200.- La transaction on-chain de
exactsur SKALE peut être consultée dans le SKALE explorer, et le montant du règlement est de0.095215USDC. - La transaction on-chain de
exactsur Base peut être consultée dans BaseScan, et le montant du règlement est de95215atomic USDC. - La limite de signature de
uptosur Base est de95215atomic USDC, mais le settlement on-chain réel est de3atomic USDC, ce qui indique que la mesure postérieure facture selon l’utilisation réelle. - Le chemin Solana a confirmé le paid retry et la sortie du modèle. Le RPC public peut être soumis à une limitation de débit ; lorsqu’un rapprochement on-chain strict est nécessaire, utilisez votre propre RPC Solana ou les enregistrements de règlement côté plateforme pour confirmer la signature de transaction.
SDK smoke test
Les outils avancés de validation servent à vérifier les signatures et le règlement on-chain. Côté métier, un SDK smoke test doit également être exécuté afin de confirmer que le code d’application peut gérer automatiquement 402 via le payment handler. Seuls les extraits principaux sont présentés ci-dessous ; le code complet doit compléter le portefeuille, le provider et les imports. TypeScript :exact. SKALE ne fournit actuellement que exact, qui est réglé sur le montant fixe coté par 402 et ne sera pas réduit en fonction de l’utilisation réelle de tokens. La complétion de chat est un scénario facturé au token ; lors de l’intégration en production, il est recommandé de passer à Base et de transmettre preferScheme: 'upto', afin de régler selon l’utilisation réelle.
Résultat d’exécution du programme de smoke test du SDK :
- Le SDK TypeScript traite automatiquement 402, la signature et la nouvelle tentative via
createX402PaymentHandler, et obtient finalementADC_TS_SDK_X402_OK. - Le SDK Python réalise la même chaîne via
create_x402_payment_handler, et obtient finalementADC_PY_SDK_X402_OK. - Les deux smoke tests utilisent le payeur SKALE
0xd0479FA9FD8C678303d477433d24C15e3723CC1C. - L’objet retourné par le SDK Python est un
dict; dans l’exemple, vous pouvez utiliserres["choices"][0]["message"]["content"]pour lire le contenu.
E2E de paiement de commande
Le paiement de commande utilise l’API de plateforme deplatform.acedata.cloud et nécessite un jeton de compte de plateforme. La chaîne complète est : créer une commande Pending, déclencher 402 avec POST /api/v1/orders/{order_id}/pay/, puis effectuer une nouvelle tentative avec PAYMENT-SIGNATURE.
Exemple de résultat de vérification de paiement de commande de faible montant :
Les enregistrements de transaction suivants sont des échantillons historiques de tests réels sous l’ancienne politique ; les montants et les hachages de transaction sont conservés tels quels. Les nouvelles commandes X402 ne bénéficient plus de remises selon le mode de paiement ; utilisez le amount de la réponse 402 actuelle comme base pour la signature et le paiement.
- Après la création de la commande, son état est
Pendinget son prix est1.26. - La première requête
pay/renvoie HTTP 402 ;acceptscontient Baseexactet Solanaexact, avec un montant de1200000atomic USDC pour les deux. - Après une nouvelle tentative avec Base
PAYMENT-SIGNATURE, HTTP 200 est renvoyé, l’état de la commande devientFinishedetpay_wayestX402. - Après décodage de
PAYMENT-RESPONSE, il affichesuccess=True,network=baseet fournit le même hachage de transaction. - Sur BaseScan, l’état de la transaction est
1, et le montant du transfert est de1200000atomic USDC, soit1.2USDC. - Le prix de création de
1.26a été payé pendant la période de l’ancienne politique de réduction pour les paiements X402 ; le montant final signé et réglé est de1.2USDC.
Authorization: Bearer {platform_token}, ou si la commande n’appartient pas au compte actuel, il échouera au niveau des autorisations de la plateforme ; cela diffère de l’API X402 sans compte appelée directement sur x402.acedata.cloud.
Erreurs courantes
Liste de contrôle Base upto
upto n’est actuellement fourni que sur Base (eip155:8453). SKALE ne fournit que exact. Étant donné que la signature upto lie davantage de paramètres EVM typed data, lors de l’intégration, il faut particulièrement vérifier que les champs en temps réel de la réponse 402 correspondent exactement à la signature du client.
upto renvoie invalid_upto_evm_payload_invalid_signature, vérifiez en priorité :
- Le
extra.chainId(doit être8453) dans l’entréeeip155:8453+uptorenvoyée par l’API. - Le
extra.facilitatorAddressrenvoyé par l’API. - L’adresse du facilitator Base
uptorenvoyée parhttps://facilitator.acedata.cloud/supported. - Le domaine Permit2, le spender, le contrat USDC et le compte signataire.
- Si le portefeuille a déjà approuvé Permit2 pour l’USDC sur Base.
upto lie simultanément le domaine Permit2, le chain ID, le spender, l’adresse du destinataire, l’adresse du facilitator et validAfter. Si l’un d’eux ne correspond pas, le Facilitator récupérera un mauvais signer, renvoyant ainsi invalid signature. Si tous ces éléments correspondent mais que 402 est toujours renvoyé, vérifiez ensuite l’allowance Permit2 ; lorsqu’il n’est pas autorisé, PERMIT2_ALLOWANCE_REQUIRED est renvoyé.
Enregistrer les informations de vérification
Une validation complète enregistre au minimum :- le chemin API et le résumé du corps de la requête ;
- le network et le scheme sélectionnés ;
maxAmountRequired;- l’adresse du portefeuille du payeur ;
- le statut HTTP final ;
- la sortie du modèle ou l’ID de tâche dans la réponse ;
- le lien de la transaction de settlement ;
- l’ID de trace Gateway ou l’ID d’enregistrement d’utilisation de la plateforme.
PAYMENT-SIGNATURE complet, la signature EIP-712 complète ou la phrase mnémonique.
Erreurs de paiement structurées
Les échecs X402 après signature renverront uncode stable, des paramètres d’interpolation sécurisés, une phase et un indicateur de possibilité de nouvelle tentative dans extensions.acedatacloud.paymentError. Privilégiez cette structure pour le diagnostic, ne parsez pas l’error anglais de niveau supérieur, et ne demandez pas aux utilisateurs de fournir des signatures de portefeuille ou le texte original des simulations on-chain.
charged: false: la validation a explicitement refusé avant le settlement, aucun débit n’a été initié cette fois-ci.- Sans
charged: le résultat est inconnu ou est déjà entré dans la phase de settlement ; vérifiez d’abord la commande et l’état on-chain, il est interdit de répéter directement le paiement. settlement_pending: ne répétez pas le paiement pour le moment ; actualisez d’abord la commande ou contactez le support.- Code non reconnu : traitez-le comme
payment_failedet conservez le code technique public afin que le service client puisse le rechercher.

