- Notifications
You must be signed in to change notification settings - Fork48
🚀 Shopify API Client for PHP
License
slince/shopify-api-php
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
🚀 PHP SDK for the Shopify API
Install via composer
$ composer require slince/shopify-api-php
You first need to initialize the client. For that you need your Shop Name and AccessToken
require__DIR__ .'/vendor/autoload.php';$credential =newSlince\Shopify\PublicAppCredential('Access Token');// Or Private App$credential =newSlince\Shopify\PrivateAppCredential('API KEY','PASSWORD','SHARED SECRET');$client =newSlince\Shopify\Client('your-store.myshopify.com',$credential, ['meta_cache_dir' =>'./tmp'// Metadata cache dir, required]);
Middleware augments the functionality of handlers by invoking them in the process of generating responses. Middleware is implemented as a higher order function that takes the following form.
$middleware =function(\Psr\Http\Message\ServerRequestInterface$request,callable$next){$response =$next($request);$this->logger->log($request,$response);return$response;};$client->getMiddlewares()->push($middleware);
Built-in middleware:
The Client throws the following types of exceptions.
- BadRequestException 400
- UnauthorizedException 401
- PaymentRequiredException 402
- ForbiddenException 403
- NotFoundException 404
- NotAcceptableException 406
- UnprocessableEntityException 422
- TooManyRequestsException 429
- ClientException other
- Lists products
$products =$client->getProductManager()->findAll([// Filter your product'collection_id' =>841564295'page' =>2// deprecated]);
- Lists products by pagination
$pagination =$client->getProductManager()->paginate([// filter your product'limit' =>3,'created_at_min' =>'2015-04-25T16:15:47-04:00']);// $pagination is instance of `Slince\Shopify\Common\CursorBasedPagination`$currentProducts =$pagination->current();//current pagewhile ($pagination->hasNext()) {$nextProducts =$pagination->next();}# to persist across requests you can use next_page_info and previous_page_info$nextPageInfo =$pagination->getNextPageInfo();$prevPageInfo =$pagination->getPrevPageInfo();$products =$pagination->current($nextPageInfo);
- Get the specified product
$product =$client->getProductManager()->find(12800);// Update the given product$product =$client->getProductManager()->update(12800, ["title" =>"Burton Custom Freestyle 151","body_html" =>"<strong>Good snowboard!<\/strong>","vendor"=>"Burton","product_type" =>"Snowboard",]);
- Creates a new product
$product =$client->getProductManager()->create(["title" =>"Burton Custom Freestyle 151","body_html" =>"<strong>Good snowboard!<\/strong>","vendor"=>"Burton","product_type" =>"Snowboard",]);
- Removes the product by its id
$client->getProductManager()->remove(12800);
The product is an instance ofSlince\Shopify\Manager\Product\Product
; You can access properties like following:
echo$product->getTitle();echo$product->getCreatedAt();// DateTime Object//...print_r($product->getVariants());print_r($product->getImages());
Available managers:
- Access\AccessScope
- Access\StorefrontAccessToken
- Analytics\Report
- Billing\ApplicationCharge
- Billing\ApplicationCredit
- Billing\RecurringApplicationCharge
- Billing\UsageCharge
- Customers\Address
- Customers\Customer
- Customers\CustomerSavedSearch
- Discounts\DiscountCode
- Discounts\PriceRule
- Events\Event
- Events\Webhook
- Inventory\InventoryItem
- Inventory\InventoryLevel
- Inventory\Location
- MarketingEvent\MarketingEvent
- OnlineStore\Article
- OnlineStore\Asset
- OnlineStore\Blog
- OnlineStore\Comment
- OnlineStore\Page
- OnlineStore\Redirect
- OnlineStore\ScriptTag
- OnlineStore\Theme
- Orders\DraftOrder
- Orders\Order
- Orders\Refund
- Orders\Risk
- Orders\Transaction
- Products\Collect
- Products\CustomCollection
- Products\Image
- Products\Product
- Products\SmartCollection
- Products\Variant
- Shipping\AssignedFulfillmentOrder
- Shipping\CarrierService
- Shipping\Fulfillment
- Shipping\FulfillmentOrder
- Shipping\FulfillmentService
- Store\Country
- Store\Currency
- Store\Policy
- Store\Province
- Store\ShippingZone
- Store\Shop
You can access the manager like$client->getProductManager()
,$client->getOrderManager()
.
If you don't like to use managers, you can also manipulate data like this:
The returned value is just an array;
$products =$client->get('products', [// Filter your products]);$product =$client->get('products/12800');$product =$client->post('products', ["product" => ["title" =>"Burton Custom Freestyle 151","body_html" =>"<strong>Good snowboard!<\/strong>","vendor"=>"Burton","product_type" =>"Snowboard","images" => [ ["attachment" =>"R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAw==\n" ] ] ]]);$product =$client->put('products/12800', ["product" => ["title" =>"Burton Custom Freestyle 151","body_html" =>"<strong>Good snowboard!<\/strong>","vendor"=>"Burton","product_type" =>"Snowboard","images" => [ ["attachment" =>"R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAw==\n" ] ] ]]);$client->delete('products/12800');
The MIT license. SeeMIT
About
🚀 Shopify API Client for PHP