roemerb / php-shopify
Shopify API的PHP SDK
Requires
- php: >=5.6
- ext-curl: *
Requires (Dev)
- phpunit/phpunit: ^5.5
This package is auto-updated.
Last update: 2024-09-16 20:24:41 UTC
README
PHPShopify是Shopify API的简单SDK实现。它帮助以面向对象的方式访问API。
安装
使用Composer安装
composer require phpclassic/php-shopify
要求
PHPShopify使用curl扩展处理HTTP调用。因此,您需要安装并启用PHP中的curl扩展。
但是,如果您更喜欢使用其他可用的HTTP调用处理包库,您可以通过修改
PHPShopify\HttpRequestJson
类中的get()
、post()
、put()
、delete()
方法中的1行来实现。
用法
您可以使用PHPShopify以简单面向对象的方式使用。
配置ShopifySDK
如果您使用自己的私有API,请提供ApiKey和密码。
$config = array( 'ShopUrl' => 'yourshop.myshopify.com', 'ApiKey' => '***YOUR-PRIVATE-API-KEY***', 'Password' => '***YOUR-PRIVATE-API-PASSWORD***', ); PHPShopify\ShopifySDK::config($config);
对于第三方应用,请使用永久访问令牌。
$config = array( 'ShopUrl' => 'yourshop.myshopify.com', 'AccessToken' => '***ACCESS-TOKEN-FOR-THIRD-PARTY-APP***', ); PHPShopify\ShopifySDK::config($config);
如何获取商店的永久访问令牌?
有一个AuthHelper类,可以帮助您使用oAuth从商店获取永久访问令牌。
- 首先,您需要使用SharedSecret参数配置SDK。
$config = array( 'ShopUrl' => 'yourshop.myshopify.com', 'ApiKey' => '***YOUR-PRIVATE-API-KEY***', 'SharedSecret' => '***YOUR-SHARED-SECRET***', ); PHPShopify\ShopifySDK::config($config);
- 创建认证请求
重定向URL必须从您的应用管理员中列为白名单之一,作为应用重定向URL之一。
//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
时获取访问令牌。
//your_redirect_url.php PHPShopify\ShopifySDK::config($config); $accessToken = \PHPShopify\AuthHelper::getAccessToken(); //Now store it in database or somewhere else
您可以使用相同的页面来创建请求和获取访问令牌(重定向URL)。在这种情况下,只需在调用
createAuthRequest()
方法时跳过第二个参数$redirectUrl
。AuthHelper类会为您完成剩余的操作。
//your_authorize_and_redirect_url.php PHPShopify\ShopifySDK::config($config); $accessToken = \PHPShopify\AuthHelper::createAuthRequest($scopes); //Now store it in database or somewhere else
获取ShopifySDK对象
$shopify = new PHPShopify\ShopifySDK;
您可以在实例化对象时提供配置作为参数(如果您尚未通过调用config()
方法进行配置)
$shopify = new PHPShopify\ShopifySDK($config);
现在,您可以以面向对象的方式调用资源进行get()
、post()
、put()
、delete()
调用。所有资源都命名为与Shopify API参考中相同。(见下方的资源映射。)
如果请求成功,所有请求返回一个数组(可以是单个资源数组或多个资源的数组)。当不期望有结果时(例如,DELETE请求),将返回一个空数组。
- 获取所有产品列表(GET请求)
$products = $shopify->Product->get();
- 获取具有ID的任何特定产品(GET请求)
$productID = 23564666666; $product = $shopify->Product($productID)->get();
您还可以使用URL参数(如Shopify API参考中为每个特定资源指定的)过滤结果。
- 例如,获取指定日期和时间之后的已取消订单列表(并且
fields
指定了要渲染的每一行的数据列)
$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);
- 创建新订单(POST请求)
$order = array ( "email" => "foo@example.com", "fulfillment_status" => "unfulfilled", "line_items" => [ [ "variant_id" => 27535413959, "quantity" => 5 ] ] ); $shopify->Order->post($order);
- 更新订单(PUT请求)
$updateInfo = array ( "fulfillment_status" => "fulfilled", ); $shopify->Order($orderID)->put($updateInfo);
- 删除Webhook(DELETE请求)
$webHookID = 453487303; $shopify->Webhook($webHookID)->delete());
可以使用嵌套方式使用子资源。
在尝试获取任何子资源时,您必须提供父资源的ID。
- 例如,获取产品的图片(GET请求)
$productID = 23564666666; $productImages = $shopify->Product($productID)->Image->get();
- 为顾客添加新地址(POST请求)
$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);
- 创建履行事件(POST请求)
$fulfillmentEvent = array( "status" => "in_transit" ); $shopify->Order($orderID)->Fulfillment($fulfillmentID)->Event->post($fulfillmentEvent);
- 更新博客文章(PUT请求)
$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);
- 从特定博客中删除任何特定文章(DELETE请求)
$blogArticle = $shopify->Blog($blogID)->Article($articleID)->delete();
资源映射
某些资源可以直接访问,某些资源只能通过父资源访问,而少数资源可以通过两种方式访问。建议您查看相关Shopify API参考页面中每个资源的详细信息。这里每个资源名称都链接到相关的Shopify API参考页面。
请仅通过列出的资源映射使用资源。尝试直接获取只有通过父资源才能获取的资源可能会导致错误。
- 废弃的结账
- 应用费用
- 博客
- 博客 -> 文章
- 博客 -> 文章 -> 事件
- 博客 -> 文章 -> 元字段
- 博客 -> 事件
- 博客 -> 元字段
- 承运服务
- 收藏
- 评论
- 评论 -> 事件
- 国家
- 国家 -> 省份
- 自定义收藏
- 自定义收藏 -> 事件
- 自定义收藏 -> 元字段
- 客户
- 客户 -> 地址
- 客户 -> 元字段
- 客户已保存的搜索
- 客户已保存的搜索 -> 客户
- 折扣 (仅限Shopify Plus)
- 事件
- 履约服务
- 礼品卡 (仅限Shopify Plus)
- 库存项目
- 库存水平
- 位置 (只读)
- 元字段
- Multipass (仅限Shopify Plus,API尚未提供)
- 订单
- 订单 -> 履约
- 订单 -> 履约 -> 事件
- 订单 -> 风险
- 订单 -> 退款
- 订单 -> 交易
- 订单 -> 事件
- 订单 -> 元字段
- 页面
- 页面 -> 事件
- 页面 -> 元字段
- 政策 (只读)
- 产品
- 产品 -> 图片
- 产品 -> 变体
- 产品 -> 变体 -> 元字段
- 产品 -> 事件
- 产品 -> 元字段
- 产品列表
- 产品变体
- 产品变体 -> 元字段
- 周期性应用费用
- 周期性应用费用 -> 使用费用
- 重定向
- 脚本标签
- ShippingZone (只读)
- Shop (只读)
- 智能收藏夹
- 智能收藏夹 -> Event
- 主题
- 主题 -> Asset
- User (只读,仅限Shopify Plus)
- Webhook
自定义操作
有一些操作方法可以在不直接调用 get()
,post()
,put()
,delete()
方法的情况下被调用,但最终会调用这些方法之一进行自定义调用。
- 例如,获取总项目数
$productCount = $shopify->Product->count();
- 将地址设置为客户的默认地址。
$shopify->Customer($customerID)->Address($addressID)->makeDefault();
- 搜索居住在“美国”的带有关键词“Bob”的客户。
$shopify->Customer->search("Bob country:United States");
自定义操作列表
自定义方法针对某些资源,这些资源可能对其他资源不可用。建议您查看相关Shopify API参考页面中每个操作的详细信息。我们在此仅列出可用的操作及其简要信息。每个操作名称都链接到Shopify API参考中的一个示例,其中包含更多详细信息。
-
(除 ApplicationCharge, CarrierService, FulfillmentService, Location, Policy, RecurringApplicationCharge, ShippingZone, Shop, Theme 以外的任何资源类型) ->
- count() 获取所有资源的计数。与其他所有操作不同,此函数返回一个整数值。
-
评论 ->
- markSpam() 将评论标记为垃圾邮件
- markNotSpam() 将评论标记为非垃圾邮件
- approve() 批准评论
- remove() 删除评论
- restore() 恢复评论
-
客户 ->
- search() 搜索与提供的查询匹配的客户
-
客户 -> 地址 ->
- makeDefault() 将地址设置为客户的默认地址
- set($params) 对多个地址执行批量操作
-
折扣 ->
-
履行 ->
- complete() 完成履行
- open() 打开待处理的履行
- cancel() 取消履行
-
礼品卡 ->
-
库存水平 ->
- adjust($data) 调整库存水平。
- connect($data) 将库存项目连接到位置。
- set($data) 设置位置内单个库存项目的库存水平。
-
订单 ->
- close() 关闭订单
- open() 重新打开已关闭的订单
- cancel($data) 取消订单
-
订单 -> 退款 ->
- calculate() 计算退款。
-
产品列表 ->
- productIds() 获取发布到您的应用程序的产品ID。
-
周期性应用费用 ->
- activate() 激活周期性应用费用
- customize($data) 自定义周期性应用费用
-
智能收藏夹 ->
- sortOrder($params) 设置智能收藏夹中产品的排序类型和/或手动排序
-
用户 ->
- current() 获取当前登录用户