• 30-01-2013, 01:21:36
    #1
    Merhaba Whmcs için vakıfbank 3d secure modülü entegre ettim ancak 3d ödeme alırken kredikartı bilgileri girdikten sonra domainchecker.php sayfasına yönleniyor herhangi bir hata vermeden.

    Yardımlarınızı rica ederim.
  • 30-01-2013, 02:57:06
    #2
    Üyeliği durduruldu
    info@virgulhost.com msn adresimizi eklerseniz yardımcı olabilirim.
  • 30-01-2013, 16:39:45
    #3
    Ödeme ekranından sonra gideceği adresi domainchecker.php olarak belirtmişiniz.Onu değiştiremiyormusunuz
  • 30-01-2013, 22:10:19
    #4
    Reveloper
    FARKLI adlı üyeden alıntı: mesajı görüntüle
    Merhaba Whmcs için vakıfbank 3d secure modülü entegre ettim ancak 3d ödeme alırken kredikartı bilgileri girdikten sonra domainchecker.php sayfasına yönleniyor herhangi bir hata vermeden.

    Yardımlarınızı rica ederim.
    Tema-market eski temasını kullanıyorsunuz büyük ihtimal. Sitenizin SOL bölümündeki domain sorgulama kısmının form'una yönlendiriyor otomatik olarak
  • 30-01-2013, 22:49:26
    #5
    Merhaba Msn'e sizi ekledim aralarında bol tire (-) işareti bulunan bir email adresimle. Kabul ederseniz ancak akşamları 9-10 gibi msne girebiliyorum ilginiz için çok teşekkür ederim eğer çözüme ulaşabilirsek burda paylaşıcam whmcs vakıfbank 3d secure entegresini

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:48:20 -->-> Daha önceki mesaj 22:29:56 --

    Burti adlı üyeden alıntı: mesajı görüntüle
    Tema-market eski temasını kullanıyorsunuz büyük ihtimal. Sitenizin SOL bölümündeki domain sorgulama kısmının form'una yönlendiriyor otomatik olarak
    WHMCS full lisans ve Temayı Aktif Bilişimden aldım.

    Çözüm nedir?

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 22:49:26 -->-> Daha önceki mesaj 22:48:20 --

    srsrx adlı üyeden alıntı: mesajı görüntüle
    Ödeme ekranından sonra gideceği adresi domainchecker.php olarak belirtmişiniz.Onu değiştiremiyormusunuz
    callbackurl yi domainchecker.php yapmadım
  • 30-01-2013, 23:30:06
    #6
    Site bilgilerini pm ile gönderin inceleyelim.
  • 30-01-2013, 23:57:06
    #7
    myHalici adlı üyeden alıntı: mesajı görüntüle
    Site bilgilerini pm ile gönderin inceleyelim.
    Site bilgileri derken entegrasyon dosyalarını göndersem
  • 30-01-2013, 23:58:22
    #8
    test modu var ise, yani vakıfbank dan pos hesabı olmadan deneme yapılabiliyorsa dosyalarıda gönderebilirsiniz.
  • 31-01-2013, 00:05:53
    #9
    myHalici adlı üyeden alıntı: mesajı görüntüle
    test modu var ise, yani vakıfbank dan pos hesabı olmadan deneme yapılabiliyorsa dosyalarıda gönderebilirsiniz.

    gateways altındaki dosya
    header('Content-type: text/html; charset=utf-8');
    //header('Content-type: text/html; charset=iso-8859-9');
    
    /*$GATEWAYMODULE["vakifbank3dnname"]="vakifbank3dn";
    $GATEWAYMODULE["vakifbank3dnvisiblename"]="vakifbank3dn";
    $GATEWAYMODULE["vakifbank3dntype"]="CC";*/
    
    
    function vakifbank3dn_config() {
        $configarray = array(
            "FriendlyName" => array("Type" => "System", "Value"=>"Vakıfbank 3D"),
    		//"type" => array("FriendlyName" => "", "Type" => "hidden", "Size" => "32", "Value" => "CC",),
            "uyeno" => array("FriendlyName" => "Üye No", "Type" => "text", "Size" => "32", "Description" => "Üye isyeri no (9 haneli)",),
            "xcip" => array("FriendlyName" => "Xcip", "Type" => "text", "Size" => "32", "Description" => "Üye isyeri guvenlik kodu (10 haneli)",),
    		"dcins" => array("FriendlyName" => "Döviz Cinsi", "Type" => "text", "Size" => "9", "Description" => "YTL:949 nin uluslararasi kodu",),
            "apiname" => array("FriendlyName" => "Api Kullanıcı Kodu", "Type" => "text", "Size" => "32", "Description" => "",),
            "apipass" => array("FriendlyName" => "Api Kullanıcı Şifre", "Type" => "text", "Size" => "32", "Description" => "",),
            "apiclient" => array("FriendlyName" => "İşyeri No", "Type" => "text", "Size" => "32", "Description" => "",),
    		"apiposno" => array("FriendlyName" => "Pos No", "Type" => "text", "Size" => "32", "Description" => "Üye İşyeri Pos No",),
            "reqtype" => array("FriendlyName" => "İşlem Türü", "Type" => "dropdown", "Options" => "PRO,OPR", "Description" => "İşlem Türü", ),
    		"SubmitText" => array("FriendlyName" => "Buton Yazısı", "Type" => "text", "Size" => "32", "Description" => "Örn:3D işlemini başlat",),
            //"TestMode" => array("FriendlyName" => "Test Mode", "Type" => "yesno", "Description" => "", ),
        );
        return $configarray;
    }
    
    
    function vakifbank3dn_3dsecure($params) {
    
        /*if ("on" == $params['TestMode']) {
            $gateway_url = "http://sanalposprovtest.garanti.com.tr/servlet/gt3dengine";
            $Mode = "TEST";
        } else {
            $gateway_url = "https://sanalposprov.garanti.com.tr/servlet/gt3dengine";
            $Mode = "PROD";
        }*/
    
        if (949 != $params['currency']) {
            // If the currency is not TL, you should change the amount into TL
    	// And don't forget NOT to change $params['amount'] into any other variable.
            // Ex: $params['amount'] = $params['amount'] * 2.1; // Euro into TL
        }
    
        // Let's change TL format into Kurus
    
        /* If you want to provide Installment option to your customers, you have to add it as $configarray element or post value.
           If you prefer post value, add a select box to your Smarty design with the name of InstallmentCnt and values like 3,6,12 etc.
           In this case you have to change $params['InstallmentCnt'] with $_POST['InstallmentCnt'] in the following code.
           Also if you charge more in the case of using Installment, use these codes:
    
           $addition = array (
               3 => 7,	// %7 addition to amount if customer choose 3-Installments
               6 => 11,	// %11 addition to amount if customer choose 6-Installments
               12 => 18,	// %18 addition to amount if customer choose 12-Installments
           );
           if (isset ($_POST['InstallmentCnt']) && 1 < (int)$_POST['InstallmentCnt']) {
                $Amount = round(($Amount*(100 + $addition[$_POST['InstallmentCnt']]))/100);
           }
    
        */
    	
    	$IPAddress = $_SERVER['REMOTE_ADDR'];
    
        $SubmitText = isset($params['SubmitText']) ? $params['SubmitText']:"3D iÅŸlemini baÅŸlat";
    	
    	$gateway_url = "https://get724.vakifbank.com.tr/Get724/get724uye.aspx";
    	
    	//$uyeno = str_pad($params['uyeno'], 9, "0", STR_PAD_LEFT);
    	
    	$uyeno = $params['uyeno'];
    	
    	$kkno = $params['cardnum'];
    	
    	$gectar = substr($params['cardexp'],2,2).substr($params['cardexp'],0,2);
    	
    	$Amount = (float) str_replace(',', "." , (string)$params['amount']);
        $Amount = (float) $Amount * 100;
    	
    	$dcins = $params['dcins'];
    	
    	$sipbil = $params['invoiceid']; //siparis bilgisi (max 40 hane)
    	
        $sesbil = $params['username']; //session bilgisi (max 40 hane)
    	
    	$callbackurl = $params['systemurl']."/modules/gateways/callback/vakifbank3dn.php";
    	
    	$zaman = date('YmdHis');
    	
    	$xcip = $params['xcip'];	
    	
    	$hashStr = $uyeno . $kkno . $gectar . $Amount . $dcins . $sipbil . $sesbil . $callbackurl . $callbackurl . $zaman . $xcip;
    	
    	$ozet = base64_encode(pack('H*',sha1($hashStr)));    
    	
    	return '<form method="post" action="'.$gateway_url.'">
    	<input type="hidden" name="uyeno" value="'.$uyeno.'" />
    	<input type="hidden" name="kkno" value="'.$kkno.'" />
    	<input type="hidden" name="gectar" value="'.$gectar.'" />
    	<input type="hidden" name="tutar" value="'.$Amount.'" />
    	<input type="hidden" name="dcins" value="'.$dcins.'" />
    	<input type="hidden" name="sipbil" value="'.$sipbil.'" />
    	<input type="hidden" name="sesbil" value="'.$sesbil.'" />
    	<input type="hidden" name="burl" value="'.$callbackurl.'" />
    	<input type="hidden" name="hurl" value="'.$callbackurl.'" />
    	<input type="hidden" name="zaman" value="'.$zaman.'" />
    	<input type="hidden" name="ozet" value="'.$ozet.'" />
    	
    	<input type="hidden" name="ip" value="'.$IPAddress.'" />
    	<input type="hidden" name="orderid" value="'.$params["invoiceid"].'" />
    	<input type="hidden" name="customeremailaddress" value="'. $params["clientdetails"]["email"].'" />
        <input type="hidden" name="customeripaddress" value="'.$IPAddress.'" />
    	<input type="hidden" name="cardnumber" value="'.$params["cardnum"].'">
    	<input type="hidden" name="cardexpiredatemonth" value="'.substr($params['cardexp'],0,2).'">
    	<input type="hidden" name="cardexpiredateyear" value="'.substr($params['cardexp'],2,2).'">
    	<input type="hidden" name="cardcvv" value="'.$params["cccvv"].'">
    	
    	<noscript>
    	<div class="errorbox"><b>JavaScript is currently disabled or is not supported by your
    	browser.</b><br />Please click the continue button to proceed with the processing of your
    	transaction.</div>  
    	
    	</noscript>
    	<input id="submit" type="submit" value="'.$SubmitText.'" />
    	</form>';
    	
    }

    gateways/callback altındaki dosya

    class API
    {
        /*Gerçek Hesap Ýþlemleri*/
        /*<Aktif>*/
        public static $real_apiname;
        public static $real_apipass;
        public static $real_apiclient;
        public static $real_apiposno;
        public static $real_apixcip;
        public static $real_gateway;
        public static $real_gatpath;
        /*</Aktif>*/
        /*Test, Sahte Hesap Ýþlemleri*/
        /*<Test>*/
        public static $test_gateway;
        public static $test_gatpath;
        public static $test_apiname;
        public static $test_apipass;
        public static $test_apiclient;
        public static $test_apiposno;
        public static $test_apixcip;
        /*</Test>*/
        public $ReqType;
        public $ExtraProcessid=0;
        public static $isrealgateway=false;
        public static $timeout=90;
    
        private $DataArray;
        private $ExtraProcesspuan;
        public function __construct()
    	{
    	    $this->ReqType   = 'Auth';
            $this->DataArray = array("ip"=>'$_POST[ip]',
                                "orderid" => '$_POST[orderid]',
                                "cc_no"=>'$_POST[kkno]',
                                "cc_month"=>'$_POST[cardexpiredatemonth]',
                                "cc_year"=>'$_POST[cardexpiredateyear]',
                                "cc_ccv"=>'$_POST[cardcvv]',
                                "tutar"=>'$_POST[tutar]',
                                "currency"=>'$_POST[dcins]',
                                "cc_instalment_order" => '',
                                "cc_holdername"=>$params['clientdetails']['firstname']." ".$params['clientdetails']['lastname']);
            $this->ExtraProcesspuan = '';
    
            if (constant_config('webpos_mode')!=NULL)
            {
            if (MODULE_PAYMENT_WEBPOS_MODE == 'Aktif')
            {
                self::$isrealgateway = true;
            }
            else
            {
                self::$isrealgateway = false;
            }
            }
    	}
        public function __get($key){
        }
    
    	public function __set($key, $value){
    	if(array_key_exists($key, get_class_vars(__CLASS__))){
    	$this->{$key} = $value;
    	}
    	}
    
        private function getmodel(&$nameis,&$passwordis,&$clientidis,&$posnois,&$xcipis,&$DataArray)
        {
        $extraid = $this->ExtraProcessid;
        $extrapuan = $this->ExtraProcesspuan;
        $ReqTypeis = ($this->ReqType == 'Auth')?'PRO':'OPR';
        $oid = (strlen($DataArray['orderid'])>24)? substr(str_replace('.','0',$DataArray['orderid']),0,24):substr('00000000000000000000',0,(24-strlen($DataArray['orderid']))).str_replace('.','0',$DataArray['orderid']);
        $tutar = sprintf('%012d',str_replace('.', '', number_format($DataArray['tutar'], 2, '','')));
        $installment = ($DataArray['cc_instalment_order']=='')?'00':sprintf('%02d',$DataArray['cc_instalment_order']);
    return  
    "kullanici=".$nameis."&sifre=".$passwordis."&islem=".$ReqTypeis."&uyeno=".$clientidis."&posno=".$posnois."&kkno=".$DataArray['cc_no']."&gectar=".$DataArray['cc_year'].$DataArray['cc_month']."&cvc=".$DataArray['cc_ccv']."&tutar=".$tutar."&provno=000000&taksits=".$installment."&islemyeri=I&uyeref=".$oid."&vbref=0&khip=".$DataArray['ip']."&xcip=".$xcipis;
        }
    
        private function xmltohash($data)
        {
        $response = array();
        $parser = xml_parser_create( );
        xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, 0 );
        xml_parser_set_option( $parser, XML_OPTION_SKIP_WHITE, 1 );
        xml_parse_into_struct( $parser, $data, $values, $tags );
        xml_parser_free( $parser );
        $arrQuotes = array();
        foreach ( $values as $key => $val )
        {
            switch ( $val['type'] )
            {
                case "open" :
                    array_push($arrQuotes,$val['tag'] );
                    break;
                case "close" :
                    array_pop($arrQuotes);
                    break;
                case "complete" :
                    array_push($arrQuotes,$val['tag'] );
                    $val['value'] = (array_key_exists('value', $val))?$val['value']:"";
                    eval( "\$response['".implode( $arrQuotes, "']['" ).( "'] = \"".$val['value']."\";" ) );
                    array_pop($arrQuotes);
            }
        }
        return $response;
        }
    
        public function vkf_error_codes( $Status )
        {
        switch ( $Status )
        {
            case "02" :
                $msg = "Kartla ilgili problem. Bankanýzý arayýnýz.";
                return $msg;
            case "69" :
                $msg = "Eksik Parametre. Kart bilgilerinizi kontrol edip tekrar deneyiniz.";
                return $msg;
            case "68" :
                $msg = "Hatalý Ýþlem Tipi. Lütfen sorunu yönetime bildirin.";
                return $msg;
            case "67" :
                $msg = "Parametre uzunluklarýnda uyuþmazlýk. Lütfen bilgilerinizi kontrol ediniz.";
                return $msg;
            case "66" :
                $msg = "Numeric deger hatasý. Nümerik deðerlerden oluþmasý gereken alanlardan biri veya býrkaçý hatalý.";
                return $msg;
            case "64" :
                $msg = "Ýþlem tipi taksit e uygun deðil.";
                return $msg;
            case "63" :
                $msg = "Request mesajinda illegal karakter var.";
                return $msg;
            case "62" :
                $msg = "Yetkisiz ya da tanýmsýz kullanýcý.";
                return $msg;
            case "61" :
                $msg = "Hatalý Tarih.";
                return $msg;
            case "60" :
                $msg = "Hareket Bulunamadi.";
                return $msg;
            case "59" :
                $msg = "Gunsonu yapilacak hareket yok/GS Yapilmis.";
                return $msg;
            case "90" :
                $msg = "Kayýt bulunamadý.";
                return $msg;
            case "91" :
                $msg = "Begin Transaction error.";
                return $msg;
            case "92" :
                $msg = "Insert Update Error.";
                return $msg;
            case "96" :
                $msg = "DLL registration error.";
                return $msg;
            case "97" :
                $msg = "IP Hatasý.";
                return $msg;
            case "98" :
                $msg = "H. Iletisim hatasý.";
                return $msg;
            case "99" :
                $msg = "DB Baglantý hatasý.";
                return $msg;
            case "70" :
                $msg = "XCIP hatalý.";
                return $msg;
            case "71" :
                $msg = "Üye Ýþyeri blokeli ya da tanýmsýz.";
                return $msg;
            case "72" :
                $msg = "Tanýmsýz POS.";
                return $msg;
            case "73" :
                $msg = "POS table update error.";
                return $msg;
            case "76" :
                $msg = "Taksit e kapalý.";
                return $msg;
            case "74" :
                $msg = "Hatalý taksit sayýsý.";
                return $msg;
            case "75" :
                $msg = "Illegal State.";
                return $msg;
            case "85" :
                $msg = "Kayit Reversal Durumda.";
                return $msg;
            case "86" :
                $msg = "Kayit Degistirilemez.";
                return $msg;
            case "87" :
                $msg = "Kayit Iade Durumda.";
                return $msg;
            case "88" :
                $msg = "Kayit Iptal Durumda.";
                return $msg;
            case "89" :
                $msg = "Geçersiz kayýt.";
                return $msg;
            case "01" :
                $msg = "Eski kayýt. Bir önceki sipariþle ayný sipariþ numarasý girildi.";
                return $msg;
        }
        $msg = "Lütfen bilgilerinizi kontrol ediniz..";
        return $msg;
        }
    
        public function HTTPPOST()
        {
        $name='';
        $password='';
        $clientid='';
        $posno='';
        $xcip='';
        $host='';
        $path='';
        $timeout = self::$timeout;
        if(self::$isrealgateway)
        {
            $name = self::$real_apiname;
            $password = self::$real_apipass;
            $clientid = self::$real_apiclient;
            $posno = self::$real_apiposno;
            $xcip = self::$real_apixcip;
            $host = self::$real_gateway;
            $path = self::$real_gatpath;
        }
        else
        {
            $name = self::$test_apiname;
            $password = self::$test_apipass;
            $clientid = self::$test_apiclient;
            $posno = self::$test_apiposno;
            $xcip = self::$test_apixcip;
            $host = self::$test_gateway;
            $path = self::$test_gatpath;
        }
    
        $getdata = $this->getmodel($name,$password,$clientid,$posno,$xcip,$this->DataArray);
        $path = "/vpos724v3/?".$getdata;
    
        $buffer = "";
        if (!extension_loaded('curl')) {
            $fp = fsockopen("ssl://subesiz.vakifbank.com.tr", 443, $errno, $errstr, $timeout);
            if (!$fp)
            {
                $msg['result'] = -1;
                $msg['msg'] = ":: Baðlantý hatasý lütfen daha sonra tekrar deneyiniz.";
                return $msg;
            }
            fputs($fp, "GET " .$path. " HTTP/1.1\r\n");
            fputs($fp, "Host: subesiz.vakifbank.com.tr\r\n");
            fputs($fp, "Connection: Close\r\n\r\n");
            $buffer = fread( $fp, 8192 );
            fclose($fp);
        }
        else
        {
            $ch = curl_init();
    		curl_setopt($ch, CURLOPT_URL,"https://subesiz.vakifbank.com.tr/".$path);
    		curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,1);
    		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,0);
    		curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    		curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
            $buffer = curl_exec($ch);
            if (curl_errno($ch))
            {
               $msg['result'] = -1;   
               $msg['msg'] = ":: Baðlantý hatasý lütfen daha sonra tekrar deneyiniz.";
               return $msg; /* curl_error($ch)  */
            }
            else
            {
               curl_close($ch);
            }
        }
        /*echo $buffer;*/
        $Response = substr( $buffer, strpos( $buffer, "<Cevap>" ) );
        $responseArray = $this->xmltohash( $Response );
        switch ( $responseArray['Cevap']['Msg']['Kod'] )
        {
            case "00" :
                $msg['result'] = 1;
                $msg['auth_code'] = $responseArray['Cevap']['Msg']['Mesaj'];
                break;
            default:
                $msg['result'] = -1;
                $msg['msg'] = $this->vkf_error_codes( $responseArray['Cevap']['Msg']['Kod'] )."-".$responseArray['Cevap']['Msg']['BKMKod'];
        }
        return $msg;
        }
    
    }
    /*
        * @BugFixes
        * 	Security code is generated with main Garanti root password not the password for sale, it is changed.
        *
        * @Addition
        * 	$response value was extended with some customer and order datas.
        * 
    */
    
    // If you see broken chars, change the header
    //header('Content-type: text/html; charset=utf-8');
    //header('Content-type: text/html; charset=iso-8859-9');
    
    # Required File Includes
    include("../../../dbconnect.php");
    include("../../../includes/functions.php");
    include("../../../includes/gatewayfunctions.php");
    include("../../../includes/invoicefunctions.php");
    
    
    $gatewaymodule = "vakifbank3dn";
    
    $GATEWAY = getGatewayVariables($gatewaymodule);
    if (!$GATEWAY["type"]) die("Module Not Activated");
    
    
    	$successArray = array("Y","A");
    
    
    if (isset($_POST["status"]) && in_array($_POST["status"], $successArray)) {
    
    $reqtype = 'Auth';
    /*Gerçek Hesap İşlemleri*/
    /*<Aktif>*/
    API::$real_apiname = $GATEWAY['apiname'];   //API KULLANICI KODU
    API::$real_apipass = $GATEWAY['apipass'];  //API KULLANICI ŞİFRE
    API::$real_apiclient = $GATEWAY['apiclient']; //İŞYERİ NO
    API::$real_apiposno = $GATEWAY['apiposno']; //POS NO
    API::$real_apixcip = $GATEWAY['xcip']; //GÜVENLİK KODU
    API::$real_gateway = 'https://subesiz.vakifbank.com.tr';
    API::$real_gatpath = '/vpos724v3/?';
    /*</Aktif>*/
    /*Test, Sahte Hesap İşlemleri*/
    /*<Test>*/
    API::$test_gateway = 'https://subesiz.vakifbank.com.tr';
    API::$test_gatpath = '/vpos724v3/?';
    API::$test_apiname = $GATEWAY['apiname'];
    API::$test_apipass = $GATEWAY['apipass'];
    API::$test_apiclient = $GATEWAY['apiclient'];
    API::$test_apiposno = $GATEWAY['apiposno'];
    API::$test_apixcip = $GATEWAY['xcip'];
    API::$timeout = 90;
    
    }