PHPackages                             erenkucukersoftware/php-shopify - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. erenkucukersoftware/php-shopify

ActiveLibrary

erenkucukersoftware/php-shopify
===============================

PHP SDK for Shopify API

v1.1.18(4y ago)124Apache-2.0PHPPHP &gt;=5.6

Since Aug 19Pushed 4y agoCompare

[ Source](https://github.com/erenkucukersoftware/php-shopify)[ Packagist](https://packagist.org/packages/erenkucukersoftware/php-shopify)[ Docs](https://github.com/erenkucukersoftware/php-shopify)[ RSS](/packages/erenkucukersoftware-php-shopify/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (1)Versions (34)Used By (0)

PHP Shopify SDK
===============

[](#php-shopify-sdk)

[![Build Status](https://camo.githubusercontent.com/d987d76a954618e7fc933a0fed6053cd91474faffcaeeb2f3c73ce97295d5a2d/68747470733a2f2f7472617669732d63692e6f72672f706870636c61737369632f7068702d73686f706966792e7376673f6272616e63683d6d6173746572)](https://travis-ci.org/phpclassic/php-shopify) [![Monthly Downloads](https://camo.githubusercontent.com/2d7a77f65d5ef02abe251ff1d3b7efaaebc359f0e16cf04e53b8453d757aa8b8/68747470733a2f2f706f7365722e707567782e6f72672f706870636c61737369632f7068702d73686f706966792f642f6d6f6e74686c79)](https://packagist.org/packages/phpclassic/php-shopify) [![Total Downloads](https://camo.githubusercontent.com/edeab8fd2b12ce3431ed2535111ffd68f8b351dcb07b29e4f25f4770f9de4905/68747470733a2f2f706f7365722e707567782e6f72672f706870636c61737369632f7068702d73686f706966792f646f776e6c6f616473)](https://packagist.org/packages/phpclassic/php-shopify) [![Latest Stable Version](https://camo.githubusercontent.com/519f6a914e281712d342e442574974e3f039aba1e68c805598d12f83b78b56d9/68747470733a2f2f706f7365722e707567782e6f72672f706870636c61737369632f7068702d73686f706966792f762f737461626c65)](https://packagist.org/packages/phpclassic/php-shopify) [![Latest Unstable Version](https://camo.githubusercontent.com/7503233a5bd452461282ebdb95b870d12ff04f267f427c03d28e7a4bd9dd9f1e/68747470733a2f2f706f7365722e707567782e6f72672f706870636c61737369632f7068702d73686f706966792f762f756e737461626c65)](https://packagist.org/packages/phpclassic/php-shopify) [![License](https://camo.githubusercontent.com/d35f7a4b0ca2cd4787071c922792e37677aeaa17de562a405d8a50e7126c6674/68747470733a2f2f706f7365722e707567782e6f72672f706870636c61737369632f7068702d73686f706966792f6c6963656e7365)](https://packagist.org/packages/phpclassic/php-shopify) [![Hire](https://camo.githubusercontent.com/cb6923682f77a0c21ffad5e3aea5823077b478d27f4d8407bbd8b68f44eb24e4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f486972652d5570776f726b2d677265656e2e737667)](https://www.upwork.com/fl/tareqmahmood?s=1110580755107926016)

PHPShopify is a simple SDK implementation of Shopify API. It helps accessing the API in an object oriented way.

Installation
------------

[](#installation)

Install with Composer

```
composer require phpclassic/php-shopify
```

### Requirements

[](#requirements)

PHPShopify uses curl extension for handling http calls. So you need to have the curl extension installed and enabled with PHP.

> However if you prefer to use any other available package library for handling HTTP calls, you can easily do so by modifying 1 line in each of the `get()`, `post()`, `put()`, `delete()` methods in `PHPShopify\HttpRequestJson` class.

Usage
-----

[](#usage)

You can use PHPShopify in a pretty simple object oriented way.

#### Configure ShopifySDK

[](#configure-shopifysdk)

If you are using your own private API, provide the ApiKey and Password.

```
$config = array(
    'ShopUrl' => 'yourshop.myshopify.com',
    'ApiKey' => '***YOUR-PRIVATE-API-KEY***',
    'Password' => '***YOUR-PRIVATE-API-PASSWORD***',
);

PHPShopify\ShopifySDK::config($config);
```

For Third party apps, use the permanent access token.

```
$config = array(
    'ShopUrl' => 'yourshop.myshopify.com',
    'AccessToken' => '***ACCESS-TOKEN-FOR-THIRD-PARTY-APP***',
);

PHPShopify\ShopifySDK::config($config);
```

##### How to get the permanent access token for a shop?

[](#how-to-get-the-permanent-access-token-for-a-shop)

There is a AuthHelper class to help you getting the permanent access token from the shop using oAuth.

1. First, you need to configure the SDK with additional parameter SharedSecret

```
$config = array(
    'ShopUrl' => 'yourshop.myshopify.com',
    'ApiKey' => '***YOUR-PRIVATE-API-KEY***',
    'SharedSecret' => '***YOUR-SHARED-SECRET***',
);

PHPShopify\ShopifySDK::config($config);
```

2. Create the authentication request

> The redirect url must be white listed from your app admin as one of **Application Redirect URLs**.

```
//your_authorize_url.php
$scopes = 'read_products,write_products,read_script_tags,write_script_tags';
//This is also valid
//$scopes = array('read_products','write_products','read_script_tags', 'write_script_tags');
$redirectUrl = 'https://yourappurl.com/your_redirect_url.php';

\PHPShopify\AuthHelper::createAuthRequest($scopes, $redirectUrl);
```

> If you want the function to return the authentication url instead of auto-redirecting, you can set the argument `$return` (5th argument) to `true`.

```
\PHPShopify\AuthHelper::createAuthRequest($scopes, $redirectUrl, null, null, true);
```

3. Get the access token when redirected back to the `$redirectUrl` after app authorization.

```
//your_redirect_url.php
PHPShopify\ShopifySDK::config($config);
$accessToken = \PHPShopify\AuthHelper::getAccessToken();
//Now store it in database or somewhere else
```

> You can use the same page for creating the request and getting the access token (redirect url). In that case just skip the 2nd parameter `$redirectUrl` while calling `createAuthRequest()` method. The AuthHelper class will do the rest for you.

```
//your_authorize_and_redirect_url.php
PHPShopify\ShopifySDK::config($config);
$accessToken = \PHPShopify\AuthHelper::createAuthRequest($scopes);
//Now store it in database or somewhere else
```

#### Get the ShopifySDK Object

[](#get-the-shopifysdk-object)

```
$shopify = new PHPShopify\ShopifySDK;
```

You can provide the configuration as a parameter while instantiating the object (if you didn't configure already by calling `config()` method)

```
$shopify = new PHPShopify\ShopifySDK($config);
```

##### Now you can do `get()`, `post()`, `put()`, `delete()` calling the resources in the object oriented way. All resources are named as same as it is named in shopify API reference. (See the resource map below.)

[](#now-you-can-do-get-post-put-delete-calling-the-resources-in-the-object-oriented-way-all-resources-are-named-as-same-as-it-is-named-in-shopify-api-reference-see-the-resource-map-below)

> All the requests returns an array (which can be a single resource array or an array of multiple resources) if succeeded. When no result is expected (for example a DELETE request), an empty array will be returned.

- Get all product list (GET request)

```
$products = $shopify->Product->get();
```

- Get any specific product with ID (GET request)

```
$productID = 23564666666;
$product = $shopify->Product($productID)->get();
```

You can also filter the results by using the url parameters (as specified by Shopify API Reference for each specific resource).

- For example get the list of cancelled orders after a specified date and time (and `fields` specifies the data columns for each row to be rendered) :

```
$params = array(
    'status' => 'cancelled',
    'created_at_min' => '2016-06-25T16:15:47-04:00',
    'fields' => 'id,line_items,name,total_price'
);

$orders = $shopify->Order->get($params);
```

- Create a new order (POST Request)

```
$order = array (
    "email" => "foo@example.com",
    "fulfillment_status" => "unfulfilled",
    "line_items" => [
      [
          "variant_id" => 27535413959,
          "quantity" => 5
      ]
    ]
);

$shopify->Order->post($order);
```

> Note that you don't need to wrap the data array with the resource key (`order` in this case), which is the expected syntax from Shopify API. This is automatically handled by this SDK.

- Update an order (PUT Request)

```
$updateInfo = array (
    "fulfillment_status" => "fulfilled",
);

$shopify->Order($orderID)->put($updateInfo);
```

- Remove a Webhook (DELETE request)

```
$webHookID = 453487303;

$shopify->Webhook($webHookID)->delete();
```

### The child resources can be used in a nested way.

[](#the-child-resources-can-be-used-in-a-nested-way)

> You must provide the ID of the parent resource when trying to get any child resource

- For example, get the images of a product (GET request)

```
$productID = 23564666666;
$productImages = $shopify->Product($productID)->Image->get();
```

- Add a new address for a customer (POST Request)

```
$address = array(
    "address1" => "129 Oak St",
    "city" => "Ottawa",
    "province" => "ON",
    "phone" => "555-1212",
    "zip" => "123 ABC",
    "last_name" => "Lastnameson",
    "first_name" => "Mother",
    "country" => "CA",
);

$customerID = 4425749127;

$shopify->Customer($customerID)->Address->post($address);
```

- Create a fulfillment event (POST request)

```
$fulfillmentEvent = array(
    "status" => "in_transit"
);

$shopify->Order($orderID)->Fulfillment($fulfillmentID)->Event->post($fulfillmentEvent);
```

- Update a Blog article (PUT request)

```
$blogID = 23564666666;
$articleID = 125336666;
$updateArtilceInfo = array(
    "title" => "My new Title",
    "author" => "Your name",
    "tags" => "Tags, Will Be, Updated",
    "body_html" => "Look, I can even update through a web service.",
);
$shopify->Blog($blogID)->Article($articleID)->put($updateArtilceInfo);
```

- Delete any specific article from a specific blog (DELETE request)

```
$blogArticle = $shopify->Blog($blogID)->Article($articleID)->delete();
```

### GraphQL *v1.1*

[](#graphql-v11)

The GraphQL Admin API is a GraphQL-based alternative to the REST-based Admin API, and makes the functionality of the Shopify admin available at a single GraphQL endpoint. The full set of supported types can be found in the [GraphQL Admin API reference](https://help.shopify.com/en/api/graphql-admin-api/reference). You can simply call the GraphQL resource and make a post request with a GraphQL string:

> The GraphQL Admin API requires an access token for making authenticated requests. You can obtain an access token either by creating a private app and using that app's API password, or by following the OAuth authorization process. See [GraphQL Authentication Guide](https://help.shopify.com/en/api/graphql-admin-api/getting-started#authentication)

```
$graphQL =
