İmza Yanıtının Doğrulanması
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.
Genel Özet
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.
Non-3DS Endpointleri
Servisler | Endpoint | Parametre Sıralaması |
---|---|---|
Non-3DS |
| paymentId, currency, basketId, conversationId, paidPrice, price |
Non-3DS PreAuth |
| paymentId, currency, basketId, conversationId, paidPrice, price |
Non-3DS PostAuth |
| paymentId, currency, basketId, conversationId, paidPrice, price |
Ödeme Sonucunu Alma |
| paymentId, currency, basketId, conversationId, paidPrice, price |
3DS Endpointleri
Servisler | Endpoint | Parametre Sıralaması |
---|---|---|
3DS Başlatma |
| paymentId , conversationId |
3DS PreAuth Başlatma |
| paymentId, conversationId |
3DS Auth |
| paymentId, currency, basketId, conversationId, paidPrice, price |
3DS PostAuth |
| paymentId, currency, basketId, conversationId, paidPrice, price |
Ödeme Sonucunu Alma |
| paymentId, currency, basketId, conversationId, paidPrice, price |
callbackURL Yönlendirmesi
Servisler | Parametre Sıralaması |
---|---|
callbackURL | conversationData , conversationId, mdStatus, paymentId, status |
Checkout Form(CF) & PayWithiyzico(PWI) Endpointleri
Servisler | Endpoint | Parametre Sıralaması |
---|---|---|
CheckoutForm Başlatma |
| conversationId, token |
iyzico ile Öde Başlatma |
| conversationId, token |
CheckoutForm PreAuth Başlatma |
| conversationId, token |
Ödeme Sonucunu Alma |
| paymentStatus, paymentId, currency, basketId, conversationId, paidPrice, price, token |
Non-3DS Endpoint'i İçin Signature Örneği
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;
Ödeme İsteği
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.
Ödeme İsteği Yanıtı
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.
İmza Karşılaştırması
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.
Ardıl Sıfırlar(Trailing Zero)
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 sonra10
olmalıdır"price":"10.0"
ardıl sıfırların atılmasından sonra10
olmalıdır"price":"10.5"
ardıl sıfırların atılmasından sonra10.5
olmalıdır"price":"10.50"
ardıl sıfırların atılmasından sonra10.5
olmalıdır"price":"10.510"
ardıl sıfırların atılmasından sonra10.51
olmalıdır"price":"10.5105"
ardıl sıfırların atılmasından sonra10.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.
Last updated