crazymeeks/php-shopify

Shopify的PHP API

v1.0.0 2021-02-23 06:32 UTC

This package is not auto-updated.

Last update: 2024-09-21 18:53:35 UTC


README

PHP Shopify是一个库,它提供了简单且面向对象的与Shopify交互方式。
(链接:https://www.shopify.com.ph/)

# 要求

  • PHP 7.x

# 安装

在您的终端中复制并粘贴以下命令:composer require crazymeeks/php-shopify

# 可用API

  • 应用程序安装
  • 客户
  • 集合/收集/产品
  • 订单
  • ScriptTag

# 配置/设置

为了使用这个库,需要最小配置。我们将创建两个类。
让我们称它们为ConfigContextInstallContext
ConfigContext必须实现\Crazymeeks\App\Contracts\ShopifyConfigContextInterface,而InstallContext必须实现Crazymeeks\App\Contracts\InstallContextInterface
注意:您可以按自己的意愿命名类。
请正确遵循说明,一切都会顺利!

  1. ConfigContext
namespace Some\Name\Space;

use Crazymeeks\App\Contracts\ShopifyConfigContextInterface;

class ConfigContext implements ShopifyConfigContextInterface
{
    /**
     * @implement
     */
    public function getApiKey(): string
    {
        return 'your-shopify-api-key-here';
    }

    /**
     * @implement
     */
    public function getSecretKey(): string
    {
        return 'your-shopify-secret-key-here';
    }

    /**
     * @implement
     */
    public function getVersion(): string
    {
        return '2021-01';
    }
}
  1. InstallContext
namespace Your\Name\Space;

use Crazymeeks\App\Contracts\InstallContextInterface;

class InstallContext implements InstallContextInterface
{
    /**
     * @implemented
     */
    public function getScopes(): array
    {
        // You may add as many scopes as you want here
        return [
            'read_orders',
            'write_products',
        ];
    }

    /**
     * @implemented
     */
    public function getRedirectUri(): string
    {
        // The url of your website that will be use by shopify
        // during installation of your shopify app
        return 'https://mywebsite.com/app/generate-token';
    }
}

# 让某人安装您的应用程序!

为了让您的应用程序与Shopify通信,它必须在Shopify上安装。
只需实例化Crazymeeks\App\Shopify并调用其install()方法。
此方法需要传入的第一个参数是您上面定义的InstallContext实例。
第二个参数将是您的Shopify商店的URL,例如test.myshopify.com
就这样!您将被重定向到您的Shopify商店以继续安装。

$shopify = new \Crazymeeks\App\Shopify();

$shopify->install(new InstallContext(), 'test.myshopify.com');

# 获取访问令牌

当您的应用程序安装到Shopify后,Shopify将在其仪表板(iframe)中加载您的应用程序,并带有这些重要的参数:hmaccodeshoptimestamp
您需要这些参数来获取应用程序的访问令牌。
您需要将这些参数传递给Crazymeeks\App\Shopify::classsetData()方法。
我们将使用\Crazymeeks\App\Resource\Action\GetShopAccessToken:class作为我们的操作。
(链接:https://shopify.dev/docs/admin-api/rest/reference)

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetShopAccessToken())
                    ->setData([
                        'hmac' => 'a3cc315a829340ab014e7f5aa8eabe83f9cfeaf4b9eb6c17f04c85cabf188729',
                        'code' => '6a94694acf0339e9eb8068d8f4718eea',
                        'shop' => 'test.myshopify.com',
                        'timestamp' => '1610955131',
                    ])
                    ->setShopUrl('test.myshopify.com')
                    ->execute();
// echo access_token and scope,
// you must save the response' access token
// for future use
echo 'Access Token: ' . $response->access_token . '<br>Scope: ' . $response->scope; 

# 客户端API

用于管理客户数据。请参阅Shopify的文档以了解响应和其他详细信息。
创建客户 - 在向Shopify创建客户时,您只需实例化\Crazymeeks\App\Resource\Action\CreateCustomer::class,并将其作为参数传递给\Crazymeeks\App\Shopify::classsetAction()
搜索客户

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\CreateCustomer())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setData([
                        'first_name' => 'John',
                        'last_name' => 'Doe',
                        'email' => 'john.doe@example.com',
                        'verified_email' => true,
                        'send_email_welcome' => false,
                        'password' => 'test123123',
                        'password_confirmation' => 'test123123',
                    ])
                    ->execute();

检索单个客户

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\SearchCustomer())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setData('email:john.doe@example.com')
                    ->execute();

