crazymeeks / php-shopify
Shopify的PHP API
Requires
- ixudra/curl: dev-master
Requires (Dev)
- mockery/mockery: 1.4.x-dev
- phpunit/phpunit: 10.0.x-dev
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
# 配置/设置
为了使用这个库,需要最小配置。我们将创建两个类。
让我们称它们为ConfigContext
和InstallContext
。
ConfigContext
必须实现\Crazymeeks\App\Contracts\ShopifyConfigContextInterface
,而InstallContext
必须实现Crazymeeks\App\Contracts\InstallContextInterface
。
注意:您可以按自己的意愿命名类。
请正确遵循说明,一切都会顺利!
- 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'; } }
- 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)中加载您的应用程序,并带有这些重要的参数:hmac
、code
、shop
、timestamp
。
您需要这些参数来获取应用程序的访问令牌。
您需要将这些参数传递给Crazymeeks\App\Shopify::class
的setData()
方法。
我们将使用\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::class
的setAction()
。
搜索客户
$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