# Vérificateur de signature

> Collez un corps de requête ou de webhook. Cette page calcule la signature étape par étape comme le fait Cryptomus, compare chaque étape à la vôtre et marque la première différence. Tout s’exécute dans votre navigateur : cette page ne peut faire aucune requête réseau, votre API key ne quitte donc jamais votre ordinateur.
>
> HTML: https://blockwallets.io/docs/sign?lang=fr · English: https://blockwallets.io/docs/sign.md?lang=en

## Signature de la requête (vous appelez notre API)

1. Le texte signé est le corps exact de la requête que vous envoyez, octet pour octet (espaces, retours à la ligne et échappements compris).
2. base64 de ses octets UTF-8.
3. sign = md5(étape 2 + API key), envoyé dans l’en-tête `sign` ; l’en-tête `merchant` contient l’UUID du merchant.

Si la signature est mauvaise, l’API renvoie 401, et `debug.body_base64` dans la réponse est l’étape 2 calculée à partir du corps reçu, prête à être comparée à la vôtre.

## Signature du webhook (nous appelons votre URL de webhook)

1. Retirez le champ `sign` et ré-encodez le reste comme le fait `json_encode` de PHP : compact, `/` échappé en `\/`, caractères non ASCII conservés.
2. base64 des octets UTF-8 de l’étape 1.
3. md5(étape 2 + API key) doit être égal à `sign`. Utilisez l’API key du même mode (Live / Test) que le merchant.

## Causes fréquentes

- L’API key de l’autre mode, ou une clé renouvelée.
- Le framework a re-sérialisé le corps (indentation, ordre des clés, format des nombres) ; vérifiez à partir du corps brut reçu.
- Ne pas échapper `/` en `\/` lors du ré-encodage d’un webhook.

Le vérificateur s’exécute entièrement dans votre navigateur et la page ne peut faire aucune requête réseau, votre API key ne quitte donc jamais votre ordinateur. Exemples de code de vérification : https://blockwallets.io/docs/cryptomus?lang=fr#verify
