|
Yazan
|
Konu: LINUX KABUĞU + PHP + SSL (Okunma Sayısı 138 defa)
|
Portsentry
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 6
|
Selam arkadaşlar, Elimizde bir C++ 'da yazılmış bir programımız var. Bu programın içerisinde müşterilerimizin borçlari alacaklari ve konumuzla ilgili olmayan diger işlemler tutuluyor. Program debian tabanlı bir sunucuda çalışıyor. Programdan gelecek bir çağrı ile LINUX KABUĞUNDAN bir php script çalıştırması ve bu script 'in aldigi parametrelerle ssl ' den gerekli ücreti çekmesi gerekiyor. Aşağidaki kodla bu script 'i çalıştırabiliyorum. Ama hiç bir hareket yok. Fikir verirseniz sevinirim. SSL 'i kabuktan deneyen oldumu veya bu iş için php 'den başka bir seçenek varmi? Aşağidaki kodun parametreleri şimdilik içinden veriyorum. #!/usr/bin/php -q
<?
if($argc != 9) { echo "Parametre Hatasi!\n"; echo "Kullanim:\n"; echo "[Kart No] [Ay] [Yıl] [CVV2] [Tutar] [Ad Soyad] \n"; } else { $Api_Adi ="xxxxx"; // Bankanın verdiği kullanıcı adı $Sifre ="xxxxx"; // Bankanın verdiği parola $Kullanici_ID ="xxxxx"; // Bankanın verdiği istemci numarası $Siparis_Kodu ="x"; // Sipariş kodu, bu her sipariş için farklı olmalı // Eğer ilk seferde provizyon alınamazsa ikinci seferde // sipariş numarası da değiştirilerek gönderilmelidir.
$Kart_No ="xxxxxx"; // Kredi Kartı numarası $Kart_Ay ="xxxxxx"; // Kart son kullanma tarihi ay $Kart_Yil ="xxxx"; // Kart son kullanma tarihi yıl $Cvv2 ="xxxx"; // Kart CVV2 kodu $Tutar ="x"; // Sipariş tutarı $Kart_Adi_Soyadi ="xxx"; // Kart sahibinin adı // echo "$Kart_No $Kart_Ay $Kart_Yil $Cvv2 $Tutar $Kart_Adi_Soyadi \n";
$Approved ="Onay alındı"; $Hata[0] ="XML dosyası açılamadı"; $Hata[1] ="Bankadan yanıt alınamadı"; $Hata[2] ="Bankadan Onay alınamadı."; $Hata[3] ="CURL çalıştırılamadı";
// Xml içeriğini ayirmak için gerekli fonksiyon
function GetAttribute($XML,$Tag) { $StartTag = "<".$Tag.">"; $EndTag = "</".$Tag.">"; $StartPosition = strpos($XML, $StartTag); if ($StartPosition === false) { return false; } $EndPosition = strpos($XML, $EndTag); $EndPosition = $EndPosition+strlen($EndTag); $Position = $EndPosition; $EndPosition = $EndPosition-$StartPosition; $EndPosition = $EndPosition - strlen($EndTag); $Tag = substr ($XML, $StartPosition, $EndPosition); $Tag = substr ($Tag, strlen($StartTag));
return $Tag;
}
function EST_XML_Request($Api_Adi,$Sifre,$Kullanici_ID,$Siparis_Kodu,$Kart_No,$Kart_Ay,$Kart_Yil,$Cvv2,$Tutar,$Kart_Adi_Soyadi){ $URL ="https://spos.isbank.com.tr/servlet/cc5ApiServer"; $XMLFile ="./sivastur.xml"; $XMLContent =@fread(@fopen($XMLFile, r), @filesize($XMLFile)); echo '<br>'.fopen($XMLFile, 'r').'<br>'; if(!$XMLContent){ return $Hata[0]; } else { $XMLContent =str_replace("{APINAME}",$Api_Adi,$XMLContent); $XMLContent =str_replace("{PASSWORD}",$Sifre,$XMLContent); $XMLContent =str_replace("{CLIENTID}",$Kullanici_ID,$XMLContent); $XMLContent =str_replace("{ORDERID}",$Siparis_Kodu,$XMLContent) ; $XMLContent =str_replace("{CCNUMBER}",$Kart_No,$XMLContent); $XMLContent =str_replace("{CCMONTH}",$Kart_Ay,$XMLContent); $XMLContent =str_replace("{CCYEAR}",$Kart_Yil,$XMLContent); $XMLContent =str_replace("{CVV2}",$Cvv2,$XMLContent); $XMLContent =str_replace("{TOTAL}",$Tutar,$XMLContent); $XMLContent =str_replace("{CCNAME}",$Kart_Adi_Soyadi,$XMLContent); $Parameters="DATA=".$XMLContent;
if($CurlHolder = curl_init()){ curl_setopt($CurlHolder, CURLOPT_URL,$URL); // Sanal Pos'a bağlanıyoruz curl_setopt($CurlHolder, CURLOPT_SSL_VERIFYHOST,2); // SSL sertifikasındaki IP'yi kontrol ediyoruz curl_setopt($CurlHolder, CURLOPT_RETURNTRANSFER,1); // Dönen sonucu ekrana yazdırmaması için 1 olmalı curl_setopt($CurlHolder, CURLOPT_TIMEOUT, 30); // Zaman aşımı curl_setopt($CurlHolder, CURLOPT_POSTFIELDS, $Parameters); // Veriyi gönderiyoruz. $XMLResponse = curl_exec($CurlHolder); // Dönen sonucu değişkene aktarıyoruz
if(!$XMLResponse){ return $Hata[1]; } else { $ReturnCode = GetAttribute($XMLResponse,"ProcReturnCode"); // İşlem Kodu $OrderID = GetAttribute($XMLResponse,"OrderId"); // Gönderdiğimiz sipariş kodu aynen geri dönmesi lazım $Response = GetAttribute($XMLResponse,"Response"); // Sonuç if($Response=="Approved" && $ReturnCode=="00"){ return $Approved; } else { return $Hata[2]; } } } else { return $Hata[3]; } } } } echo EST_XML_Request($Api_Adi,$Sifre,$Kullanici_ID,$Siparis_Kodu,$Kart_No,$Kart_Ay,$Kart_Yil,$Cvv2,$Tutar,$Kart_Adi_Soyadi); ?>
Teşekkür ederim.
|
|
|
|
|
Logged
|
|
|
|
Portsentry
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 6
|
Biraz daha yol aldim. Kodu ayiklayip arguman lari http 'den POST olarak çağirdigim da problem yok kod çalişiyor. .En azindan kod da sorun yok. Ama bunu kabuktan çaliştirmam gerekiyor.
|
|
|
|
|
Logged
|
|
|
|
Portsentry
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 6
|
Sorunu çözdüm bir gün işinize yarıyacağini düşünerek size de gönderiyorum. İsim hanesi için 3 parametre aliyor. Ama bundan sonrasi daha kolay olacaktir. İyi çalişmalar #!/usr/bin/php -q
<?php if($argc !=9){ echo "Parametre Hatası!\n"; echo "Kullanım:\n"; echo "[CVV2] [Tutar] [Ad Soyad] [Kart No] [Ay] [Yıl] \n"; } else {
$kabuk =$_SERVER["argc"]; $ilk =$_SERVER["argv"][3]; $orta =$_SERVER["argv"][4]; $son =$_SERVER["argv"][5]; $Cvv2 =$_SERVER["argv"][1]; $Tutar =$_SERVER["argv"][2]; $Kart_Adi_Soyadi ="$ilk $orta $son"; $Kart_No =$_SERVER["argv"][6]; $Kart_Ay =$_SERVER["argv"][7]; $Kart_Yil =$_SERVER["argv"][8];
// echo "$Kart_Adi_Soyadi $Kart_No $Kart_Ay $Kart_Yil $Cvv2";
$Api_Adi ="xxxxxxx"; // Bankadan alinan api kullanıcı adı $Sifre ="xxxxxxx"; // Bankadan alinan api sifresi $Kullanici_ID ="xxxxxxx"; // Bankadan alinan magaza numarası $Siparis_Kodu ="16"; // Sipariş kodu,her sipariş için farklı olmalı /* // Bu alan test içindi
echo "Kart no \t : ".$Kart_No."\n"; echo "Ayi \t \t : ".$Kart_Ay."\n"; echo "Yili \t \t : ".$Kart_Yil."\n"; echo "Guvenlik \t : ".$Cvv2."\n"; echo "Ucret \t \t : ".$Tutar." YTL.\n"; echo "Adi Soyadi \t : ".$Kart_Adi_Soyadi."\n \n"; */
$Approved =`echo "Onay alındı" > Tamam`; // Fonksiyon eklenecek $Hata[0] =`echo "XML dosyası açılamadı" > xml_acilamadi`; // Fonksiyon eklenecek $Hata[1] =`echo "Bankadan yanıt alınamadı" > yanit_yok`; // Fonsiyon eklenecek $Hata[2] =`echo "Bankadan Onay alınamadı." > onay_yok`; // Fonksiyon eklenecek $Hata[3] =`echo "CURL çalıştırılamadı" > curl calismadi`; // Fonsiyon eklenecek
// Xml içeriğini ayirmak için gerekli fonksiyon
function GetAttribute($XML,$Tag) { $StartTag = "<".$Tag.">"; $EndTag = "</".$Tag.">"; $StartPosition = strpos($XML, $StartTag); if ($StartPosition === false) { return false; } $EndPosition = strpos($XML, $EndTag); $EndPosition = $EndPosition+strlen($EndTag); $Position = $EndPosition; $EndPosition = $EndPosition-$StartPosition; $EndPosition = $EndPosition - strlen($EndTag); $Tag = substr ($XML, $StartPosition, $EndPosition); $Tag = substr ($Tag, strlen($StartTag));
return $Tag;
}
function EST_XML_Request($Api_Adi,$Sifre,$Kullanici_ID,$Siparis_Kodu,$Kart_No,$Kart_Ay,$Kart_Yil,$Cvv2,$Tutar,$Kart_Adi_Soyadi){ $URL ="https://spos.isbank.com.tr/servlet....."; $XMLFile ="./xxxxx.xml"; $XMLContent =@fread(@fopen($XMLFile, r), @filesize($XMLFile)); echo '<br>'.fopen($XMLFile, 'r').'<br>'; if(!$XMLContent){ return $Hata[0]; } else { $XMLContent =str_replace("{APINAME}",$Api_Adi,$XMLContent); $XMLContent =str_replace("{PASSWORD}",$Sifre,$XMLContent); $XMLContent =str_replace("{CLIENTID}",$Kullanici_ID,$XMLContent); $XMLContent =str_replace("{ORDERID}",$Siparis_Kodu,$XMLContent) ; $XMLContent =str_replace("{CCNUMBER}",$Kart_No,$XMLContent); $XMLContent =str_replace("{CCMONTH}",$Kart_Ay,$XMLContent); $XMLContent =str_replace("{CCYEAR}",$Kart_Yil,$XMLContent); $XMLContent =str_replace("{CVV2}",$Cvv2,$XMLContent); $XMLContent =str_replace("{TOTAL}",$Tutar,$XMLContent); $XMLContent =str_replace("{CCNAME}",$Kart_Adi_Soyadi,$XMLContent); $Parameters="DATA=".$XMLContent;
if($CurlHolder = curl_init()){ curl_setopt($CurlHolder, CURLOPT_URL,$URL); // Sanal Pos'a bağlanıyoruz curl_setopt($CurlHolder, CURLOPT_SSL_VERIFYHOST,2); // SSL sertifikasındaki IP'yi kontrol ediyoruz curl_setopt($CurlHolder, CURLOPT_RETURNTRANSFER,1); // Dönen sonucu ekrana yazdırmaması için 1 olmalı curl_setopt($CurlHolder, CURLOPT_TIMEOUT, 30); // Zaman aşımı curl_setopt($CurlHolder, CURLOPT_POSTFIELDS, $Parameters); // Veriyi gönderiyoruz. $XMLResponse = curl_exec($CurlHolder); // Dönen sonucu değişkene aktarıyoruz
if(!$XMLResponse){ return $Hata[1]; } else { $ReturnCode = GetAttribute($XMLResponse,"ProcReturnCode"); // İşlem Kodu $OrderID = GetAttribute($XMLResponse,"OrderId"); // Gönderdiğimiz sipariş kodu aynen geri dönmesi lazım $Response = GetAttribute($XMLResponse,"Response"); // Sonuç if($Response=="Approved" && $ReturnCode=="00"){ return $Approved; } else { return $Hata[2]; } } } else { return $Hata[3]; } } } echo EST_XML_Request($Api_Adi,$Sifre,$Kullanici_ID,$Siparis_Kodu,$Kart_No,$Kart_Ay,$Kart_Yil,$Cvv2,$Tutar,$Kart_Adi_Soyadi); } ?>
|
|
|
|
|
Logged
|
|
|
|
|
 |