LogoLogo
GitHubFeedback Form
TR
TR
  • Başlangıç
  • Ön Hazırlıklar
    • Sandbox
    • Kimlik Doğrulama
      • HMACSHA256 Kimlik Doğrulama
    • Postman Collections
    • Live vs Sandbox
    • Eşleştirme
    • Limitler
  • Ödeme Metotları
    • Non-3DS
      • NON-3DS Entegrasyonu
        • Ödeme Oluşturma
        • Ödeme Sorgulama
    • 3DS
      • 3DS Entegrasyonu
        • 3DS Başlatma
        • 3DS Tamamlama
    • iyzico ile Öde (PWI)
      • PWI Entegrasyonu
        • PWI Başlatma
        • PWI Sorgulama
        • PWI Örnek Entegrasyon
    • Ödeme Formu (CheckoutForm)
      • CF Entegrasyonu
        • CF Başlatma
        • CF Sorgulama
        • CF Örnek Entegrasyon
  • Ürünler
    • Online Ödeme
    • Pazaryeri
      • Pazaryeri Entegrasyonu
        • Pazaryerlerinde Stopaj Uygulaması
        • Alt Üye
          • Alt Üye Güncelleme
          • Alt Üye Sorgulama
          • Alt Üye / Hak Ediş Güncelleme
        • Pazaryeri Ödemesi
        • Onay
    • Abonelik
      • Abonelik Entegrasyonu
        • Abonelik Ürünü
        • Ödeme Planı
        • Abonelik İşlemleri
        • Abone İşlemleri
    • Ceppos App2App
      • App2App Entegrasyonu
        • Kullanıcı Listeleme
        • Ödeme Başlatma
        • İptal / İade
        • Sorgulama
    • Korumalı Havale/EFT
      • Havale/EFT Entegrasyonu
        • Havale/EFT Başlatma
        • Havale/EFT Sorgulama
      • Havale/EFT SSS
    • iyzilink
      • iyzilink API
    • Alışveriş Kredisi
      • Alışveriş Kredisi Entegrasyonu
        • Alışveriş Kredisi Başlatma
        • Alışveriş Kredisi Sonucu Alma
        • Alışveriş Kredisi Örnek Entegrasyon
  • Ek Servisler
    • Kart Saklama
    • Raporlama Servisi
    • İptal ve İade
    • Webhook
    • SFTP
    • Mutabakat Dosyaları
    • Fraud Bildirimleri
    • Taksit ve BIN Sorgulama
    • iyzico Hesabına İade
    • Ödeme Sorgulama
    • İmza Yanıtının Doğrulanması
  • Platformlar
    • Woocommerce
    • Opencart
    • PrestaShop
    • Magento
    • IdeaSoft
    • Ticimax
    • T-Soft
    • Shopify
    • WIX
  • Ek Bilgiler
    • Hata Kodları
      • Banka Hata Kodları
    • Test Kartları
    • Entegrasyon Kontrol Listesi
    • iyzico Logo Paketi
Powered by GitBook
LogoLogo

Company

  • About
  • Career
  • Social
  • Youtube

Community

  • Github
  • Medium

Integration

  • Brand Guide
  • Solution Partners
  • Open Source

Contact

  • Contact Us
  • Support Center
On this page
  • Genel Bakış
  • 1. encryptedData
  • 2. base64Encoded
  • 3. Authorization
  • Kimlik Doğrulama İçin Örnek Pre-Request Kodu
  1. Ön Hazırlıklar
  2. Kimlik Doğrulama

HMACSHA256 Kimlik Doğrulama

iyzico hizmetlerindeki kimlik doğrulama, Base64 ve HmacSHA256 hashleme dahil olmak üzere hassas bir şifreleme teknikleri dizisi aracılığıyla güvenliği artırır.

API'ımıza güvenli bir şekilde erişmek için kimlik doğrulama gereklidir. Kimlik doğrulama, API Anahtarı ve base64EncodedAuthorization'ın HTTP isteklerinizin başlığına dahil edilmesiyle gerçekleştirilir.

"Authorization": "IYZWSv2"+" "+"base64EncodedAuthorization"

Örnek İstek Başlığı:

POST /payment/bin/check HTTP/1.1
Host: sandbox-api.iyzipay.com
Authorization: IYZWSv2 YXBpS2V5OnNhbmRib3gtbDlNZDFHajNJWWNtdTROZGFXeGFTVW9Db1g3REM1UkEmcmFuZG9tS2V5OjEyMzQ1Njc4OSZzaWduYXR1cmU6MDc5ZGY0YjI0MjZmYzdmNDIwOGQ4ZjIyZmJjMDM0OTc5NDAxOWY4Y2UyYjA3MTFkZTc4MDhiNDg3NGY0ZTc5Ng==
Content-Type: application/json
x-iyzi-rnd: 123456789 //x-iyzi-rnd SHA1 Authentication sisteminden kalan bir random key'dir.

Genel Bakış

