laravel-flipkart-seller-api maintained by tims
laravel-flipkart-seller-api
Laravel integration for the Flipkart Seller API PHP SDK (tims/flipkart-seller-api-php).
Why this package?
tims/flipkart-seller-api-php is the API client. This package adds the Laravel layer around it:
- Config and environment-based credentials
- Single-seller and multi-seller credential storage
- Access-token caching via Laravel Cache
- OAuth helpers for third-party authorization-code flow
- HTTP retries for 429 and transient 5xx responses
- Service-container bindings and a
FlipkartSellerApifacade - Test fakes via
FlipkartSellerFake
You continue to call official Flipkart\SellerApi\Api\... classes (or FlipkartSellerClient); this package configures and supports them in Laravel.
Requirements
- PHP 8.3+
- Laravel 10, 11, or 12
Installation
composer require tims/laravel-flipkart-seller-api
Publish the config:
php artisan vendor:publish --tag=flipkart-seller-api-config
Configuration
Add these to your .env:
FLIPKART_SELLER_INSTALLATION_TYPE=single
FLIPKART_SELLER_CLIENT_ID=
FLIPKART_SELLER_CLIENT_SECRET=
# PROD or SANDBOX
FLIPKART_SELLER_ENVIRONMENT=SANDBOX
# Optional (third-party OAuth)
FLIPKART_SELLER_REDIRECT_URI=https://your-app.test/flipkart/callback
# Token cache (enabled by default)
FLIPKART_SELLER_TOKEN_CACHE=true
# Retries for 429 / 5xx (enabled by default)
FLIPKART_SELLER_RETRY_ENABLED=true
FLIPKART_SELLER_RETRY_MAX_ATTEMPTS=3
FLIPKART_SELLER_RETRY_BASE_DELAY_MS=500
Single-seller mode
Type-hint FlipkartSellerManager or use the facade:
use Flipkart\SellerApi\Api\ListingsCommonV3Api;
use Tims\FlipkartSellerApi\Facades\FlipkartSellerApi;
use Tims\FlipkartSellerApi\FlipkartSellerManager;
public function index(FlipkartSellerManager $flipkart)
{
$client = $flipkart->client();
$listings = $client->listingsCommonV3()->getListings('SKU1,SKU2');
return response()->json($listings);
}
// Or build an official API class directly:
$api = FlipkartSellerApi::make(ListingsCommonV3Api::class);
$result = $api->getListings('SKU1,SKU2');
In single-seller mode you can also resolve Flipkart\SellerApi\FlipkartSellerClient and Flipkart\SellerApi\ApiClient from the container.
Multi-seller mode
- Set
FLIPKART_SELLER_INSTALLATION_TYPE=multi(orinstallation_typein config). - Publish and run migrations:
php artisan vendor:publish --tag=flipkart-seller-api-multi-seller
php artisan migrate
- Store sellers and credentials:
use Tims\FlipkartSellerApi\Models\Credentials;
use Tims\FlipkartSellerApi\Models\Seller;
$seller = Seller::create(['name' => 'My Seller']);
$credentials = Credentials::create([
'seller_id' => $seller->id,
'environment' => 'SANDBOX',
// Optional when using shared app credentials from .env
'client_id' => null,
'client_secret' => null,
// Or store a token from OAuth (preferred for third-party apps)
'access_token' => '…',
'access_token_expires_at' => now()->addSeconds(5184000),
]);
- Build clients from a credentials row:
use Flipkart\SellerApi\Api\OrdersV2Api;
$api = $credentials->make(OrdersV2Api::class);
$result = $api->searchOrderItemRequest([/* … */]);
// Or the high-level client:
$client = $credentials->client();
$shipments = $client->shipmentV3()->searchPreDispatchShipmentGet();
client_id / client_secret fall back to the single-seller env values when left null. Secrets and access tokens are stored encrypted.
OAuth (third-party apps)
use Tims\FlipkartSellerApi\OAuth;
$oauth = OAuth::fromConfig();
$authorizeUrl = $oauth->getAuthorizationUri(state: $state);
// After Flipkart redirects back with code + state:
$payload = $oauth->getAccessToken(
authorizationCode: $request->query('code'),
state: $request->query('state'),
);
// Store $payload['access_token'] (and expires_in) on Credentials
Retries
HTTP retries for 429 / 5xx / connection errors are enabled by default. Disable globally via config or per client:
$api = FlipkartSellerApi::make(ListingsCommonV3Api::class, options: ['retry' => false]);
Testing
use Flipkart\SellerApi\Api\ListingsCommonV3Api;
use Tims\FlipkartSellerApi\Facades\FlipkartSellerApi;
use Tims\FlipkartSellerApi\Testing\FlipkartSellerFake;
$fake = FlipkartSellerFake::start();
$fake->mock(ListingsCommonV3Api::class, function ($api) {
$api->shouldReceive('getListings')->andReturn(['items' => []]);
});
$result = FlipkartSellerApi::make(ListingsCommonV3Api::class)->getListings('SKU1');
License
MIT