<?php
session_start();
echo !defined("ADMIN") ? die(go(ADMIN_URL . 'index.php?sayfa=404')) : null;
## 2. ADIM 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;
####################### DÜZENLEMESİ ZORUNLU ALANLAR #######################
#
## API Entegrasyon Bilgileri - Mağaza paneline giriş yaparak BİLGİ sayfasından alabilirsiniz.
$merchant_key = 'KeyYazılı';
$merchant_salt = 'SaltYazılı';
################################################## #########################
####### Bu kısımda herhangi bir değişiklik yapmanıza gerek yoktur. #######
#
## POST değerleri ile hash oluştur.
$hash = base64_encode(hash_hmac('sha256', $post['merchant_oid'] . $merchant_salt . $post['status'] . $post['total_amount'], $merchant_key, true));
#
## Oluşturulan hash'i, paytr'dan gelen post içindeki hash ile karşılaştır (isteğin paytr'dan geldiğine ve değişmediğine emin olmak için)
## Bu işlemi yapmazsanız maddi zarara uğramanız olasıdır.
if ($hash != $post['hash'])
die('PAYTR notification failed: bad hash '.$post['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
$teslimkod = $_SESSION["teslimkod"];
// Teslim koduna göre işlemi alın
$islemss = $db->query("SELECT * FROM islem WHERE teslimkod = '$teslimkod'")->fetch(PDO::FETCH_ASSOC);
$randomKey = $islemss["randomKey"];
if ($islemss) {
$durum = $islemss["randomKey"];
$post['merchant_oid'] = $durum;
if ($durum == "onay" || $durum == "iptal") {
echo "OK";
exit;
}
}
if ($post['status'] == 'success') { ## Ödeme Onaylandı
$update = $db->query("UPDATE islem SET siparisdurum = 1 WHERE randomKey = '$randomKey '");
## 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['total_amount'] değerinden alarak muhasebe işlemlerinizde kullanabilirsiniz.
} else { ## Ödemeye Onay Verilmedi
## BURADA YAPILMASI GEREKENLER
## 1) Siparişi iptal edin.
## 2) Eğer ödemenin onaylanmama sebebini kayıt edecekseniz aşağıdaki değerleri kullanabilirsiniz.
$failed_reason_code = $post['failed_reason_code'];
$failed_reason_msg = $post['failed_reason_msg'];
}
var_dump($randomKey);
## Bildirimin alındığını PayTR sistemine bildir.
echo "OK";
exit;PAYTR notification failed: bad hash hatasıNerede hata var yardımcı olurmusunuz rıca etsem