Forum
Merhaba Arkadaşlar,
3dsecure sorgusu için php olarak form submit işlemini taklit edecek bir yöntem arıyorum. Post edilecek verileri gönderecek ve host sayfasında kalacak. Curl ve fsocketopen ile aşağıdaki kodlar ile yapmayı denedim. Fakat her iki kodda dataları yolluyor. Fakat kredi kartı şifresini girilecek ekranı açmak yerine mevcut sayfaya boş bilgi döndürüyor. Her iki kodu da yazdım. Benim istediğim bilgiler https://sanalposprov.garanti.com.tr/servlet/gt3dengine adresine post edildikten sonra kullanıcının istemci ekranında bu sayfanın kalmasıdır. 4 gündür yurt içi ve yurt dışı incelemediğim forum kalmadı ama net bir sonuca da ulaşamadım. PHP konusunda üstad arkadaşlar bir el atarlarsa sevinirim. Yöntemin önemi yok. PHP olsun ve Linux işletim sisteminde çalışsın yeter. En azından bunu nasıl gerçekleştirebileceğim ile ilgili ufak bir ipucum dahi olsa gerisini hallederim.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$curl = curl_init();
$curl_connection = "https://sanalposprov.garanti.com.tr/servlet/gt3dengine";
$post_string="secure3dsecuritylevel=".$secure3dsecuritylevel."&"."cardnumber=".$cardnumber."&"."cardexpiredatemonth=".$cardexpiredatemonth."&"."cardexpiredateyear=".$cardexpiredateyear."&"."cardcvv2=".$cardcvv2."&"."mode=".$strMode."&"."apiversion=".$strApiVersion."&"."terminalprovuserid=".$strTerminalProvUserID."&"."terminaluserid=".$strTerminalUserID."&"."terminalmerchantid=".$strTerminalMerchantID."&"."txntype=".$strType."&"."txnamount=".$strAmount."&"."txncurrencycode=".$strCurrencyCode."&"."txninstallmentcount=".$strInstallmentCount."&"."orderid=".$strOrderID."&"."terminalid=".$strTerminalID."&"."successurl=".$strSuccessURL."&"."errorurl=".$strErrorURL."&"."customeripaddress=".$strCustomeripaddress."&"."customeremailaddress=".$strcustomeremailaddress."&"."secure3dhash=".$HashData;
curl_setopt($curl, CURLOPT_URL, $curl_connection);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, false);
//curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_string);
curl_close ($curl);
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
$fp = fsockopen("sanalposprov.garanti.com.tr", 443);
fputs($fp, "POST /servlet/gt3dengine HTTP/1.1\r\n");
fputs($fp, "Host: sanalposprov.garanti.com.tr \r\n");
fputs($fp, "Content-type: application/x-www-form-urlencoded \r\n");
fputs($fp, "Content-length: " . strlen($post_string) . "\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $post_string);
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Taklit etmekten kastınız nedir? Zaten bu işlemi yapan birşey var ben onun yanında bunuda mı kullanıcam yoksa sadece bu kod ile ödeme işlemini halledicem mi?
İlk söylediğimi yapamazsınız zaten. Sonuçta 3d secure, adı üstünde.
İkinci olarak 3d secure'de ya returnurl dediğimiz bilgiler post edildikten sonra dönecek url geri döndürür ya da sizi direk kendi sayfasına yönlendirir. Kullanıcıyı aynı sayfada bırakmak istiyorsanız eğer returnurl kısmına sayfayı belirtmelisiniz.