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>