<?php 
/*
DİKKAT 1 : Bu örnekleri değiştirmeden yada düzenlemeden sisteminizde kullanmayın. Bu kod yapısı sadece işleyiş ve senaryolar hakkında önizleme ve bilgi edinmeniz niteliğindedir.
Post güvenliğinin sağlanması ve işleyişin ve entegrasyonun doğru bir şekilde yapılandırılması tamamen sizin sorumluluğunuzdadır.

DİKKAT 2 : Bu sayfa müşterilerinizin göreceği bir sayfa değildir. Ödeme işlemi yapıldığında arka planda vallet servisleri ödemeyi bu sayfanıza bildirecektir.
Ödemeyi sisteminize işlediğinizde ekrana OK cevabı vermelisiniz. Aksi bir durum yada hatada Sadece hata yada sorun ile ilgili kısa bit metin yazdırmanız yeterlidir.
*/

$vallet_config = array(
	'userName'=>'mehmetbey_api',
	'password'=>'0a4e0bb95c12c0c11fa19bec8bb8d42c05ec4336',
	'shopCode'=>'8797',
	'hash'=>'YrWyYFJG',
);

$post = array();
$post['status'] = $_POST['status'];
$post['paymentStatus'] = $_POST['paymentStatus'];
$post['hash'] = $_POST['hash'];
$post['paymentCurrency'] = $_POST['paymentCurrency'];
$post['paymentAmount'] = $_POST['paymentAmount'];
$post['paymentType'] = $_POST['paymentType'];
$post['paymentTime'] = $_POST['paymentTime'];
$post['conversationId'] = $_POST['conversationId'];
$post['orderId'] = $_POST['orderId'];
$post['shopCode'] = $_POST['shopCode'];
$post['orderPrice'] = $_POST['orderPrice'];
$post['productsTotalPrice'] = $_POST['productsTotalPrice'];
$post['productType'] = $_POST['productType'];
$post['callbackOkUrl'] = $_POST['callbackOkUrl'];
$post['callbackFailUrl'] = $_POST['callbackFailUrl'];


if (empty($post['status']) || empty($post['paymentStatus']) || empty($post['hash']) || empty($post['paymentCurrency']) || empty($post['paymentAmount']) || empty($post['paymentType']) || empty($post['orderId']) || empty($post['shopCode']) || empty($post['orderPrice']) || empty($post['productsTotalPrice']) || empty($post['productType']) || empty($post['callbackOkUrl']) || empty($post['callbackFailUrl']))
{
	/*Eksik Form Datası Mevcut*/
	echo 'EKSIK_FORM_DATASI';
	exit();
}
else
{
	$hash_string = $post['orderId'].$post['paymentCurrency'].$post['orderPrice'].$post['productsTotalPrice'].$post['productType'].$vallet_config["shopCode"].$vallet_config["hash"];
	$MY_HASH = base64_encode(pack('H*',sha1($hash_string)));
	if ($MY_HASH!==$post['hash'])
	{
		/*Hash Uyuşmuyor*/
		echo 'HATALI_HASH_IMZASI';
		exit();
	}
	else
	{
		/*
		paymentStatus'un alabileceği değerler = 
		paymentWait(Ödeme Bekleniyor),
		paymentVerification(Ödendi ancak ödeme doğrulama bekliyor. Reddedilebilir. Mal yada hizmetinizi müşterinize paymentOk alana kadar vermeyin),
		paymentOk(Ödeme alındı. Artık mal yada hizmetinizi müşterinize verebilirsiniz),
		paymentNotPaid('Ödenmedi'),
		*/
		if ($post['paymentStatus']=='paymentOk')
		{
			
			/*Sipariş bilginizi sisteminizden çekin ve doğrulayın*/
			$siparisler = array(
				'5214'=>array(
					'odemeDurumu'=>'ODEME_BEKLIYOR',
					'tutar'=>10.45,//ondalık değeri 2 hane olarak alın
					'paraBirimi'=>'TRY',
				),
			);
			/*Bu alanda sipariş bilgilerinizi veritabanınızdan çektiğinizi varsayalım ve doğrulama işlemlerine devam edelim*/
			
			if (!$siparisler[$post['orderId']])
			{
				/*Böyle bir sipariş sistemimde yok*/
				echo 'GECERSIZ_SIPARIS_NUMARASI';
				exit();
			}
			else if($siparisler[$post['orderId']]['odemeDurumu']=='ODENDI')
			{
				/*Zaten ödenmiş ve işlenmiş*/
				echo 'OK';
				exit();
			}
			else if($siparisler[$post['orderId']]['tutar']!=$post['paymentAmount'])
			{
				echo 'TUTAR_HATALI';
				exit();
			}
			else
			{
				/*Ödemeyi sisteminize işleyin*/
				$odemeyi_isle = 'Burada veritabanınızı yada sisteminizdeki siparişi ödendi olarak işleyin ve kaydedin.';
				if ($odemeyi_isle)
				{
					/*Ödeme işlendi ve başarılı*/
					echo 'OK';
					exit();
				}
				else
				{
					/*
					Ödeme işlenemedi. Hatanızı basın. Vallet bir kaç dakika sonra yeniden aynı ödeme için size bildirim gönderecektir.
					Sisteminizin birden fazla hata vermesi yada OK cevabı dönmemesi durumunda vallet tarafından işyeri sahibi bilgilendirilecktir.
					*/
					echo 'SIPARIS_ISLENEMEDI';
					exit();
				}
			}
		}
	}
}
