kudobuzz/laravel-bigcommerce
Laravel Bigcommerce
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.
Installation
Add package to composer.json
composer require kudobuzz/laravel-bigcommerce
Add the service provider to config/app.php in the providers array.
<?php
'providers' => [
...
Kudobuzz\Bigcommerce\BigcommerceServiceProvider::class,
],
Setup alias for the Facade
<?php
'aliases' => [
...
'Bigcommerce' => Kudobuzz\Bigcommerce\Facades\Bigcommerce::class,
],
Configuration
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
OAUTH
Set CLIENT ID , CLIENT SECRET AND REDIRECT URL
BasicAuth
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);
});
Usage
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');
Using Http verbs
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]);
Controller Example
If you prefer to use dependency injection over facades like me, then you can inject the Class:
use Illuminate\Http\Request;
use Kudobuzz\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);
});
}
}
Miscellaneous
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
Using Bigcommerce Collection
Testing Configuration
Use code below To test if configuration is correct. Returns false if unsuccessful otherwise return DateTime Object.
$time = Bigcommerce::getTime();
Accessing Resources
// oauth
$storeHash = "afw2w";
$accessToken = "xxxxxxxxxxxxxxxxxxxxx";
$products = Bigcommerce::setStoreHash($storeHash)->setAccessToken($accessToken)->getProducts();
//Basic Auth
$products = Bigcommerce::getProducts();
Paging and Filtering
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
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v1.0.1 | >=7.0.0 | ^5.4 | MIT | |
| v1.0.0 | >=7.0.0 | ^5.4 | MIT |