Downloads
Stars
Version
PHPShopify is a simple SDK implementation of Shopify API. It helps accessing the API in an object oriented way.
Install with Composer
composer require phpclassic/php-shopify
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 inPHPShopify\HttpRequestJson
class.
You can use PHPShopify in a pretty simple object oriented way.
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);
There is a AuthHelper class to help you getting the permanent access token from the shop using oAuth.
$config = array(
'ShopUrl' => 'yourshop.myshopify.com',
'ApiKey' => '***YOUR-PRIVATE-API-KEY***',
'SharedSecret' => '***YOUR-SHARED-SECRET***',
);
PHPShopify\ShopifySDK::config($config);
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);
$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 callingcreateAuthRequest()
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
$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);
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.
$products = $shopify->Product->get();
$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).
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);
$order = array (
"email" => "[email protected]",
"fulfillment_status" => "unfulfilled",
"line_items" => [
[
"variant_id" => 27535413959,
"quantity" => 5
]
]
);
$shopify->Order->post($order);
$updateInfo = array (
"fulfillment_status" => "fulfilled",
);
$shopify->Order($orderID)->put($order);
$webHookID = 453487303;
$shopify->Webhook($webHookID)->delete());
You must provide the ID of the parent resource when trying to get any child resource
$productID = 23564666666;
$productImages = $shopify->Product($productID)->Image->get();
$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);
$fulfillmentEvent = array(
"status" => "in_transit"
);
$shopify->Order($orderID)->Fulfillment($fulfillmentID)->Event->post($fulfillmentEvent);
$blogID = 23564666666;
$articleID = 125336666;
$updateArtilceInfo = array(
"title" => "My new Title",
"author" => "Your name",
"tags" => "Tags, Will Be, Updated",
"body_html" => "<p>Look, I can even update through a web service.<\/p>",
);
$shopify->Blog($blogID)->Article($articleID)->put($updateArtilceInfo);
$blogArticle = $shopify->Blog($blogID)->Article($articleID)->delete();
Some resources are available directly, some resources are only available through parent resources and a few resources can be accessed both ways. It is recommended that you see the details in the related Shopify API Reference page about each resource. Each resource name here is linked to related Shopify API Reference page.
Use the resources only by listed resource map. Trying to get a resource directly which is only available through parent resource may end up with errors.
There are several action methods which can be called without calling the get()
, post()
, put()
, delete()
methods directly, but eventually results in a custom call to one of those methods.
$productCount = $shopify->Product->count();
$shopify->Customer($customerID)->Address($addressID)->makeDefault();
$shopify->Customer->search("Bob country:United States");
The custom methods are specific to some resources which may not be available for other resources. It is recommended that you see the details in the related Shopify API Reference page about each action. We will just list the available actions here with some brief info. each action name is linked to an example in Shopify API Reference which has more details information.
(Any resource type except ApplicationCharge, CarrierService, FulfillmentService, Location, Policy, RecurringApplicationCharge, ShippingZone, Shop, Theme) ->
Comment ->
Customer ->
Customer -> Address ->
Discount ->
Fulfillment ->
GiftCard ->
Order ->
Order -> Refund ->
RecurringApplicationCharge ->
SmartCollection ->
User ->