Skip to main content

Basic Usage

Common operations with the PHP SDK.

Initialization

<?php

use LoyaltyLt\SDK\LoyaltySDK;

$sdk = new LoyaltySDK([
    'apiKey' => 'lty_your_api_key',
    'apiSecret' => 'your_api_secret',
    'environment' => 'production',
    'locale' => 'lt',
    'debug' => true, // Enable for development
]);

Shops

// Get all shops
$shops = $sdk->getShops();
print_r($shops['data']); // Array of shops
print_r($shops['meta']); // Pagination

// Filter shops
$activeShops = $sdk->getShops([
    'is_active' => true,
    'is_virtual' => false,
]);

Loyalty Cards

// Get all cards
$cards = $sdk->getLoyaltyCards();

// Get single card
$card = $sdk->getLoyaltyCard(123);

// Get card by number
$cardInfo = $sdk->getLoyaltyCardInfo([
    'card_number' => '123-456-789'
]);

// Get points balance
$balance = $sdk->getPointsBalance(['card_id' => 123]);
echo "Points: " . $balance['current_points'];

Transactions & Points

Create Transaction (Award Points)

$transaction = $sdk->createTransaction([
    'card_id' => 123,
    'amount' => 50.00,
    'points' => 50,
    'type' => 'earn',
    'description' => 'Purchase reward',
    'reference' => 'ORDER-12345',
]);

echo "Transaction ID: " . $transaction['id'];
echo "Points awarded: " . $transaction['points'];

Get Transactions

$transactions = $sdk->getTransactions([
    'card_id' => 123,
    'type' => 'earn',
    'page' => 1,
    'per_page' => 20,
]);

Offers

// Get offers
$offers = $sdk->getOffers(['is_active' => true]);

// Get single offer
$offer = $sdk->getOffer(456);

// Create offer
$newOffer = $sdk->createOffer([
    'title' => 'Summer Sale',
    'description' => '20% off all items',
    'discount_type' => 'percentage',
    'discount_value' => 20,
]);

// Update offer
$sdk->updateOffer(456, ['title' => 'Updated Title']);

// Delete offer
$sdk->deleteOffer(456);

// Get categories
$categories = $sdk->getCategories();

XML Import

// Import from URL
$result = $sdk->importFromUrl('https://example.com/offers.xml', [
    'auto_publish' => true,
]);

// Validate XML
$validation = $sdk->validateXml('https://example.com/offers.xml');

// Get import stats
$stats = $sdk->getImportStats();

Error Handling

use LoyaltyLt\SDK\Exceptions\LoyaltySDKException;

try {
    $result = $sdk->getLoyaltyCardInfo(['card_number' => 'INVALID']);
} catch (LoyaltySDKException $e) {
    echo "Error: " . $e->getMessage();
    echo "Code: " . $e->getErrorCode();
    echo "HTTP Status: " . $e->getHttpStatus();
    
    // Handle specific errors
    switch ($e->getErrorCode()) {
        case 'CARD_NOT_FOUND':
            echo "Card not found!";
            break;
    }
}

Laravel Integration

Service Provider

// config/services.php
'loyalty' => [
    'api_key' => env('LOYALTY_API_KEY'),
    'api_secret' => env('LOYALTY_API_SECRET'),
    'environment' => env('LOYALTY_ENVIRONMENT', 'production'),
],
// app/Providers/AppServiceProvider.php
use LoyaltyLt\SDK\LoyaltySDK;

public function register()
{
    $this->app->singleton(LoyaltySDK::class, function ($app) {
        return new LoyaltySDK([
            'apiKey' => config('services.loyalty.api_key'),
            'apiSecret' => config('services.loyalty.api_secret'),
            'environment' => config('services.loyalty.environment'),
        ]);
    });
}

Controller Usage

use LoyaltyLt\SDK\LoyaltySDK;

class LoyaltyController extends Controller
{
    public function __construct(private LoyaltySDK $loyalty) {}
    
    public function processTransaction(Request $request)
    {
        $transaction = $this->loyalty->createTransaction([
            'card_id' => $request->card_id,
            'amount' => $request->amount,
            'shop_id' => $request->shop_id,
            'description' => 'Purchase',
        ]);
        
        return response()->json($transaction);
    }
}

Next Steps