Download the PHP package zfr/zfr-shopify without Composer

On this page you can find all versions of the php package zfr/zfr-shopify. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package zfr-shopify

ZfrShopify

Latest Stable Version Build Status

ZfrShopify is a modern PHP library based on Guzzle for Shopify.

Dependencies

Installation

Installation of ZfrShopify is only officially supported using Composer:

REST API

ZfrShopify provides a one-to-one mapping with API methods defined in Shopify doc. Since the version 4, it also supports a basic integration with the new GraphQL admin API.

Private app

In order to use ZfrShopify as a private app, you must first instantiate the client:

Make sure to always include a version. More info about Shopify versioning

Public app

When using a public app, you instantiate the client a bit differently:

Make sure to always include a version. More info about Shopify versioning

Using a container

ZfrShopify also provides built-in container-interop factories that you can use. You must make sure that your container contains a service called "config" that is an array with a key zfr_shopify containing the required config:

If you're using Zend\ServiceManager 3, you can use Zend\ComponentInstaller to register our factories into Zend\ServiceManager automatically.

However if you're using other framework or other container, you can still manually register our factories, they are under src/Container folder.

Validating a request

ZfrShopify client provides an easy way to validate an incoming request to make sure it comes from Shopify through the RequestValidator object. It requires a PSR7 requests and a shared secret:

Validating a webhook

Similarily, you can use the WebhookValidator to validate your webhook:

Validating an application request

Finally, you can also use the ApplicationProxyRequestValidator to validate application proxy requests:

Create an authorization response

ZfrShopify provides an easy way to create a PSR7 compliant ResponseInterface to create an authorization response:

While the nonce parameter is required, ZfrShopify does not make any assumption about how to save the nonce and check it when Shopify redirects to your server. You are responsible to safely saving the nonce.

Exchanging a code against an access token

You can use the TokenExchanger class to exchange a code to a long-lived access token:

ZfrShopify also provides a simple factory compliant with container-interop that you can register to the container of your choice, with the ZfrShopify\Container\TokenExchangerFactory.

Exploiting responses

ZfrShopify returns Shopify response directly. However, by default, Shopify wrap the responses by a top-key. For instance, if you want to retrieve shop information, Shopify will return this payload:

This is a bit inconvenient to use as we would need to do that:

Instead, ZfrShopify automatically "unwraps" response, so you can use the more concise code:

When reading Shopify API doc, make sure you remove the top key when exploiting responses.

Count

Similarily, when you use one of the count endpoint, ZfrShopify will automatically extract the value from Shopify's response, so you do not need to manually access the count property:

php $count = $shopifyClient->getOrderCount(); // $count is already an integer

Using iterators

For most "list" endpoints (getProducts, getCollections...), Shopify allows you to get up to 250 resources at a time. When using the standard get** method, you are responsible to handle the pagination yourself.

For convenience, ZfrShopify allows you to easily iterate through all resources efficiently (internally, we are using generators). Here is how you can get all the products from a given store:

ZfrShopify will take care of doing additional requests when it has reached the end of a given page.

Executing multiple requests concurrently

For optimization purposes, it may be desirable to execute multiple requests concurrently. To do that, ZfrShopify client allow you to take advantage of the underlying Guzzle client and execute multiple requests at the same time.

To do that, you can manually create the Guzzle commands, and execute them all. ZfrShopify will take care of authenticating all requests individually, and extracting the response payload. For instance, here is how you could get both shop info and products info:

If a request has failed, it will contain an instance of GuzzleHttp\Command\Exception\CommandException. For instance, here is how you could iterate through all the results:

GraphQL API

In 2018, Shopify launched a new API, called the GraphQL Admin API. This new API comes with a lot of advantages compared to the REST API:

The version 4 of ZfrShopify now ships with a basic GraphQL client. It does not yet support the following features, though:

In order to use the client, you must instantiate it. Instead of the ShopifyClient, you must create a ZfrShopify\ShopifyGraphQLClient. If you are using a private app:

Make sure to always include a version. More info about Shopify versioning

If you are using a public app:

Make sure to always include a version. More info about Shopify versioning

Queries

To perform query, simply enter your query as an heredoc. For instance, here is a GraphQL query that get the title and id of the first 5 collections, as well as the 5 first products within those collections (this used to require several queries in the REST API, while everything can be done very efficiently with GraphQL):

ZfrShopify automatically unwrap the data top key from Shopify response, so you can retrieves the data like this:

ZfrShopify does not attempt to re-write the GraphQL response.

Variables

ZfrShopify also fully supports GraphQL variable. For instance, here is how you can retrieve a given product by its ID by using GraphQL variables:

Mutations

Similarly, ZfrShopify supports mutation. To do this, you simply need to use a mutation query. Here is an example that is creating a product:

This request will create a new product whose title is "My product", and will return the id of the product.

For better error handling, you should always include the userErrors object in your response.

Error handling

When using GraphQL requests, there are two kinds of errors that you can catch.

Request errors

Those errors are for malformed GraphQL requests. You can catch them using the \ZfrShopify\Exception\GraphQLErrorException exception:

User errors

Those errors are for requests that are missing data (like incorrect data, missing data...). You can catch them using the \ZfrShopify\Exception\GraphQLUserErrorException exception:

Implemented endpoints

Here is a list of supported endpoints (more to come in the future):

ACCESS SCOPE RELATED METHODS:

STOREFRONT ACCESS TOKEN RELATED METHODS:

APPLICATION CHARGE RELATED METHODS:

ARTICLE RELATED METHODS:

ASSET RELATED METHODS:

BLOG RELATED METHODS:

CUSTOM COLLECTION RELATED METHODS:

COLLECTION RELATED METHODS

COLLECT RELATED METHODS:

CUSTOMER RELATED METHODS:

CUSTOMER ADDRESS RELATED METHODS:

DISCOUNT CODE RELATED METHODS:

EVENT RELATED METHODS:

FULFILLMENTS RELATED METHODS:

FULFILLMENT ORDER RELATED METHODS:

GIFT CARD RELATED METHODS:

INVENTORY ITEM RELATED METHODS:

INVENTORY LEVEL RELATED METHODS:

LOCATION RELATED METHODS:

METAFIELDS RELATED METHODS:

ORDER RELATED METHODS:

DRAFT ORDER RELATED METHODS:

PAGE RELATED METHODS:

PRICE RULE RELATED METHODS:

PRODUCT RELATED METHODS:

PRODUCT IMAGE RELATED METHODS:

RECURRING APPLICATION CHARGE RELATED METHODS:

REFUND RELATED METHODS:

SHOP RELATED METHODS:

SMART COLLECTION RELATED METHODS:

THEME RELATED METHODS:

PRODUCT VARIANT RELATED METHODS:

REDIRECT RELATED METHODS:

SCRIPT TAG RELATED METHODS:

TRANSACTION RELATED METHODS:

USAGE CHARGE RELATED METHODS:

WEBHOOK RELATED METHODS:

OTHER METHODS:


All versions of zfr-shopify with dependencies

PHP Build Version
Package Version
Requires php Version ^7.0|^8.0|^8.1
guzzlehttp/guzzle-services Version ^1.0
psr/container Version ^1.0 || ^2.0
psr/http-message Version ^1.0 || ^2.0
laminas/laminas-diactoros Version ^1.3 || ^2.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package zfr/zfr-shopify contains the following files

Loading the files please wait ....