3d işlemlerinde sunucu tarafında hash değeri üretilip bankaya post edilir. aynı şekilde bankada size mdstatus ve response değeriyle birlikte bir hash gönderir.

est sanalposlar için mdstatus değerinin 1-2-3-4 olması ödemenin alındığını değil 3d işleminin başarılı olduğunu gösterir. ödemenin alınma değeri ise response değerinin 'Approved' olması ile belirlenir. if lerinizde tüm bunların kontrolünü yaptıktan sonra hemen siparişinizi onaylatırsanız dediğiniz şekilde açık oluşur. ama bankanız bunların yanında birde hash parametlereleri ve hash gönderir. Kendi sunucu tarafında oluşturduğunuz hash ile sunucu tarafından gelen hash parametlerinden yola çıkarak hashi tekrar oluşturup gerekli hash kontrolunu yaptıktan sonra onaylatırsanız ilgili açık ortadan kalkar. Şunu unutmayın, javascript, jquery vb. client tabanlı yöntemle yapacağınız tüm kontroller aşılabilir. Çünkü bunlar ziyaretçinin bilgisayarında yorumlanır. Siz güvenlikle ilgili tüm işlemleri sunucu tarafında yani php ile yapmalısınız.

Eğer EST destekli bankalardan biri ile çalışıyorsanız aşağıdaki örnekteki gibi bir yöntemle hash kontrolü yapabilirsiniz.

//hash kontrol
$storekey = 'storekeydeğeriniz'

$hashparams = $_POST["HASHPARAMS"];
$hashparamsval = $_POST["HASHPARAMSVAL"];
$hashparam = $_POST["HASH"];
$paramsval="";
$index1=0;
$index2=0;

while($index1 < strlen($hashparams))
{
	$index2 = strpos($hashparams,":",$index1);
	$vl = $_POST[substr($hashparams,$index1,$index2- $index1)];
	if($vl == null)
	$vl = "";
	$paramsval = $paramsval . $vl; 
	$index1 = $index2 + 1;
}

$hashval = $paramsval.$storekey;
$hash = base64_encode(pack('H*',sha1($hashval)));
//

if($paramsval != $hashparamsval || $hashparam != $hash)
{
	echo "Hash Geçerli Değil !";
	exit;
}