# İmza denetleyici

> Bir istek gövdesini ya da webhook gövdesini yapıştırın. Bu sayfa imzayı Cryptomus'un yaptığı gibi adım adım hesaplar, her adımı sizinkiyle karşılaştırır ve ilk farkı işaretler. Her şey tarayıcınızda çalışır: bu sayfa hiçbir ağ isteği yapamaz, bu yüzden API key'iniz bilgisayarınızdan asla çıkmaz.
>
> HTML: https://blockwallets.io/docs/sign?lang=tr · English: https://blockwallets.io/docs/sign.md?lang=en

## İstek imzası (siz API'mizi çağırırsınız)

1. İmzalanan metin, gönderdiğiniz istek gövdesinin birebir kendisidir, bayt bayt (boşluklar, satır sonları ve kaçışlar dahil).
2. Onun UTF-8 baytlarının base64'ü.
3. sign = md5(2. adım + API key); `sign` başlığında gönderilir, `merchant` başlığı merchant UUID'sini taşır.

İmza hatalıysa API 401 döndürür ve yanıttaki `debug.body_base64`, aldığımız gövdeden hesaplanan 2. adımdır; sizinkiyle karşılaştırmaya hazırdır.

## Webhook imzası (biz webhook URL'nizi çağırırız)

1. `sign` alanını çıkarın ve geri kalanı PHP `json_encode` gibi yeniden kodlayın: sıkıştırılmış, `/` karakteri `\/` olarak kaçırılmış, ASCII dışı karakterler korunmuş.
2. 1. adımın UTF-8 baytlarının base64'ü.
3. md5(2. adım + API key) değeri `sign` ile eşit olmalıdır. Merchant ile aynı moddaki (Canlı / Test) API key'i kullanın.

## Olağan nedenler

- Diğer modun API key'i ya da yenilenmiş bir anahtar.
- Framework gövdeyi yeniden serileştirdi (biçimlendirme, anahtar sırası, sayı biçimleri); aldığınız ham gövdeye göre doğrulayın.
- Bir webhook'u yeniden kodlarken `/` karakterini `\/` olarak kaçırmamak.

Denetleyici tamamen tarayıcınızda çalışır ve sayfa ağ isteği yapamaz, bu yüzden API key'iniz bilgisayarınızdan asla çıkmaz. Doğrulama kodu örnekleri: https://blockwallets.io/docs/cryptomus?lang=tr#verify
