Laravel Bigcommerce is a simple package which helps to build robust integration into bigcommerce. This package support the Version 2 and 3 of the Bigcommerce Api.
Add package to composer.json
composer require oseintow/laravel-bigcommerce
Add the service provider to config/app.php in the providers array.
<?php
'providers' => [
...
Oseintow\Bigcommerce\BigcommerceServiceProvider::class,
],
Setup alias for the Facade
<?php
'aliases' => [
...
'Bigcommerce' => Oseintow\Bigcommerce\Facades\Bigcommerce::class,
],
Laravel Bigcommerce requires connection configuration. You will need to publish vendor assets
php artisan vendor:publish
This will create a bigcommerce.php file in the config directory. You will need to set your auth keys
Set CLIENT ID , CLIENT SECRET AND REDIRECT URL
Set API_KEY , USERNAME AND STORE URL
Let's retrieve access token
Route::get("process_oauth_result",function(\Illuminate\Http\Request $request)
{
$response = Bigcommerce::getAccessToken($request->code, $request->scope, $request->context));
dd($response);
});
There are 2 ways to access resource from bigcommerce using this package.
- Using the http verbs(ie. this gives you more flexibility and also support api v3 and also returns laravel collection)
- Using Bigcommerce Collection (this does not support api v3 and laravel collection).
By default the package support API v3
To set it to version 2 or 3 use
Bigcommerce::setApiVersion('v2');
or
Bigcommerce::setApiVersion('v3');
Bigcommerce::get("resource uri",["query string params"]);
Bigcommerce::post("resource uri",["post body"]);
Bigcommerce::put("resource uri",["put body"]);
Bigcommerce::delete("resource uri");
Let use our access token to get products from bigcommerce.
NB: You can use this to access any resource on bigcommerce (be it Products, Shops, Orders, etc). And also you dont need store hash and access token when using basic auth.
$storeHash = "ecswer";
$accessToken = "xxxxxxxxxxxxxxxxxxxxx";
$products = Bigcommerce::setStoreHash($storeHash)->setAccessToken($accessToken)->get("products");
To pass query params
// returns Collection
$bigcommerce = Bigcommerce::setStoreHash($storeHash)->setAccessToken($accessToken);
$products = $bigcommerce->get("admin/products.json", ["limit"=>20, "page" => 1]);
If you prefer to use dependency injection over facades like me, then you can inject the Class:
use Illuminate\Http\Request;
use Oseintow\Bigcommerce\Bigcommerce;
class Foo
{
protected $bigcommerce;
public function __construct(Bigcommerce $bigcommerce)
{
$this->bigcommerce = $bigcommerce;
}
/*
* returns Collection
*/
public function getProducts(Request $request)
{
$products = $this->bigcommerce->setStoreHash($storeHash)
->setAccessToken($accessToken)
->get('products');
$products->each(function($product){
\Log::info($product->title);
});
}
}
To get Response headers
Bigcommerce::getHeaders();
To get specific header
Bigcommerce::getHeader("Content-Type");
To get response status code or status message
Bigcommerce::getStatus(); // 200
Use code below To test if configuration is correct. Returns false if unsuccessful otherwise return DateTime Object.
$time = Bigcommerce::getTime();
// oauth
$storeHash = "afw2w";
$accessToken = "xxxxxxxxxxxxxxxxxxxxx";
$products = Bigcommerce::setStoreHash($storeHash)->setAccessToken($accessToken)->getProducts();
//Basic Auth
$products = Bigcommerce::getProducts();
All the default collection methods support paging, by passing the page number to the method as an integer:
$products = Bigcommerce::getProducts(3);
If you require more specific numbering and paging, you can explicitly specify a limit parameter:
$filter = array("page" => 3, "limit" => 30);
$products = Bigcommerce::getProducts($filter);
To filter a collection, you can also pass parameters to filter by as key-value pairs:
$filter = array("is_featured" => true);
$featured = Bigcommerce::getProducts($filter);
See the API documentation for each resource for a list of supported filter parameters.
Updating existing resources (PUT)
To update a single resource:
$product = Bigcommerce::getProduct(11);
$product->name = "MacBook Air";
$product->price = 99.95;
$product->update();
For more info on the Bigcommerce Collection check this