Merhabalar E recetem adlı uygulamaya entegrasyon yapmaya calısıyorum . Dokumantasyon sadece .NET ve Java İle ilgili anlatılmıs soyledikleri adımları PHP de yaptıgım halde sistemde beklenmeyen bir hata olustu hatası alıyorum
1-) Daha once php ile bu entegrasyonu yapmıs olan arkadaslar varsa yardımcı olabilir mi ?
2-)Entegrasyon Hakkında sundukları dokuman su sekilde -> https://recetem.enabiz.gov.tr/ v3 entegrasyon dosyası
2.1)Entegrasyonda .Nette Söylediği adım su sekilde
Reçetem Sisteminde hibrit şifreleme algoritması kullanılmaktadır.
.Net ve Java ortamında geliştirilmemiş istemci’lerin entegrasyonu veya şifreleme süreçlerini
kendi tarafında geliştirmeyi tercih eden istemci’ler için şifreleme algoritması aşağıda
pseudocode olarak verilmiştir.
var password = "ZJ=ENY'2H+0bm'oyIe6J"; var
RENKLIPUBLICFILE = "./RenkliRsaPublicKey.pem";
private const int SALT_LENGTH = 32;
private const string SALT_DAT = "./salt.dat";
input = json; var saltBytes;
// read salt file into byte array
using (var instream = new FileStream(SALT_DAT, FileMode.Open))
{
saltBytes = new byte[SALT_LENGTH];
instream.Read(saltBytes, 0, SALT_LENGTH);
}
2.2)AES (Advanced Encryption Standard) algoritması kullanılarak ( PKCS 5 V2.0 Scheme 2
tanımına göre SHA-1 HMac hesaplama fonksiyonu ile birlikte) bir private key üretilir.
Üretilen private key ile JSON string’imiz şifrelenir.
Benim adımları uygulama Şekli ise şöyle :
Private key hmac ve sha1 Kullanarak Olusturuyorum ve json string ile dokumantasyonda (25 . sayfadan aldım)
Şifreliyorum
$password="ZJ=ENY'2H+0bm'oyIe6J";
/*
* Private key
*/
$privateKey = openssl_random_pseudo_bytes(32);
$jsnString ="[{\"parola\":\"parola1\",\"kullaniciKodu\":\"kullanici1\",\"doktorTc\":\"11111111111\",\"dok
torMedulaPassword\":\"pass1\",\"receteAltTuru\":\"1\",\"takipNo\":\"tkp1\",\"hastaTc\":\"111
11111111\",\"hastaGsm\":\"0\",\"tesisKodu\":\"11000001\",\"protokolNo\":\"A461942\",\"provizyonTip\":\"0\",\"doktorSertifikaKodu\":\"109\",\"doktorBransKodu\":\"9999
\",\"hastaneReferansNumarasi\":\"0\",\"receteUrunTuru\":\"3\",\"taniListesi\":[{\"taniKodu\":\"K21\"}],\"Tibb
iCihazListesi\":[{\"tibbiCihazSutKodu\":\"DO1005\",\"adet\":1,\"periyod\":1,\"periyodBirimi\":1,\"kullanimS
ekli\":1,\"kullanimYeri\":\"1\"}]";
$ivlen = openssl_cipher_iv_length($cipher="AES-256-CBC");
$iv = openssl_random_pseudo_bytes($ivlen);
$cyrptedtext = openssl_encrypt($jsnString, $cipher, $password, $options=OPENSSL_RAW_DATA,$iv);
$hmacandSha1 = hash_hmac('sha1', $cyrptedtext, $privateKey, $as_binary=true);
2.3)Public Key kullanılarak RSA algoritması ile “private key şifrelenir”. PADDING_PKCS1 = 11
alınacaktır). Anahtar boyutu 2048 bit
Yazdıgım kod :
$publicKey = openssl_pkey_get_public(array(file_get_contents(public_path('RenkliRsaPublicKey.pem')), "pass"));
openssl_public_encrypt($encryptedAes, $encryptedWithPublic, $publicKey);
$encryptedJson = base64_encode($encryptedWithPublic);
dd($encryptedAes,$encryptedJson);
Ekrana bastıgım değişkenleri de
2.4)
Şifrelenmiş JSON aşağıdaki URL üzerinden test edilebilir :
https://recetem.enabiz.gov.tr/Auth/ApiLoginTest/v3.1/?encryptedJson=<<encryptedJson>>&enc
ryptedAes=<<encodedAes>>;
Adresinde test etmek istediğimde Sistemde beklenmeyen bir hata olustu hatası alıyorum postmanda
Yardımcı olabilecek varsa tesekkür ederim