• 30-08-2021, 15:18:25
    #1
    Merhabalar sophier apisi kullanarak ödeme yaptırıyorum fakat dönüş aldığımda sessionslar çalılşmıyor sessionsun önemi bakiye yüklencek fakat sessions bilgisi dönüş php dosyasından birden siliniyorlar mail bilgisi silindiği için ödeme başarılı fakat mysql sorgusu mail olmadığı için çalışmıyor ve bakiye eklenmiyor altta kodları paylaşıyorum teşekkürler


    ödeme yapmadan sayfada bütünb kodları silip sadece sessions değerini göster dediğimde sessionsda depolanan maili gösteriyor fakat ödeme yapıldığında o sessions değeri yok oluyor bütün sessionslar siliyor ve hesaptan atıyor

    sessionsların silinmemesini nasıl sağlayabilirim
    
    <?php
    session_start();
    include '../config/config23.php';
    $conn = new mysqli($servername, $username, $password, $dbname);
        require_once("connect.php");
        require_once("functions.php");
        if (isset($_POST["platform_order_id"]) && isset($_POST["status"]) && isset($_POST["installment"]) && isset($_POST["payment_id"]) && isset($_POST["random_nr"]) && isset($_POST["signature"])) {
            $signature  = base64_decode(post("signature"));
    
            $data       = post("random_nr").post("platform_order_id").post("total_order_value").post("currency");
            $expected   = hash_hmac('SHA256', $data, API_SECRET, true);
    
            if (strcmp($signature, $expected) == 0) {
                if (post("status") == 'success') {
                    $checkOrder = $db->prepare("SELECT id, status FROM orders WHERE id = ?");
                    $checkOrder->execute(array((int)post("platform_order_id")));
                    $orderRead = $checkOrder->fetch();
    
                    if ($checkOrder->rowCount() > 0 && $orderRead["status"] == 0) {
                        $updateOrder = $db->prepare("UPDATE orders SET shopier_order_id = ?, status = ? WHERE id = ?");
                        $updateOrder->execute(array((int)post("payment_id"), 1, $orderRead["id"]));
                    }
                    $mail2 = $_SESSION["mail"][0];
                    $sql2 = "SELECT * FROM users WHERE  mail='$mail2' LIMIT 1";
                    $sonuc = $conn->query($sql2);
                    $info = $sonuc->fetch_assoc();
                    $eski = $info["bakiye"];        
                    $eklenecek = $info["oldbakiye"];        
                    $güncel = $eski + $eklenecek;
                    $sql3 = "UPDATE users SET bakiye='$güncel' WHERE mail='$mail2'";
                    $conn->query($sql3);
                    go("basarili.php");
            
                }
                else {
                    go("error.php");
                }
            }
        }
        else {
            go("error.php");
        }
  • 30-08-2021, 15:19:19
    #2
    @leaver;

    PHP Shopier entegrasyonumuzu yapmıştı kendisi yardımcı olacaktır sizlere.
  • 30-08-2021, 15:20:13
    #3
    post olan değerleri $_POST olarak değişir misiniz ?
  • 30-08-2021, 15:20:57
    #4
    Dönüşte müşteri ID'si olması gerekiyor, onunla eposta bulup session oluşturun.
  • 30-08-2021, 15:21:22
    #5
    BySocial adlı üyeden alıntı: mesajı görüntüle
    post olan değerleri $_POST olarak değişir misiniz ?
    hocam sistem çalılıyor ödeme onaylandığında alttaki mysql kodları bakiye ekleme kodları çalışlıyor tek sorun sessions sillindiği için mail adresi yok oluyor ve bakiye eklenmiyıor
  • 30-08-2021, 15:22:07
    #6
    KeremWho adlı üyeden alıntı: mesajı görüntüle
    Dönüşte müşteri ID'si olması gerekiyor, onunla eposta bulup session oluşturun.
    hocam sophierin verdiği müşteri idsinden nasıl mail bulayım
  • 30-08-2021, 15:26:08
    #7
    Ödeme sayfanızın üstüne session_start fonksiyonunun hemen altına eklerseniz sorun çözülür.

    header('Set-Cookie: cross-site-cookie=name; SameSite=None; Secure');
  • 30-08-2021, 15:26:19
    #8
    oguzhanss adlı üyeden alıntı: mesajı görüntüle
    hocam sophierin verdiği müşteri idsinden nasıl mail bulayım
    Şöyle yapın, tuttuğunuz ödeme tablosuna müşteri id de ekleyin, gelen işlem id'sinden müşteri verisini de alın.
  • 30-08-2021, 15:28:13
    #9
    KeremWho adlı üyeden alıntı: mesajı görüntüle
    Şöyle yapın, tuttuğunuz ödeme tablosuna müşteri id de ekleyin, gelen işlem id'sinden müşteri verisini de alın.
    harikasınız hocam evet order tablosunda mailleri de tuttuğumu hatırladım ordan veriyi alıp users de güncelleyebilrim teşekkürler