• 24-11-2024, 23:41:58
    #1
    fetch(my_ajax_object.ajax_url, {
    method: 'POST',
            headers: {
    'Content-Type': 'application/json',
            },
            body: JSON.stringify({
    action: 'process_checkout',
                nonce: my_ajax_object.nonce_process_checkout,
                selected_price: selectedPriceValue,
                quote_id: quoteId,
            }),
        })
    .then(response => {
    console.log('Raw Response:', response);
                return response.json();
            })
    .then(data => {
    console.log('Parsed Response:', data);
                if (data.success) {
    window.location.href = nextStepPath;
                } else {
    console.error('Error:', data.message);
                    alert('An error occurred. Please try again.');
                }
    })
    .catch(error => {
    console.error('Error:', error);
            });
    }


    <?php
    function handle_process_checkout() {
    // Start session if not already started
        if (session_status() === PHP_SESSION_NONE) {
    session_start();
        }
    
    // Verify nonce for security
        if (!isset($_POST['nonce']) || !wp_verify_nonce($_POST['nonce'], 'process_checkout_nonce')) {
    wp_send_json_error(['message' => 'Unauthorized request. Invalid or missing nonce.'], 403);
            return;
        }
    
    // Capture and validate incoming data
        $selected_price = isset($_POST['selected_price']) ? floatval($_POST['selected_price']) : 0.00;
    
        $valid_options = ['cash_price', 'regular_price'];
        if (empty($selected_price_option) || !in_array($selected_price_option, $valid_options)) {
    wp_send_json_error(['message' => 'Invalid or missing selected_price_option.'], 400);
            return;
        }
    
    $quote_id = sanitize_text_field($_SESSION['quote_id'] ?? ($_POST['quote_id'] ?? ''));
        if (empty($quote_id)) {
    wp_send_json_error(['message' => 'Missing quote ID.'], 400);
            return;
        }
    
    // Ensure session data exists for prices and cast as float
        $cash_price = isset($_SESSION['cash_price']) ? floatval($_SESSION['cash_price']) : 0.00;
        $regular_price = isset($_SESSION['regular_price']) ? floatval($_SESSION['regular_price']) : 0.00;
    
        // Determine the selected price value
        $selected_price_value = ($selected_price_option === 'cash_price') ? $cash_price : $regular_price;
    
        // Update session with selected price value
        $_SESSION['selected_price'] = $selected_price_value;
    
        // Update the database with the numeric value
        global $wpdb;
        $table_name = $wpdb->prefix . 'jet_cct_instant_quotes';
        $result = $wpdb->update(
    $table_name,
            [
    'selected_price' => $selected_price_value // Use the calculated value
            ],
            [
    'quote_id' => $quote_id
            ],
            [
    '%f' // Float format for the selected_price
            ],
            [
    '%s' // String format for quote_id
            ]
    );
    
        // Check for database errors
        if ($result === false) {
    wp_send_json_error([
    'message' => 'Database update failed.',
                'query_error' => $wpdb->last_error ?: 'No database error reported.',
            ], 500);
            return;
        }
    
    // Respond with success
        wp_send_json_success([
    'message' => 'Selected price saved successfully.',
            'selected_price' => $selected_price_value,
        ]);
    }
    
    // Register the AJAX handlers for logged-in and logged-out users
    add_action('wp_ajax_nopriv_process_checkout', 'handle_process_checkout'); // For non-logged-in users
    add_action('wp_ajax_process_checkout', 'handle_process_checkout');       // For logged-in users

    Hata kodu 400 aliyorum
  • 24-11-2024, 23:49:01
    #2
    https://pyroautotransport.com/checko...-7fd1b94080f1/

    Yukaridaki linkte Turuncu butona basip checkout sayfasinda ileri ve geri gitme fonsyonu Ajax ile GET Methodu nu kullandim. calisiyor. Ayni Olayi POST ile yapamadim.

    Beyler Yukaridaki yaziyi konuya eklemek istedim ama 24 saat icinde duzenleme yaptirmiyor.

    Edit......
    Sorunu cozdum beyler. functions.php dosyasindan tanimlamak lazimmis ajax request. baska dosyada tutarsak fucntion.php icerine require_once('dosya-adi.php'); calisti