tims/laravel-flipkart-seller-api

Laravel integration for the Flipkart Seller API PHP SDK (tims/flipkart-seller-api-php)

Maintainers

Package info

github.com/timslabs/laravel-flipkart-seller-api

pkg:composer/tims/laravel-flipkart-seller-api

Transparency log

Statistics

Installs: 4

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-07-14 02:30 UTC

This package is auto-updated.

Last update: 2026-07-14 02:35:55 UTC


README

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 FlipkartSellerApi facade
  • 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

  1. Set FLIPKART_SELLER_INSTALLATION_TYPE=multi (or installation_type in config).
  2. Publish and run migrations:
php artisan vendor:publish --tag=flipkart-seller-api-multi-seller
php artisan migrate
  1. 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),
]);
  1. 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