PHP Örnek Kodları

Ödeme Sayfası

Sipariş Numarası
12345679
Adı Soyad
Müşteri E-Posta Adresi
Müşteri GSM Numarasi
Müşteri Adresi
Ödenecek Tutar
TL
Sepet İçeriği
Bakiye Yükleme Hizmeti
Müşteri IP
88.77.44.125

## 1. ADIM için örnek kodlar ##
####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################
## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak ENTEGRASYON -> APİ ERİŞİM sayfasından alabilirsiniz.
$merchant_id 			= 'xxxxx';				//Müşteri Mağaza Kodu				
$merchant_key 			= 'xxxxxxxxxxxx';		//Müşteri Mağaza Key Anahtarı
$merchant_salt			= 'xxxxxxxxxxxx';		//Müşteri Mağaza Gizli Anahtarı

## Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız ad ve soyad bilgisi
$customer_namesurname 	= "Müşterinizin Adı Soyadı";

## Müşterinizin sitenizde kayıtlı veya form vasıtasıyla aldığınız eposta adresi
$customer_email 		= "eposta@mail.com";

## Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız telefon bilgisi
$customer_number 		= "Müşterinizin GSM Numarası";

## Müşterinizin sitenizde kayıtlı veya form aracılığıyla aldığınız adres bilgisi
$customer_address 		= "Müşterinizin Sisteminizde Kayıtlı Adresi";

## Tahsil edilecek tutar.
$payment_amount			= intval(50*100);	// Ondalık para birimi için lütfen : 150.50 Yapınız

## Sipariş numarası: Her işlemde benzersiz olmalıdır!! Bu bilgi bildirim sayfanıza yapılacak bildirimde geri gönderilir.
$merchant_oid 			= rand(111111,9999); // Sistem tarafından oluşturduğunuz sipariş numaranız

## Müşterinin sepet/sipariş içeriği (Aldığı Hizmet Bilgisi ÖRN: Premium Hesap)
$user_basket 			= "Premium Hesap Üyelik ÖRNEK";

## Ödemeyi göndermek istediğiniz para birimidir.. ÖRNEK : TL - USD - EUR
$payment_currency 		= 'TL';

############################################################################################
## Kullanıcının IP adresi
if( isset( $_SERVER["HTTP_CLIENT_IP"] ) ) {
	$ip = $_SERVER["HTTP_CLIENT_IP"];
} elseif( isset( $_SERVER["HTTP_X_FORWARDED_FOR"] ) ) {
	$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
	$ip = $_SERVER["REMOTE_ADDR"];
}
## Bu Alanı değiştirmeyin.
$customer_ip=$ip;

####### Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. #######
	$secure_lane  = base64_encode(hash_hmac('sha256','PYMR'.$merchant_id.'KY'.$merchant_key.'SLT'.$merchant_salt.'C:'.date('dmydmy'),true));

$post_vals=array(
	'api_merchant_id'		=>$merchant_id, 			// MAĞAZA KODU
	'api_key'				=>$merchant_key,			// MAĞAZA KEY
	'api_secret'			=>$merchant_salt,			// MAĞAZA SECRET GİZLİ ANAHTAR
	'customer_namesurname'	=>$customer_namesurname,	// MÜŞTERİ ADSOYAD
	'customer_email'		=>$customer_email,			// MÜŞTERİ EPOSTA ADRESİ
	'customer_number'		=>$customer_number,			// MÜŞTERİ GSM NUMARASI
	'customer_address'		=>$customer_address,		// MÜŞTERİ ADRES BİLGİSİ
	'payment_amount'		=>$payment_amount,			// MÜŞTERİ ÖDEME TUTARI
	'merchant_oid'			=>$merchant_oid,			// MÜŞTERİ SİPARİŞ NUMARASI
	'user_basket'			=>$user_basket,				// MÜŞTERİ ÜRÜN BİLGİLERİ
	'payment_currency'		=>$payment_currency,		// PARA BİRİMİ
	'customer_ip'			=>$customer_ip,				// MÜŞTERİ KULLANICI IP ADRESİ
	'secure_lane'			=>$secure_lane				// PAYAMAR GÜVENLİK BİRİM ADIMI
	);

