oseintow / laravel-bigcommerce
Laravel bigcommerce package
Installs: 8 810
Dependents: 0
Suggesters: 0
Security: 0
Stars: 14
Watchers: 3
Forks: 11
Open Issues: 2
Requires
- php: >=7.0.0
- bigcommerce/api: ^3.0
- illuminate/support: ^5.4
This package is auto-updated.
Last update: 2024-11-05 18:54:29 UTC
README
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 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, ],
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 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); }); } }
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