edwin-luijten/shopify-client

A client to communicate to the Shopify api.


Keywords
shopify-api, shopify-sdk
License
MIT

Documentation

Shopify API Client

Latest Version Software License Build Status Code Coverage Quality Score Total Downloads

This package provides a client to communicate with the Shopify api.

Install

Via Composer

$ composer require edwin-luijten/shopify-client

Usage

Creating a Shopify application

Read the following documentation: https://help.shopify.com/api/getting-started

Using the Client

$client = new \ShopifyClient\Client(new \ShopifyClient\Config($domain, $key, $secret));
$client->orders->get(1);  
$client->orders->all();
$client->orders->all([
    'page' => 2,
]);
  
$client->orders->metafields->all($orderId);

Throttle request to prevent bucket overflow:

$totalProducts = $client->products->count();
$perPage = 50;
$pages = $totalProducts <= 50 ? 1: round($totalProducts / $perPage);
  
for($i = 0; $i <= $pages; $i++) {
    $products = \ShopifyClient\Request::throttle(function($client, $i) {
        return $client->products->all([
            'page' => $i,
        ]);
    });
}

Add your own resources

Check https://github.com/Edwin-Luijten/shopify-client/tree/develop/src/Resource for how to create your own resource.

$config = new \ShopifyClient\Config($domain, $key, $secret, [
  'helloWorld' => \HelloWorldClass::class,
];
$client = new \ShopifyClient\Client($config);

Implemented resources

  • Abandoned checkouts
  • Article (Accessible trough blogs)
  • Blog
  • CarrierService
  • Checkout
  • Collect
  • CollectionListing
  • Comment
  • Country
  • CustomCollection
  • Customer
  • CustomerAddress (Accessible trough customers)
  • CustomerSavedSearch
  • DiscountCode (Accessible trough priceRules)
  • DraftOrder
  • Event
  • Fulfillment
  • FulfillmentEvent
  • FulfillmentService
  • Gift Card (Shopify Plus)
  • Location
  • Marketing Event
  • Metafield (products, variants, orders, blogs, articles)
  • Multipass (Shopify Plus)
  • Order
  • Order Risks (Accessible trough orders)
  • Page
  • Policy
  • PriceRule
  • Product
  • Product Image (Accessible trough products)
  • Product Variant (Accessible trough products)
  • ProductListing
  • Province (Accessible trough countries)
  • RecurringApplicationCharge
  • Redirect
  • Refund
  • Report
  • ResourceFeedback
  • ScriptTag
  • Shipping Zone
  • Shop
  • SmartCollection
  • Storefront Access Token
  • Theme
  • Transaction
  • UsageCharge
  • User (Shopify Plus)
  • Webhook
  • ShopifyQL

Testing

Set some environment variables first:

  • SHOPIFY_DOMAIN
  • SHOPIFY_KEY
  • SHOPIFY_SECRET
  • SHOPIFY_RATE_LIMIT
  • SHOPIFY_PRODUCT_VARIANT_ID
$ ./vendor/bin/phpunit

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email :author_email instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.