- Notifications
You must be signed in to change notification settings - Fork49
🚀 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
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Uh oh!
There was an error while loading.Please reload this page.
Contributors10
Uh oh!
There was an error while loading.Please reload this page.