客户电子邮件域名白名单

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetCustomer())
                    ->setAccessToken('your-access-token')
                    ->setResourceId('207119551')
                    ->setShopUrl('test.myshopify.com')
                    ->execute();

您还可以在添加/创建客户时允许特定的电子邮件域名列表。
例如,如果您只想允许所有以@gmail.com结尾的电子邮件,只需调用setWhitelistedEmailDomains()。此方法接受一个数组,因此,您可以允许任意数量的电子邮件域名!
例如,如果您只想允许所有以@gmail.com结尾的电子邮件,只需调用setWhitelistedEmailDomains()。此方法接受一个数组,因此,您可以允许任意数量的电子邮件域名!
例如,如果您只想允许所有以@gmail.com结尾的电子邮件,只需调用setWhitelistedEmailDomains()。此方法接受一个数组,因此,您可以允许任意数量的电子邮件域名!
例如,如果您只想允许所有以@gmail.com结尾的电子邮件,只需调用setWhitelistedEmailDomains()。此方法接受一个数组,因此,您可以允许任意数量的电子邮件域名!

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetCustomer())
                    ->setAccessToken('your-access-token')
                    ->setResourceId('207119551')
                    ->setShopUrl('test.myshopify.com')
                    ->setWhitelistedEmailDomains(['@gmail.com', '@hotmail.com'])
                    ->execute();

# 集合API

根据Shopify,集合用于管理产品与自定义集合之间的关系。获取集合列表

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetCollect())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->execute();

通过ID获取集合

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetCollect())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('455204334')
                    ->execute();

获取集合数量

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\CollectCount())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->execute();

集合API

根据Shopify,集合是商家可以创建的一组产品,以便使他们的商店更易于浏览。例如,商家可能会为特定类型的产品创建一个集合,例如鞋类。

检索属于集合的产品列表

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetProductCollections())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('239222980791')
                    ->setPerPage(10) // Optional only
                    ->execute();

检索单个集合

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetCollection())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('841564295')
                    ->execute();

将产品添加到集合中

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\AddProductToCollection())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setData([
                        'product_id' => 921728736,
                        'collection_id' => 841564295,
                    ])
                    ->execute();

从集合中删除产品

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\DeleteProductToCollection())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setData('455204334')
                    ->execute();

# 订单API

根据Shopify,订单API为商家提供了接收、处理和管理他们订单的新方式。
检索订单

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetOrder())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setStatus(\Crazymeeks\App\Resource\Action\GetOrder::CANCELLED) // Optional. Other status are: CLOSED, OPEN
                    ->setFinancialStatus(\Crazymeeks\App\Resource\Action\GetOrder::FIN_ANY) // Optional. Other financial status are: FIN_AUTHORIZED, FIN_PENDING, FIN_PAID, FIN_PARTIALLY_PAID, FIN_REFUNDED, FIN_VOIDED, FIN_PARTIALLY_REFUNDED, FIN_UNPAID
                    ->setFulfillmentStatus(\Crazymeeks\App\Resource\Action\GetOrder::FFMT_ANY) // Optional. Other fulfillment status are: FFMT_SHIPPED, FFMT_PARTIAL, FFMT_UNSHIPPED, FFMT_UNFULFILLED
                    ->setPerPage(5) // Optional
                    ->execute();

检索单个订单

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetOrder())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('450789469')
                    ->execute();

检索订单数量

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetOrderCount())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->execute();

关闭订单

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\CloseOrder())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('450789469')
                    ->execute();

开启订单

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\ReOpenOrder())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('450789469')
                    ->execute();

取消订单

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\CancelOrder())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('450789469')
                    ->execute();

# 脚本标签API

根据Shopify,ScriptTag资源表示加载到商店店面页面或结账订单状态页面的远程JavaScript代码。这允许您在不使用主题模板的情况下向这些页面添加功能。

创建脚本标签

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\CreateScriptTag())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setData('https://myweb.com/script.js')
                    ->execute();

检索脚本标签

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\GetScriptTags())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->execute();

更新脚本标签

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\UpdateScriptTag())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('596726825')
                    ->setData('https://myweb.com/script.js')
                    ->execute();

删除脚本标签

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\DeleteScriptTag())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->setResourceId('596726825')
                    ->execute();

检索脚本标签数量

$shopify = new \Crazymeeks\App\Shopify(new ConfigContext());
$response = $shopify->setAction(new \Crazymeeks\App\Resource\Action\ScriptTagCount())
                    ->setAccessToken('your-access-token')
                    ->setShopUrl('test.myshopify.com')
                    ->execute();

作者

Jeff Claud