• 10-03-2021, 09:34:39
    #10
    yusok32 adlı üyeden alıntı: mesajı görüntüle
    Hocam bende aynı sorunu yaşamıştım print_r ile post değerlerini yazdır ona göre işlem yap
    Print ile değerleri aldım ve görüntüledim, şimdi aldığım değerlere göre bir kurgu oluşturup sonuca bağlamak kaldı 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
    aynı sorunu ben de yaşıyorum. çözüm varsa buradan da paylaşırsanız sevinirim
    Demek neymiş, sadece bir kod üzerinde takılıp kalmamak gerekiyor ECHO ECHO diye tutturmayacaksın bazen print yada print_r de kullanacaksın
    $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 */
    ?>
  • 10-03-2021, 11:27:12
    #11
    Teşekkürler bilgilendirmeniz için. Umarım güvenlik açığı olmaz bu şekilde.
  • 10-03-2021, 11:49:54
    #12
    firat131 adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler bilgilendirmeniz için. Umarım güvenlik açığı olmaz bu şekilde.
    Güvenlik açığı olacağını düşünmüyorum, Shopier üzerinden gelen post ile kontrolü sağlıyorsun bu sebeple bir açık yaratmayacaktır diye bende düşünüyorum.
    Güvenlik konusunda üstad arkadaşlarımız daha da bilgi veren bir bilgi paylaşabilir bu konuda.
    Yoğun bir sipariş alımı olmayacak ise manuel olarak sistemi takip edin yani alınan sipariş ve shopier e ödeme alındı mı diye en sağlıklısı.
    Ben callback sayfasında biraz düzenlemeler yaptım kendime göre sistemime entegre edebilmek adına. Bakalım şu aşamadan sonra ki işlemlerin veritabanına işlenmesini sağlayacağım