$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.payamar.com.tr/get-token");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1) ;
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_vals);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
$result = @curl_exec($ch);

if(curl_errno($ch))
	die("PAYAMAR PAYMENT BAGLANTI HATASI: ".curl_error($ch));

curl_close($ch);

$result=json_decode($result,1);

if($result['iframe_status']=='success'){
	$token 	=$result['payamar_vpos_token'];
	header("Location:https://payment.payamar.com.tr/".$token);
}else{
	die("PAYAMAR PAYMENT failed. reason: ".$result['error']);
}

Sonuç Sayfası


## 2. ADIM SONUÇ için örnek kodlar ##

## ÖNEMLİ UYARILAR ##
## 1) Bu sayfaya oturum (SESSION) ile veri taşıyamazsınız. Çünkü bu sayfa müşterilerin yönlendirildiği bir sayfa değildir.
## 2) Entegrasyonun 1. ADIM'ında gönderdiğniz merchant_oid değeri bu sayfaya POST ile gelir. Bu değeri kullanarak
## veri tabanınızdan ilgili siparişi tespit edip onaylamalı veya iptal etmelisiniz.
## 3) Aynı sipariş için birden fazla bildirim ulaşabilir (Ağ bağlantı sorunları vb. nedeniyle). Bu nedenle öncelikle
## siparişin durumunu veri tabanınızdan kontrol edin, eğer onaylandıysa tekrar işlem yapmayın. Örneği aşağıda bulunmaktadır.

$post = $_POST;

## PAYAMAR TARAFINDAN SİZE GÖNDERİLEN POST DEĞERLERİ
/*
  payment_status 			=> success
  payment_type 				=> 2
  payment_merchant_oid 		=> 75126 
  payment_total_amount 		=> 5000
  payment_amount 			=> 5000 
  payment_installment_count => 1
  payment_gain 				=> 50  (Kazançınız)
  currency 					=> TL 
  payment_secure_lane 		=> Güvenlik HASH Değeri Gelir. 
*/

####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################

## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
$merchant_id 			= 'xxxxx';				//Müşteri Mağaza Kodu				
$merchant_key 			= 'xxxxxxxxxxxx';		//Müşteri Mağaza Key Anahtarı
$merchant_salt			= 'xxxxxxxxxxxx';		//Müşteri Mağaza Gizli Anahtarı
###########################################################################

####### Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. #######

## hash oluştur.

$secure  = base64_encode(hash_hmac('sha256','PYMR'.$merchant_id.'KY'.$merchant_key.'SLT'.$merchant_salt.'C:'.date('dmydmy'),true));

if( $secure != $post['payment_secure_lane'] )
die('PAYAMAR notification failed: bad hash');

## BURADA YAPILMASI GEREKENLER
## 1) Siparişin durumunu $post['merchant_oid'] değerini kullanarak veri tabanınızdan sorgulayın.
## 2) Eğer sipariş zaten daha önceden onaylandıysa veya iptal edildiyse  echo "OK"; exit; yaparak sonlandırın.

/* Sipariş durum sorgulama örnek
	   $durum = SQL
   if($durum == "onay" || $durum == "iptal"){
		echo "OK";
		exit;
	}
 */

if( $post['payment_status'] == 'success' ) { 
	## Ödeme Onaylandı

	## BURADA YAPILMASI GEREKENLER
	## 1) Siparişi onaylayın.
	## 2) Eğer müşterinize mesaj / SMS / e-posta gibi bilgilendirme yapacaksanız bu aşamada yapmalısınız.
	## 3) 1. ADIM'da gönderilen payment_amount sipariş tutarı taksitli alışveriş yapılması durumunda
	## değişebilir. Güncel tutarı $post['payment_total_amount'] değerinden alarak muhasebe işlemlerinizde kullanabilirsiniz.

} else { 
	## Ödemeye Onay Verilmedi

	## BURADA YAPILMASI GEREKENLER
	## 1) Siparişi iptal edin.
}

## Bildirimin alındığını PAYAMAR sistemine bildir.
echo "OK";
exit;

Örnek Projeyi İndirmek İçin Tıklayınız.