PHP code example of santosdave / jambojet-laravel

1. Go to this page and download the library: Download santosdave/jambojet-laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

santosdave / jambojet-laravel example snippets



// config/jambojet.php

return [
    'base_url' => env('JAMBOJET_BASE_URL', 'https://api.jambojet.com/'),
    'subscription_key' => env('JAMBOJET_SUBSCRIPTION_KEY'),
    'timeout' => env('JAMBOJET_TIMEOUT', 30),
    'retry_attempts' => env('JAMBOJET_RETRY_ATTEMPTS', 3),
    'environment' => env('JAMBOJET_ENVIRONMENT', 'test'),

    'logging' => [
        'enabled' => env('JAMBOJET_LOG_ENABLED', true),
        'channel' => env('JAMBOJET_LOG_CHANNEL', 'stack'),
        'level' => env('JAMBOJET_LOG_LEVEL', 'info'),
    ],
];



antosDave\JamboJet\JamboJetClient;

$client = new JamboJetClient([
    'base_url' => 'https://api.jambojet.com/',
    'subscription_key' => 'your-key-here'
]);



// 1. Search for flights
$searchCriteria = [
    'origin' => 'NBO',
    'destination' => 'MBA',
    'departureDate' => '2024-12-15',
    'adult' => 1
];

$availability = $client->booking()->getAvailability($searchCriteria);

// 2. Select flight and get sell key
$sellKey = $availability['data']['trips'][0]['journeysAvailable'][0]['journeys'][0]['sellKey'];

// 3. Create booking
$bookingRequest = [
    'sellKeys' => [$sellKey],
    'passengers' => [
        [
            'name' => [
                'first' => 'John',
                'last' => 'Doe'
            ],
            'passengerTypeCode' => 'ADT',
            'gender' => 'Male'
        ]
    ],
    'contact' => [
        'emails' => ['[email protected]'],
        'phoneNumbers' => ['+254700000000']
    ]
];

$booking = $client->booking()->createBooking($bookingRequest);
$recordLocator = $booking['data']['recordLocator'];

// 4. Process payment
$paymentData = [
    'paymentMethodType' => 'ExternalAccount',
    'paymentMethodCode' => 'MC',
    'accountNumber' => '5123456789012346',
    'expiration' => '2025-12',
    'accountHolderName' => 'John Doe',
    'paymentFields' => [
        ['fieldName' => 'VerificationCode', 'fieldValue' => '123']
    ]
];

$payment = $client->payment()->addPaymentToBooking($recordLocator, $paymentData);

// 5. Retrieve booking confirmation
$confirmation = $client->booking()->getBooking($recordLocator);

echo "Booking successful! PNR: " . $recordLocator;

// Search flights
$availability = $client->booking()->getAvailability($criteria);

// Create booking
$booking = $client->booking()->createBooking($request);

// Modify booking
$modified = $client->booking()->updateBooking($recordLocator, $changes);

// Cancel booking
$cancelled = $client->booking()->cancelBooking($recordLocator);

// Retrieve booking
$details = $client->booking()->getBooking($recordLocator);

// Add passenger
$passenger = $client->bookingPassengers()->addPassenger($recordLocator, $passengerData);

// Add SSR (Special Service Request)
$ssr = $client->bookingPassengers()->addSSR($recordLocator, $ssrData);

// Update passenger information
$updated = $client->bookingPassengers()->updatePassenger($recordLocator, $passengerId, $updates);

// Add travel documents
$document = $client->bookingPassengers()->addTravelDocument($recordLocator, $passengerId, $documentData);

// Add payment
$payment = $client->payment()->addPaymentToBooking($recordLocator, $paymentData);

// Process refund
$refund = $client->payment()->processRefund($recordLocator, $refundData);

// Set up installments
$installment = $client->payment()->createInstallmentPlan($recordLocator, $planData);

// Get payment status
$status = $client->payment()->getPaymentStatus($recordLocator);

// Seat selection
$seat = $client->booking()->assignSeat($recordLocator, $seatData);

// Add baggage
$baggage = $client->booking()->addBaggage($recordLocator, $baggageData);

// Add meal
$meal = $client->booking()->addMeal($recordLocator, $mealData);

// Add insurance
$insurance = $client->booking()->addInsurance($recordLocator, $insuranceData);



use SantosDave\JamboJet\Exceptions\JamboJetApiException;
use SantosDave\JamboJet\Exceptions\JamboJetValidationException;
use SantosDave\JamboJet\Exceptions\JamboJetAuthenticationException;

try {
    $booking = $client->booking()->createBooking($request);
} catch (JamboJetValidationException $e) {
    // Handle validation errors (400)
    echo "Validation Error: " . $e->getMessage();
    $errors = $e->getValidationErrors();
} catch (JamboJetAuthenticationException $e) {
    // Handle authentication errors (401)
    echo "Authentication Error: " . $e->getMessage();
} catch (JamboJetApiException $e) {
    // Handle general API errors
    echo "API Error: " . $e->getMessage();
    echo "Status Code: " . $e->getStatusCode();
}