İmza Yanıtının Doğrulanması
Last updated
Last updated
Bu sayfa, iyzico'nun API'sini kullanarak İmza Yanıtının Doğrulanmasının uygulanmasına ilişkin ayrıntılı rehberlik sağlamak amacıyla hazırlanmıştır. İmza Yanıtının Doğrulanması, özellikle finansal işlemlerde işyerleri ile iyzico arasında alınıp verilen verilerin doğruluğunun ve bütünlüğünün sağlanması açısından önemlidir. Geliştiriciler, HMAC SHA256 imzalarını oluşturma ve doğrulama talimatlarını izleyerek uygulamalarını üçüncü parti kişilerin müdahalesinden ve yetkisiz erişime karşı koruyabilirler. Bu, işlem sürecinin genel güvenliğini artırarak hem satıcıları hem de müşterileri korur.
signature
parametresi, hizmet yanıtını doğrulamak için belirli yanıt parametreleri ile satıcının gizli anahtarı (secretKey) kullanılarak doğrulanır. Bununla birlikte, satıcı ile iyzico arasındaki hizmet güvenliği HMAC SHA256 kullanarak arttırılır.
signature
aşağıdaki endpointler'de bulunmaktadır;
signature
değeri, iyzico API yanıtlarından gelen parametreler kullanılarak oluşturulmalıdır.
Servisler | Endpoint | Parametre Sıralaması |
---|---|---|
Bu bölümde, Non-3DS Endpoints ödeme isteği için signature
değerinin nasıl çıkarılacağını {{baseUrl}}/payment/auth
endpoint'i özelinde anlatacağız. Örnek yapımız, aşağıdaki adımları kapsamaktadır;
Ödeme İsteği
Ödeme Yanıtı
İmza Karşılaştırması
Ödeme isteği ile başlayalım;
conversationId
, price
, paidPrice
, currency
, ve basketId
kullanarak bir istek attığınızı varsayalım. Odak noktamız, bu değerleri, /payment/auth
endpoint'ini kullanarak imza oluşumunda nasıl uygulandığını görebilmektir.
Eğer price
parametresi signature
değerini oluşturan parametreler arasında bulunuyorsa, ilgili değer, hashString ile şifrelenmeden önce trailingZero olarak ayarlanmaktadır. Bu konudaki detaylı bilgili Trailing Zero kısmında bulabilirsiniz.
Yukarıdaki Ödeme İsteği'nden başarıyla bir yanıt aldığınızı göz önünde bulundurarak, beklenen yanıt verisi aşağıdaki gibi olacaktır:
Burada conversationId
, price
, paidPrice
, paymentId
, currency
, ve basketId
parametrelerine odaklanmalıyız. Yanıtın tamamı bu parametrelerden dışındaki ayrıntıları kapsasa bile bunlar temel unsurlardır.
Son olarak sıra imzaların eşleşip eşleşmediğini kontrol etmeye geldi, kullandığımız bu örnek için;
/payment/auth
endpointi
/payment/auth
endpointi signature oluşturmak için gereken parametreler;
paymentId
currency
basketId
conversationId
paidPrice
price
değişkenleridir.
Şimdi bunların eşleşip eşleşmediğini HMAC-SHA-256 algoritmasıyla kontrol edelim;
HMAC-SHA-256 algoritmasını kullanarak eşleşip eşleşmediklerini doğrulayalım:
Yanıttan dönen signature
değeri;
836c3a6c8db86c81043f2ca74edb13518b54a813f454f8dd762f0dd658610173
Kullandığımız yöntemden gelen hashedSignature
değeri;
836c3a6c8db86c81043f2ca74edb13518b54a813f454f8dd762f0dd658610173
Her iki değerin de eşit olması, yanıtın iyzico'dan geldiğini doğruluyor.
iyzico'nun yanıt imzası doğrulaması bağlamında, fiyat parametrelerinde ondalık noktadan sonra görünen sıfırlara atıfta bulunur. Bu ardıl sıfırların doğrulama sürecine dahil edilmesi, HMAC SHA256 imza algoritmasının doğruluğunu sağlamak için gereklidir. Örnek vermek gerekirse, "price":"50.00"
fiyatı, imzanın yaratılmasında ve doğrulanmasında "50"
olarak ele alınmalıdır.
Örneğin servis yanıtından alınan aşağıdaki değerleri göz önünde bulundurun;
"price":"10"
ardıl sıfırların atılmasından sonra 10
olmalıdır
"price":"10.0"
ardıl sıfırların atılmasından sonra 10
olmalıdır
"price":"10.5"
ardıl sıfırların atılmasından sonra 10.5
olmalıdır
"price":"10.50"
ardıl sıfırların atılmasından sonra 10.5
olmalıdır
"price":"10.510"
ardıl sıfırların atılmasından sonra 10.51
olmalıdır
"price":"10.5105"
ardıl sıfırların atılmasından sonra 10.5105
olmalıdır
"price":"10.51050"
ardıl sıfırların atılmasından sonra10.5105
olmalıdır
Sondaki sıfırların atılmasının, satıcıların imzayı hesaplamadan önce kod tabanlarında ele almaları gereken bir süreç olduğunu lütfen unutmayın. Bu işlev doğrudan iyzico tarafından sağlanmamaktadır.
Servisler | Endpoint | Parametre Sıralaması |
---|---|---|
Servisler | Parametre Sıralaması |
---|---|
Servisler | Endpoint | Parametre Sıralaması |
---|---|---|
Non-3DS
/payment/auth
paymentId, currency, basketId, conversationId, paidPrice, price
Non-3DS PreAuth
/payment/preauth
paymentId, currency, basketId, conversationId, paidPrice, price
Non-3DS PostAuth
/payment/postauth
paymentId, currency, basketId, conversationId, paidPrice, price
Ödeme Sonucunu Alma
/payment/detail
paymentId, currency, basketId, conversationId, paidPrice, price
3DS Başlatma
/payment/3dsecure/initialize
paymentId , conversationId
3DS PreAuth Başlatma
/payment/3dsecure/initialize/preauth
paymentId, conversationId
3DS Auth
/payment/3dsecure/auth
paymentId, currency, basketId, conversationId, paidPrice, price
3DS PostAuth
/payment/postauth
paymentId, currency, basketId, conversationId, paidPrice, price
Ödeme Sonucunu Alma
/payment/detail
paymentId, currency, basketId, conversationId, paidPrice, price
callbackURL
conversationData , conversationId, mdStatus, paymentId, status
CheckoutForm Başlatma
/payment/iyzipos/checkoutform/initialize/auth/ecom
conversationId, token
iyzico ile Öde Başlatma
/payment/pay-with-iyzico/initialize
conversationId, token
CheckoutForm PreAuth Başlatma
/payment/iyzipos/checkoutform/initialize/preauth/ecom
conversationId, token
Ödeme Sonucunu Alma
/payment/iyzipos/checkoutform/auth/ecom/detail
paymentStatus, paymentId, currency, basketId, conversationId, paidPrice, price, token