roemerb/php-shopify

Shopify API的PHP SDK

v1.0.3 2018-07-05 14:33 UTC

This package is auto-updated.

Last update: 2024-09-16 20:24:41 UTC


README

Build Status Total Downloads Latest Stable Version Latest Unstable Version License

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从商店获取永久访问令牌。

  1. 首先,您需要使用SharedSecret参数配置SDK。
$config = array(
    'ShopUrl' => 'yourshop.myshopify.com',
    'ApiKey' => '***YOUR-PRIVATE-API-KEY***',
    'SharedSecret' => '***YOUR-SHARED-SECRET***',
);

PHPShopify\ShopifySDK::config($config);
  1. 创建认证请求

重定向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);
  1. 在应用授权后重定向回$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参考页面。

请仅通过列出的资源映射使用资源。尝试直接获取只有通过父资源才能获取的资源可能会导致错误。

自定义操作

有一些操作方法可以在不直接调用 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() 获取所有资源的计数。与其他所有操作不同,此函数返回一个整数值。
  • 评论 ->

  • 客户 ->

    • search() 搜索与提供的查询匹配的客户
  • 客户 -> 地址 ->

  • 折扣 ->

  • 履行 ->

  • 礼品卡 ->

  • 库存水平 ->

  • 订单 ->

  • 订单 -> 退款 ->

  • 产品列表 ->

    • productIds() 获取发布到您的应用程序的产品ID。
  • 周期性应用费用 ->

  • 智能收藏夹 ->

  • 用户 ->

参考