Skip to content

Authorization Header içeriğinin oluşturulması #126

@debate-dev

Description

@debate-dev

flutter tarafında iyzico entegrasyonu gerçekleştirirken fark ettiğim bir durum var. Authentication header'ı için http post body parametrelerini belirttiğiniz şekilde/formatta request string'e dönüştürmeme rağmen 'geçersiz imza' geri dönüşü alıyorum.

Burada farkına vardığım durum, sizin kendi tarafınızda (büyük ihtimalle) post body parametrelerini kendi modelinize oturtup ondan sonra bu model üzerinden request stringi oluşturmanız. Aşağıdaki örneğe bakabilirsiniz.

var myMap = { email : "test@gmail.com", locale:"tr" } // aynı zamanda bu map, json formatına dönüştürülüp http post body'isine yerleştiriliyor.

bu mapten oluşturduğum request string = [email=test@gmail.com, locale=tr]

siz bu http post isteğini process ederken, body'deki json'a encode edilmiş map datasını büyük ihtimalle önce kendi tarafınızdaki model'e(map türüne) dönüştürüyorsunuz ve kendi modeliniz üzerinden request string oluşturuyorsunuz. Bundan dolayı sizin oluşturduğunuz request string = [locale=tr, email=test@gmail.com]

iki tarafta(client ve iyzico server) aynı dataya sahip olmasına rağmen farklı request string'lerden(key'lerin aynı sırada olmamalarından dolayı) hash ürettiği için "geçersiz imza" hatası gönderiyorsunuz.

Buradaki problem kullanıcının request string oluşturacağı map datasının key sıralaması.

Örneğin; email ile locale keylerinin yerini değiştirip tekrardan bu mapten request string oluştursam, sizinle aynı request stringi oluşturmuş olacaktım.

Bundan dolayı dökümanlarınıza kullanıcının request string'i oluştururken kullanacağı map datasında keyleri(locale, cardAlias, cardNumber vs) nasıl sıralaması gerektiğini söylemelisiniz. Ya da sizin serverlarınızda çalışan ve request string oluşturan kodu sıralama bağımsız request string oluşturacak şekilde güncellemeniz gerekiyor.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions