• 23-02-2025, 23:59:32
    #1
    Selamlar sıfırdan kodlama yapıyorum shopier entegre bir türlü yapamadım. Yardımcı olabilir misiniz acaba?
    
    <?php
    // Tam yol belirtme
    define('ROOT_PATH', dirname(__DIR__));
    require_once ROOT_PATH . "/config.php";
    require_once ROOT_PATH . "/functions.php";
    require_once ROOT_PATH . "/includes/Shopier.php";
    
    // Debug için
    error_log('Callback başladı');
    error_log('POST verisi: ' . print_r($_POST, true));
    
    try {
        // Shopier'dan gelen verileri al
        $post = $_POST;
    
        // Shopier doğrulama
        $shopier = new Shopier($settings['shopier_api_key'], $settings['shopier_api_secret']);
        
        error_log('Shopier nesnesi oluşturuldu');
        
        if($shopier->verifyPayment($post)) {
            error_log('Ödeme doğrulandı');
            
            // Sipariş bilgilerini al
            $order_id = $post['platform_order_id'];
            $payment_id = $post['payment_id'];
            $status = $post['status'];
            
            if ($status === 'success') {
                // Ödeme başarılı
                $payment_query = mysqli_query($conn, "SELECT * FROM payments WHERE transaction_id = '$order_id' LIMIT 1");
                $payment = mysqli_fetch_assoc($payment_query);
                
                if ($payment) {
                    // Kullanıcı bakiyesini güncelle
                    $user_id = $payment['user_id'];
                    $amount = $payment['amount'];
                    
                    mysqli_query($conn, "UPDATE users SET balance = balance + $amount WHERE id = $user_id");
                    mysqli_query($conn, "UPDATE payments SET status = 'completed', transaction_id = '$payment_id' WHERE id = {$payment['id']}");
                    
                    error_log('Bakiye güncellendi');
                    
                    // Başarılı sayfasına yönlendir
                    header("Location: ../?sayfa=payment_success");
                    exit;
                }
            } else {
                error_log('Ödeme başarısız: ' . $status);
                // Ödeme başarısız
                header("Location: ../?sayfa=payment_failed");
                exit;
            }
        } else {
            error_log('İmza doğrulaması başarısız');
            // İmza doğrulaması başarısız
            header("Location: ../?sayfa=payment_failed");
            exit;
        }
    } catch (Exception $e) {
        error_log('Hata: ' . $e->getMessage());
        header("Location: ../?sayfa=payment_failed");
        exit;
    }
    callback sayfam böyle
    add balance sayfam da şöyle
    
    <?php
    if(!isset($_SESSION['user_id'])) {
        header("Location: ?sayfa=login");
        exit;
    }
    
    // Kullanıcı bilgilerini çek
    $user = mysqli_fetch_assoc(mysqli_query($conn, "SELECT * FROM users WHERE id = {$_SESSION['user_id']}"));
    
    // Ayarları veritabanından çek
    $settings_query = mysqli_query($conn, "SELECT * FROM settings");
    $settings = [];
    while($row = mysqli_fetch_assoc($settings_query)) {
        $settings[$row['name']] = $row['value'];
    }
    
    // Shopier sınıfını dahil et
    require_once 'includes/Shopier.php';
    
    // Bakiye yükleme işlemi
    if(isset($_POST['add_balance'])) {
        $amount = (float)$_POST['amount'];
        $min_payment = (float)$settings['min_payment'];
        $max_payment = (float)$settings['max_payment'];
        
        if($amount < $min_payment || $amount > $max_payment) {
            $error = "Yükleme tutarı {$min_payment} ₺ ile {$max_payment} ₺ arasında olmalıdır.";
        } else {
            // Shopier API anahtarlarını kontrol et
            if(empty($settings['shopier_api_key']) || empty($settings['shopier_api_secret'])) {
                $error = "Ödeme sistemi ayarları eksik. Lütfen site yöneticisi ile iletişime geçin.";
            } else {
                try {
                    // Ödeme kaydı oluştur
                    $order_id = time() . rand(1, 9999);
                    mysqli_query($conn, "INSERT INTO payments (user_id, amount, payment_method, transaction_id, status) 
                                       VALUES ({$user['id']}, $amount, 'shopier', '$order_id', 'pending')");
                    
                    // Shopier nesnesi oluştur
                    $shopier = new Shopier(
                        $settings['shopier_api_key'],
                        $settings['shopier_api_secret'],
                        $settings['shopier_test_mode'] == 1
                    );
                    
                    // Kullanıcı bilgileri
                    $buyer = [
                        'id' => $user['id'],
                        'name' => $user['username'],
                        'email' => $user['email'],
                        'phone' => '5555555555' // Telefon numarası 10 haneli olmalı
                    ];
                    
                    // Site URL'ini kontrol et ve https kullan
                    $site_url = !empty($settings['site_url']) ? $settings['site_url'] : 
                                "https://$_SERVER[HTTP_HOST]";
                    
                    // Debug için
                    error_log('Site URL: ' . $site_url);
                    error_log('Order ID: ' . $order_id);
                    error_log('Amount: ' . $amount);
                    
                    // Ödeme sayfasına yönlendir
                    $shopier->goToPayment(
                        $order_id,
                        $amount,
                        $site_url . "/shopier/callback.php",
                        $buyer
                    );
                } catch (Exception $e) {
                    $error = "Ödeme işlemi başlatılamadı: " . $e->getMessage();
                    
                    // Hata durumunda ödeme kaydını sil
                    mysqli_query($conn, "DELETE FROM payments WHERE transaction_id = '$order_id' AND status = 'pending'");
                }
            }
        }
    }
    
    // Eğer API anahtarları eksikse admin için uyarı göster
    if(isset($_SESSION['is_admin']) && $_SESSION['is_admin'] && (empty($settings['shopier_api_key']) || empty($settings['shopier_api_secret']))) {
        $warning = 'Shopier API anahtarları ayarlanmamış. <a href="admin/?sayfa=settings">Buradan ayarlayabilirsiniz</a>.';
    }
    ?>
    
    <div class="container py-5">
        <div class="row justify-content-center">
            <div class="col-md-6">
                <div class="card">
                    <div class="card-body">
                        <h3 class="card-title text-center mb-4">Bakiye Yükle</h3>
                        
                        <?php if(isset($error)): ?>
                        <div class="alert alert-danger">
                            <?php echo $error; ?>
                        </div>
                        <?php endif; ?>
                        
                        <!-- Uyarı mesajını göster -->
                        <?php if(isset($warning)): ?>
                        <div class="alert alert-warning alert-dismissible fade show" role="alert">
                            <?php echo $warning; ?>
                            <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
                        </div>
                        <?php endif; ?>
                        
                        <!-- Mevcut Bakiye -->
                        <div class="text-center mb-4">
                            <div class="h5 text-muted mb-2">Mevcut Bakiye</div>
                            <div class="h2 text-primary"><?php echo number_format($user['balance'], 2); ?> ₺</div>
                        </div>
                        
                        <!-- Bakiye Yükleme Formu -->
                        <form method="POST" class="add-balance-form">
                            <div class="mb-4">
                                <label class="form-label">Yüklenecek Tutar</label>
                                <div class="input-group">
                                    <input type="number" name="amount" class="form-control form-control-lg" 
                                           min="<?php echo $settings['min_payment']; ?>" 
                                           max="<?php echo $settings['max_payment']; ?>" 
                                           step="1" required>
                                    <span class="input-group-text">₺</span>
                                </div>
                                <small class="text-muted">
                                    Min: <?php echo number_format($settings['min_payment']); ?> ₺ - 
                                    Max: <?php echo number_format($settings['max_payment']); ?> ₺
                                </small>
                            </div>
                            
                            <!-- Hızlı Tutar Seçimi -->
                            <div class="quick-amounts mb-4">
                                <div class="row g-2">
                                    <?php
                                    $amounts = [10, 20, 50, 100, 250, 500];
                                    foreach($amounts as $amount):
                                    ?>
                                    <div class="col-4">
                                        <button type="button" class="btn btn-outline-primary w-100 amount-btn" 
                                                data-amount="<?php echo $amount; ?>">
                                            <?php echo $amount; ?> ₺
                                        </button>
                                    </div>
                                    <?php endforeach; ?>
                                </div>
                            </div>
                            
                            <!-- Ödeme Yöntemi -->
                            <div class="payment-method mb-4">
                                <div class="d-flex align-items-center p-3 bg-light rounded">
                                    <img src="images/shopier-logo.png" alt="Shopier" height="30">
                                    <div class="ms-3">
                                        <div class="fw-bold">Shopier</div>
                                        <small class="text-muted">Güvenli Ödeme</small>
                                    </div>
                                    <div class="ms-auto">
                                        <i class="fas fa-check-circle text-success"></i>
                                    </div>
                                </div>
                            </div>
                            
                            <button type="submit" name="add_balance" class="btn btn-primary btn-lg w-100">
                                <i class="fas fa-plus-circle me-2"></i>Bakiye Yükle
                            </button>
                        </form>
                    </div>
                </div>
                
                <!-- Son İşlemler -->
                <div class="card mt-4">
                    <div class="card-body">
                        <h5 class="card-title">Son İşlemler</h5>
                        <div class="table-responsive">
                            <table class="table table-hover">
                                <thead>
                                    <tr>
                                        <th>Tarih</th>
                                        <th>Tutar</th>
                                        <th>Durum</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php
                                    $payments = mysqli_query($conn, "
                                        SELECT * FROM payments 
                                        WHERE user_id = {$user['id']} 
                                        ORDER BY id DESC LIMIT 5
                                    ");
                                    while($payment = mysqli_fetch_assoc($payments)):
                                    ?>
                                    <tr>
                                        <td><?php echo date('d.m.Y H:i', strtotime($payment['created_at'])); ?></td>
                                        <td><?php echo number_format($payment['amount'], 2); ?> ₺</td>
                                        <td>
                                            <span class="badge bg-<?php 
                                                echo $payment['status'] == 'completed' ? 'success' : 
                                                    ($payment['status'] == 'pending' ? 'warning' : 'danger'); 
                                            ?>">
                                                <?php echo ucfirst($payment['status']); ?>
                                            </span>
                                        </td>
                                    </tr>
                                    <?php endwhile; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    
    <style>
    .add-balance-form .amount-btn {
        padding: 0.75rem;
        font-weight: 500;
    }
    
    .add-balance-form .amount-btn:hover {
        background: var(--primary-color);
        color: white;
        border-color: var(--primary-color);
    }
    
    .payment-method {
        border: 2px solid #eee;
        border-radius: 10px;
        cursor: not-allowed;
    }
    
    @media (max-width: 768px) {
        .amount-btn {
            padding: 0.5rem;
            font-size: 0.9rem;
        }
    }
    </style>
    
    <script>
    // Hızlı tutar seçimi
    $('.amount-btn').click(function() {
        $('input[name="amount"]').val($(this).data('amount'));
    });
    </script>
  • 24-02-2025, 00:04:00
    #2
    @deffydark; Kodları paylaşmışsında aldığın hata veya yaşadığın sorun nedir bu kodlarda çalışmayan nedir?
  • 24-02-2025, 00:06:54
    #3
    iyovi adlı üyeden alıntı: mesajı görüntüle
    @deffydark; Kodları paylaşmışsında aldığın hata veya yaşadığın sorun nedir bu kodlarda çalışmayan nedir?
    herhangi bir errorlog düşmüyor
    shopier yönlendirince şu ekran çıkıyor sadece
  • 24-02-2025, 00:13:28
    #4
    deffydark adlı üyeden alıntı: mesajı görüntüle
    herhangi bir errorlog düşmüyor
    shopier yönlendirince şu ekran çıkıyor sadece
    https://www.r10.net/php/4299100-shop...egrasyonu.html Bak bu konuda Shopier Entegrasyonunu yapabileceğin tüm materyalleri hem konu altına ekledim hemde satır satır yazdım gir bak incele entegrasyonunu ona göre yap her şey stabil şekilde çalışacaktır dostum.