Merhaba,
PayTr ile PayLink ödeme sistemini yazılımıma entegre etmek istiyorum ama bana verilen teknik dökümandaki gibi
HMAC-SHA256 şifreleme algoritmasını yapamadım bir türlü. Sürekli "Hata : paytr_token gonderilmedi veya gecersiz" hatası alıyorum. Örnekte verilen kod bloğu ;
paytr_token = base64.b64encode(hmac.new(merchant_key, hash_str.encode(), hashlib.sha256).digest())
Dökümanın bütün hali
RAD Studio XE7 kullanıyorum nasıl uyarlıyabilirim?
indyhashsha veya system.hash.thashsha2 kütüphaneleri var. Bunları araştırın.
Ayrıca burada
https://github.com/paolo-rossi/delphi-jo...g.HMAC.pas
Json web token jwt için oluşturulan kütüphane var. Zaten sizden istenileni yapıyor olmalı.
Linkteki kodda gördüğüm kadarıyla Delphi 10 ve üzeri system.hash kullanıyor düşük sürümlerde indy bileşenini kullanıyor.
(19-08-2022, Saat: 11:38)glagher Adlı Kullanıcıdan Alıntı: [ -> ] (19-08-2022, Saat: 09:25)Halil Han BADEM Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
hazır bileşenini zamanında yazmıştım.
https://github.com/halilhanbadem/delphi-hb-components
Çok teşşekür ederim. Yalnız bu işlemi compennet kurmadan yapmanın bir yolu yok mu?
OpenSource zaten. İçerisinden kodları alıp kullanın.
(19-08-2022, Saat: 11:43)Halil Han BADEM Adlı Kullanıcıdan Alıntı: [ -> ] (19-08-2022, Saat: 11:38)glagher Adlı Kullanıcıdan Alıntı: [ -> ]Çok teşşekür ederim. Yalnız bu işlemi compennet kurmadan yapmanın bir yolu yok mu?
OpenSource zaten. İçerisinden kodları alıp kullanın.
SHA256 şifrelemeyi yaptım ama sürekli api tarafında geçersiz token hatası alıyorum. Paytr ile görüştüm delphi sürümünüzde sıkıntı var dedi. Çözüm bulamadım bir türlü
var Token: String :=
TBase64Encoding.Base64.Encode(
THashSHA2.GetHMAC(
'merhaba delphi developer', // data
'delphi', // key
THashSHA2.TSHA2Version.SHA256
)
).Replace(#13, '')
.Replace(#10, '');
Kodunuzu birde yukarıdaki şekilde derleyip denemenizi önerebilirim. Umarım sorunu çözmeye yardımcı olur.
Delphi ile PHP hash_hmac metod doğrulamasını
https://beautifytools.com/hmac-generator.php adresi üzerinden kontrol edebilirisiniz. Ayrıca Replace metotları ile #13 ve #10 karakterlerini elimine ediyorum. Bunun nedeni, TBase64Encoding sınıfına ait Encode metotu icrası akabinde oluşturulan dize değeri 80 karakterden daha uzunsa, Delphi bunu MIME standartına uygun hale getirmeye çalışıyor.
(23-08-2022, Saat: 01:42)delphi.developer Adlı Kullanıcıdan Alıntı: [ -> ] var Token: String :=
TBase64Encoding.Base64.Encode(
THashSHA2.GetHMAC(
'merhaba delphi developer', // data
'delphi', // key
THashSHA2.TSHA2Version.SHA256
)
).Replace(#13, '')
.Replace(#10, '');
Kodunuzu birde yukarıdaki şekilde derleyip denemenizi önerebilirim. Umarım sorunu çözmeye yardımcı olur.
Delphi ile PHP hash_hmac metod doğrulamasını https://beautifytools.com/hmac-generator.php adresi üzerinden kontrol edebilirisiniz. Ayrıca Replace metotları ile #13 ve #10 karakterlerini elimine ediyorum. Bunun nedeni, TBase64Encoding sınıfına ait Encode metotu icrası akabinde oluşturulan dize değeri 80 karakterden daha uzunsa, Delphi bunu MIME standartına uygun hale getirmeye çalışıyor.
XE7 kullanıyorum. "THashSHA2.GetHMAC" bölümünde hata veriyor. İnternetten araştırdım kütüphanesi "system.Hash" ama XE7 de tanımlı değilmiş. xe 10.1 den sonra geliyormuş. XE7 için sha256 şifrelemeyi nasıl yapabilirim?
TMS Cryptography Pack linki üzerinden bileşen kurulumunu yapın. Paket kurulumu sonrasında
TSHA2Hash bileşenini formunuza alın.
uses bölümüne
MiscObj sınıfı ekleyin. Ardından aşağıdaki kod bloğunu kendi key ve anahtarlarınıza göre değiştirerek tekrar deneme yapın. En azından sorunun TokenKey noktasında olduğunun hızlıca tespiti yapılmış olur.
SHA2Hash1.hashSizeBits := 256;
SHA2Hash1.outputFormat := Base64;
var TokenKey: String :=
SHA2Hash1.HMAC('merhaba delphi developer', 'delphi');