oseintow/laravel-bigcommerce

Laravel bigcommerce package
8,826 14
Install
composer require oseintow/laravel-bigcommerce
Latest Version:v1.0.1
PHP:>=7.0.0
License:MIT
Last Updated:Aug 21, 2017
Links: GitHub  ·  Packagist
Maintainer: oseintow

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 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.

  1. Using the http verbs(ie. this gives you more flexibility and also support api v3 and also returns laravel collection)
  2. 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

Related Packages

erirk/paypalpayment

laravel-paypalpayment is simple package help you process direct credit card paym...

0
gabrieloliverio/laravel5-generators

Database metadata-based generators for Laravel 5

1
doctrine/dbal

Powerful PHP database abstraction layer (DBAL) with many features for database s...

628,058,007 9,707
laravel/framework

The Laravel Framework.

576,155,700 34,907
laravel/tinker

Powerful REPL for the Laravel framework.

485,678,092 7,440