Basic Usage
Common operations with the PHP SDK.Initialization
Copy
<?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
Copy
// 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
Copy
// 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)
Copy
$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
Copy
$transactions = $sdk->getTransactions([
'card_id' => 123,
'type' => 'earn',
'page' => 1,
'per_page' => 20,
]);
Offers
Copy
// 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
Copy
// 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
Copy
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
Copy
// config/services.php
'loyalty' => [
'api_key' => env('LOYALTY_API_KEY'),
'api_secret' => env('LOYALTY_API_SECRET'),
'environment' => env('LOYALTY_ENVIRONMENT', 'production'),
],
Copy
// 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
Copy
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);
}
}