# Pemeriksa tanda tangan

> Tempel body permintaan atau body webhook. Halaman ini menghitung tanda tangan langkah demi langkah seperti yang dilakukan Cryptomus, membandingkan tiap langkah dengan milik Anda, dan menandai perbedaan pertama. Semuanya berjalan di browser Anda: halaman ini sama sekali tidak bisa melakukan permintaan jaringan, jadi API key Anda tidak pernah meninggalkan komputer Anda.
>
> HTML: https://blockwallets.io/docs/sign?lang=id · English: https://blockwallets.io/docs/sign.md?lang=en

## Tanda tangan permintaan (Anda memanggil API kami)

1. Teks yang ditandatangani adalah body permintaan persis seperti yang Anda kirim, byte demi byte (termasuk spasi, baris baru, dan escape).
2. base64 dari byte UTF-8-nya.
3. sign = md5(langkah 2 + API key), dikirim di header `sign`; header `merchant` berisi UUID merchant.

Jika tanda tangan salah, API mengembalikan 401, dan `debug.body_base64` di respons adalah langkah 2 yang dihitung dari body yang kami terima, siap dibandingkan dengan milik Anda.

## Tanda tangan webhook (kami memanggil URL webhook Anda)

1. Buang field `sign` lalu encode ulang sisanya seperti `json_encode` PHP: ringkas, `/` di-escape menjadi `\/`, non-ASCII dipertahankan.
2. base64 dari byte UTF-8 langkah 1.
3. md5(langkah 2 + API key) harus sama dengan `sign`. Pakai API key dari mode yang sama (Live / Test) dengan merchant.

## Penyebab umum

- API key dari mode lain, atau yang sudah diganti.
- Framework men-serialisasi ulang body (format rapi, urutan key, format angka); verifikasi terhadap body mentah yang Anda terima.
- Tidak meng-escape `/` menjadi `\/` saat meng-encode ulang webhook.

Pemeriksa ini berjalan sepenuhnya di browser Anda dan halamannya tidak bisa melakukan permintaan jaringan, jadi API key Anda tidak pernah meninggalkan komputer Anda. Contoh kode verifikasi: https://blockwallets.io/docs/cryptomus?lang=id#verify
