Gravity Forms ile Offline Kredi Kartı Tahsilatı (Mail Order)

Gravityforms wordpress için yazılmış ücretli bir form eklentisidir. WP için yapılmış en profesyonel ve güncel form uygulamasıdır. Yaklaşık 3 yıldır büyük zevkle kullandığım bu form eklentisinde, varsayılan değeri gizli olan “Credit Card Field” bölümüne ihtiyacım oldu. Ayrıca elde edilen kredi kartı bilgilerini mail order yöntemiyle tahsil edebilmek isteyen bir müşterimize bu imkanı sağlamak zorudaydık. Bunun için yeni input türü alanlar oluşturup kendi formumuzu tek tek oluşturabilirdik fakat stil dosyalarıyla ve tarayıcı uyumluluğu ile uğraşmamak için varolan kredi kartı alanındaki bilgileri veritabanına kaydetmek için uğraştık, ve başardık:) İnternette o kadar detaylı aramamıza rağmen bir sonuç bulamamıştık. Aşağıda basitçe bu işlemi nasıl yapacağınızı anlatmaya çalıştık;

1 – Öncelikle Gravityforms eklentisinde gizli olan “Credit Card Field” bölümünü görünür hale getirelim. Bunun için wp-content/plugins/gravityforms/form_detail.php dosyası içinde aşağıdaki satırı aratıyoruz;

if(apply_filters(“gform_enable_credit_card_field”, false))

“false” değerini “true” yaptığımızda aşağıdaki gibi yönetim panelinde “Pricing Fields” bölümüne “Credit Card” düğmesi geliyor.

2 – Bu adımda wp-content/plugins/gravityforms/forms_model.php dosyasında aşağıdaki kod blokunu arıyoruz;

case "creditcard" :
                //saving last 4 digits of credit card
                list($input_token, $field_id_token, $input_id) = rgexplode("_", $input_name, 3);
                if($input_id == "1"){
                    $value = str_replace(" ", "", $value);
                    $card_number_length = strlen($value);
                    $value = substr($value, -4, 4);
                    $value = str_pad($value, $card_number_length, "X", STR_PAD_LEFT);
                }
                else if($input_id == "4")
                {
                    $card_number = rgpost("input_{$field_id_token}_1");
                    $card_type = GFCommon::get_card_type($card_number);
                    $value = $card_type ? $card_type["name"] : "";
                }
                else{
                    $value = "";
                }

Ve bu kodları aşağıda kendi yazdığımız değerlerle değiştiriyoruz;

 case "creditcard" :
                //saving last 4 digits of credit card
                list($input_token, $field_id_token, $input_id) = rgexplode("_", $input_name, 3);
				
				//$value = str_replace(" ", "", $value);
				//$card_number_length = strlen($value);
				
				if($input_id == "1")
				{
					$card_number = rgpost("input_{$field_id_token}_1");
					$card_type  = GFCommon::get_card_type($card_number);
					
					$carddata   = "<b>Kredi Karti No : </b>";
					$carddata  .= $card_number;
					$carddata  .= "<br/>";
					
					$carddata  .= "<b>Son Kullanma Tarihi : </b>";
					$expressionTarihi = rgpost("input_{$field_id_token}_2");
					if($expressionTarihi[0]<10)
					$carddata  .= "0";
					$carddata  .= $expressionTarihi[0];
					$carddata  .= '-'.$expressionTarihi[1];
					$carddata  .= "<br/>";
					
					$carddata  .= "<b>Guvenlik Numarasi : </b>";
					$carddata  .= rgpost("input_{$field_id_token}_3");
					$carddata  .= "<br/>";
					
					$carddata  .= "<b>Kart Tipi : </b>";
					$carddata  .= $card_type["name"];
					$carddata  .= "<br/>";
					
					$carddata  .= "<b>Kart Sahibinin Adi Soyadi : </b>";
					$carddata  .= rgpost("input_{$field_id_token}_5");
					
					$card_number = $carddata;
						
					$value = $card_number; 
				}
				else if($input_id == "4")
                {
					
				}
				else{
                    $value = "";
                }

Dosyamızı bu şekilde kaydettikten sonra yönetim paneline kredi kartı bilgileri aşağıdaki gibi yazdırılıyor.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir