kudobuzz/laravel-shopify
Laravel Shopify
Laravel Shopify is a simple package which helps to build robust integration into Shopify.
Installation
Add package to composer.json
composer require kudobuzz/laravel-shopify
Laravel 5.5+
Package auto discovery will take care of setting up the alias and facade for you
Laravel 5.4 <
Add the service provider to config/app.php in the providers array.
<?php
'providers' => [
...
Kudobuzz\Shopify\ShopifyServiceProvider::class,
],
Setup alias for the Facade
<?php
'aliases' => [
...
'Shopify' => Kudobuzz\Shopify\Facades\Shopify::class,
],
Configuration
Laravel Shopify requires connection configuration. You will need to publish vendor assets
php artisan vendor:publish
This will create a shopify.php file in the config directory. You will need to set your API_KEY and SECRET
Usage
To install/integrate a shop you will need to initiate an oauth authentication with the shopify API and this require three components.
They are:
1. Shop URL (eg. example.myshopify.com)
2. Scope (eg. write_products, read_orders, etc)
3. Redirect URL (eg. http://mydomain.com/process_oauth_result)
This process will enable us to obtain the shops access token
use Kudobuzz\Shopify\Facades\Shopify;
Route::get("install_shop",function()
{
$shopUrl = "example.myshopify.com";
$scope = ["write_products","read_orders"];
$redirectUrl = "http://mydomain.com/process_oauth_result";
$shopify = Shopify::setShopUrl($shopUrl);
return redirect()->to($shopify->getAuthorizeUrl($scope,$redirectUrl));
});
Let's retrieve access token
Route::get("process_oauth_result",function(\Illuminate\Http\Request $request)
{
$shopUrl = "example.myshopify.com";
$accessToken = Shopify::setShopUrl($shopUrl)->getAccessToken($request->code);
dd($accessToken);
// redirect to success page or billing etc.
});
To verify request(hmac)
public function verifyRequest(Request $request)
{
$queryString = $request->getQueryString();
if(Shopify::verifyRequest($queryString)){
logger("verification passed");
}else{
logger("verification failed");
}
}
To verify webhook(hmac)
public function verifyWebhook(Request $request)
{
$data = $request->getContent();
$hmacHeader = $request->server('HTTP_X_SHOPIFY_HMAC_SHA256');
if (Shopify::verifyWebHook($data, $hmacHeader)) {
logger("verification passed");
} else {
logger("verification failed");
}
}
To access API resource use
Shopify::get("resource uri", ["query string params"]);
Shopify::post("resource uri", ["post body"]);
Shopify::put("resource uri", ["put body"]);
Shopify::delete("resource uri");
Let use our access token to get products from shopify.
NB: You can use this to access any resource on shopify (be it Product, Shop, Order, etc)
$shopUrl = "example.myshopify.com";
$accessToken = "xxxxxxxxxxxxxxxxxxxxx";
$products = Shopify::setShopUrl($shopUrl)->setAccessToken($accessToken)->get("admin/products.json");
To pass query params
// returns Collection
$shopify = Shopify::setShopUrl($shopUrl)->setAccessToken($accessToken);
$products = $shopify->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\Shopify\Shopify;
class Foo
{
protected $shopify;
public function __construct(Shopify $shopify)
{
$this->shopify = $shopify;
}
/*
* returns Collection
*/
public function getProducts(Request $request)
{
$products = $this->shopify->setShopUrl($shopUrl)
->setAccessToken($accessToken)
->get('admin/products.json');
$products->each(function($product){
\Log::info($product->title);
});
}
}
Miscellaneous
To get Response headers
Shopify::getHeaders();
To get specific header
Shopify::getHeader("Content-Type");
Check if header exist
if(Shopify::hasHeader("Content-Type")){
echo "Yes header exist";
}
To get response status code or status message
Shopify::getStatusCode(); // 200
Shopify::getReasonPhrase(); // ok
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.1.0 | >=7.0.0 | ^5.4 | MIT | |
| v1.0.7 | >=7.0.0 | ^5.4 | MIT | |
| v1.0.6 | >=7.0.0 | ^5.4 | MIT | |
| v1.0.5 | >=7.0.0 | ^5.4 | MIT | |
| v1.0.4 | >=7.0.0 | ^5.4 | MIT | |
| v1.0.3 | >=7.0.0 | ^5.4 | MIT | |
| v1.0.2 | >=7.0.0 | ^5.3 | MIT | |
| v1.0.1 | >=7.0.0 | ^5.3 | MIT | |
| v1.0.0 | >=7.0.0 | ^5.3 | MIT |