İşte gerekli bileşenlerin ayrıntılı bir açıklaması:

  • apiKey : Hesabınıza atanmış benzersiz API anahtarı

  • secretKey : Hesabınızla ilişkili gizli anahtarınız.

  • x-iyz-rnd: Her API çağrısı için istek başlığına eklenen, müşterilerimiz tarafından rastgele oluşturulmuş bir sayı.(x-iyzi-rnd SHA1 Authentication sisteminden kalan bir random key'dir.)

  • encryptedData: istek verisi içerisinde yer alan parametrelerin HMACSHA256 ile şifrelenmiş versiyonu.

Kimlik doğrulama tek bir adımda basitçe yapılır. Ancak bir Yetkilendirme Dizisi oluşturmak için üç adım vardır.

  1. encryptedData

  2. base64Encoded

  3. Kimlik Doğrulama

1. encryptedData

encryptedData istek yükünün şifrelenmiş bir versiyonunu ifade eder. Sürecin sonunda HMACSHA256 şifrelemesini kullanarak bir hash oluşturulur.

Kimlik doğrulamada kullanılacak imza, nispeten aşağıdaki formül kullanılarak oluşturulur;

HMACSHA256(randomKey + uri.path + request.body, secretKey)

randomKey;

  • olarak eski SHA1 Authentication sisteminden kalan x-iyzi-rnd de kullanabilirsiniz.

  • Ya da random bir randomKey yaratabilirsiniz.

curl 
--location --request POST 'https://api.iyzipay.com/payment/bin/check' \
--header 'Authorization: IYZWSv2 ***' \
--header 'x-iyzi-rnd: 123456789' \
--header 'Content-Type: application/json' \
--data-raw '{
    "locale":"tr",
    "binNumber":"535805",
    "conversationId": "docsTest-v1"
}'

Yukarıdaki istek için encryptedData aşağıdaki gibidir;

079df4b2426fc7f4208d8f22fbc0349794019f8ce2b0711de7808b4874f4e796

2. base64Encoded

encryptedData 'nın doğru bir şekilde oluşturulduğunu varsayarsak, şimdi Base64 şifrelemesine geçebiliriz.

Kimlik doğrulamada kullanılacak imza, nispeten aşağıdaki formül kullanılarak oluşturulur;

base64("apiKey:"+apiKey+"&randomKey:"+randomKey+"&signature:"+encryptedData)

Sonuç olarak istek başlığında kullanılacak base64EncodedAuthorization değişkenini elde ederiz.

3. Authorization

Bütün bu işlemlerden sonra, son ve en kolay adım olarak istek başlığına IYZWSv2 base64EncodedAuthorization eklemeliyiz.

...
"Authorization": "IYZWSv2"+" "+"base64EncodedAuthorization"
...

IYZWSv2 ve base64EncodedAuthorization arasında bir adet boşluk bulunmaktadır.

Kimlik Doğrulama İçin Örnek Pre-Request Kodu


var apiKey = environment.apiKey;
var secretKey = environment.secretKey;
 
//Generate authorization string
function generateAuthorizationString() {

    // Benzersiz bir randomKey ortaya çıkaralım
    // Örnek randomKey : 1722246017090123456789
    var randomKey = new Date().getTime() + "123456789";
    
    // İstek için uri_path değişkenini yerleştirelim.
    // Örnek uri_path : /payment/bin/check
    var uri_path = "/payment/bin/check";
    
    // payload'u alalım ve uri path ile randomKey'i birleştirelim.
    // Örnek payload : payload: 1722246017090123456789/payment/bin/check{"binNumber":"589004"}
    var payload = _.isEmpty(request.data) ? randomKey + uri_path : randomKey + uri_path + request.data;
    
    // HMACSHA256 kullanarak payload'u şifreleyelim.
    // Örnek encryptedData : 91e491486d3aa951b4f387cc93d67fc754c4729af95344b694435f56447819e9
    var encryptedData = CryptoJS.HmacSHA256(payload, secretKey);
 
    // encryptedData değişkenini kullanarak authorizationString oluşturalım.
    /* Örnek authorizationString : apiKey:sandbox-3uHv0LccjcWDyFHTvJpiACKPcJwbczmZ&
                                        randomKey:1722246017090123456789&
                                        signature:91e491486d3aa951b4f387cc93d67fc754c4729af95344b694435f56447819e9 */
    var authorizationString = "apiKey:" + apiKey
                        + "&randomKey:" + randomKey
                        + "&signature:" + encryptedData;
    
 
    // base64 kullanarak authorizationString'i şifreleyelim.
    // Örnek base64EncodedAuthorization : YXBpS2V5OnNhbmRib3gtM3VIdjBMY2NqY1dEeUZIVHZKcGlBQ0tQY0p3YmN6bVomcmFuZG9tS2V5OjE3MjIyNDYwMTcwOTAxMjM0NTY3ODkmc2lnbmF0dXJlOjkxZTQ5MTQ4NmQzYWE5NTFiNGYzODdjYzkzZDY3ZmM3NTRjNDcyOWFmOTUzNDRiNjk0NDM1ZjU2NDQ3ODE5ZTk=
    var base64EncodedAuthorization = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(authorizationString));
 
    // authorizationStrin'i  'IYZWSv2 ' string'ine ekleyelim.
    // Örnek return value : IYZWSv2 YXBpS2V5OnNhbmRib3gtM3VIdjBMY2NqY1dEeUZIVHZKcGlBQ0tQY0p3YmN6bVomcmFuZG9tS2V5OjE3MjIyNDYwMTcwOTAxMjM0NTY3ODkmc2lnbmF0dXJlOjkxZTQ5MTQ4NmQzYWE5NTFiNGYzODdjYzkzZDY3ZmM3NTRjNDcyOWFmOTUzNDRiNjk0NDM1ZjU2NDQ3ODE5ZTk=
    return "IYZWSv2 " + base64EncodedAuthorization;
}
var authorization = generateAuthorizationString();
postman.setEnvironmentVariable("authorization", authorization);

Last updated 6 months ago

Aşağıdaki örnekte, işlemine ait bir istek yapısı bulunmaktadır;

Örnek olarak test ortamında gerçekleşen talebini ele alırsak yetkilendirme süreci şu şekilde olacaktır;

Bin Sorgulama
Bin Sorgulama