yusok32 adlı üyeden alıntı:
mesajı görüntüle
En son noktada arkadaşların sorunu çözemeyen arkadaşların da sorununa çare olabilmesi için kodları paylaşacağım burada muhakkak.
firat131 adlı üyeden alıntı:
mesajı görüntüle
$signature ve $expected değerlerinin eşleşip eşleşmediğini kontrol ediyor yazılım yalnız gelen değerler eşleşmediği için sayfa beyaz oluyordu.
Bu iki değer birbirinden farklı olduğu için de devam etmiyor sanırım bu durum da shopier in yazılımını güncellemesi yada yazılımdaki decode veya hashleme doğru olmadığı için olabilir.
Önemli olan gelen status 'ün SUCCESS olup olmadığını kontrol etmek olduğu için onun gelen cevabı success ise gereken işlemi yaptırması yeterli benim için.
Çözüm şu şekilde oldu ( /* BU ALANI KALDIRDIM */ yazan yerleri sildim ) :
<?php
//Shopierdan gelen postlar.
$status = $_POST["status"];
$invoiceId = $_POST["platform_order_id"];
$transactionId = $_POST["payment_id"];
$installment = $_POST["installment"];
$signature = $_POST["signature"];
/* Bu kısımda kullanıcının işlem başarılı ve başarısızsa yönleneceği değişkenlerdir. */
$url = 'https://xxxx.com.tr/';
$locationtrue = $url."order?orderNo=$invoiceId";
$locationfalse = $url."order?orderNo=none";
/* Bu kısımda kullanıcının işlem başarılı ve başarısızsa yönleneceği değişkenlerdir. */
$data = $_POST["random_nr"] . $_POST["platform_order_id"] . $_POST["total_order_value"] . $_POST["currency"];
$signature = base64_decode($signature);
$expected = hash_hmac('SHA256', $data, $shopierSecret, true);
if ($signature == $expected) { /* BU ALANI KALDIRDIM */
$statusCRME = strtolower($status);
if ($statusCRME == "success") {
//İşlem başarılı ise yapacaklarınız
header("Location: $locationtrue");
}
else{
// İşlem başarısız ise yapacaklarınız.
header("Location: $locationfalse");
}
} /* BU ALANI KALDIRDIM */
?>