vin-sw / shopware-sdk
Shopware 6 平台的 PHP SDK
Requires
- php: ^7.4 || ^8.0 || ^8.1
- ext-json: *
- guzzlehttp/guzzle: ^7.0
- psr/http-client: ^1.0
Requires (Dev)
- phpstan/phpstan: ^0.12.89
- phpunit/phpunit: *
- squizlabs/php_codesniffer: 3.*
- symfony/var-dumper: ^5.3
- symplify/config-transformer: ^9.3
- symplify/easy-coding-standard: 9.3.20
- dev-master
- 2.0.0
- 1.7.3
- 1.7.2.x-dev
- 1.7.2
- 1.7.1
- 1.7.0.x-dev
- 1.5.1.x-dev
- 1.5.1
- 1.5.0.x-dev
- 1.5.0
- 1.4.0.x-dev
- 1.4.0
- v1.3.3.x-dev
- 1.3.3
- 1.3.2.x-dev
- 1.3.2
- 1.3.1.x-dev
- 1.3.1
- 1.3.0.x-dev
- 1.3.0
- 1.2.2.x-dev
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0.x-dev
- 1.1.0
- 1.0.0
- dev-vienthuong/issue5
- dev-repository-factory-improvement
- dev-SP-01/action-button-response
This package is auto-updated.
Last update: 2024-09-05 11:30:11 UTC
README
Shopware PHP SDK 是 Shopware 6 API 的简单 SDK 实现。它帮助以面向对象的方式访问 API。
如果你熟悉 Shopware 6 DAL 语法以及如何获取它,你可能觉得这个示例是可预测和直接的
你可以使用 1.x 版本连接到 sw 6.5,但为了获取最新的架构和新 6.5 功能,你应该使用 2.x 版本。
安装
使用 Composer 安装
composer require vin-sw/shopware-sdk
SDK 主要功能
-
管理员 API
- CRUD API
- 同步 API
- 用户配置 API
- 通知 API
- 管理员搜索 API
- 其他服务
- ... (待办事项)
-
Webhook 辅助工具
- Webhook 注册
- Webhook 身份验证
- Webhook 接收器
-
如果你使用 Laravel 8,可以考虑查看这个Laravel Shopware SDK 适配器
用法
更多示例在示例文件夹中,对于在 App 中集成 SDK,请查看此仓库
管理员身份验证
- 支持 3 种授权类型,你可以为身份验证创建这 3 种授权类型之一
使用密码授权类型
$grantType = new PasswordGrantType($username, $password);
使用客户端凭据授权类型
$grantType = new ClientCredentialsGrantType($clientId, $clientSecret);
使用刷新令牌授权类型
$grantType = new RefreshTokenGrantType($refreshToken);
或动态地通过
$grantType = GrantType::createFromConfig($config);
查看 身份验证 示例以获取参考。
在拥有 GrantType 对象后,你可以使用 AdminAuthenticator 获取管理员的访问令牌
$adminClient = new AdminAuthenticator($grantType, $shopUrl); $accessToken = $adminClient->fetchAccessToken(); $context = new Context($shopUrl, $accessToken);
注意:你可能希望将访问令牌对象存储到数据库中,这样你就可以在每次管理员 API 请求时创建对象,而无需请求另一个访问令牌。
使用标准和存储库工作
当你使用 Shopware 的核心或 SW 管理中的存储库工作时,它非常相似。
这是一个检索具有免费配送的产品示例
// Create the repository for the entity $productRepository = RepositoryFactory::create(ProductDefinition::ENTITY_NAME); // Create the criteria $criteria = new Criteria(); $criteria->addFilter(new EqualsFilter('shippingFree', true)); // Using this criteria and the context object that you create from authentication step, you can retrieving the result $products = $productRepository->search($criteria, $context);
每个 Shopware 实体都映射到 Entity 和 Collection 类,这些类可以在 Data/Entity 中找到,因此你可以轻松访问它们的属性,当从管理员 API 获取数据时。
支持 get、search、searchIds、create、update、delete、syncDeleted、createVersion、mergeVersion、deleteVersion、clone、schema 等方法。每种方法都需要一个 Context 对象
查看 示例 以获取一些有用的参考。
使用 App
AppRegistration 示例
这个示例是从 Laravel 路由操作中提取的,但它可以在其他框架中相同
public function register(ShopRepository $repository): RegistrationResponse { $authenticator = new WebhookAuthenticator(); $app = new App(config('sas_app.app_name'), config('sas_app.app_secret')); $response = $authenticator->register($app); // Save the response the database... $repository->createShop($response->getShop()); $confirmationUrl = route('sas.app.auth.confirmation'); return new RegistrationResponse($response, $confirmationUrl); } public function confirm(Request $request, ShopRepository $shopRepository): Response { $shopId = $request->request->get('shopId'); $shopSecret = $shopRepository->getSecretByShopId($shopId); if (!WebhookAuthenticator::authenticatePostRequest($shopSecret)) { return new Response(null, 401); } $shopRepository->updateAccessKeysForShop( $shopId, $request->request->get('apiKey'), $request->request->get('secretKey') ); return new Response(); }
操作按钮响应示例
当你从操作按钮接收 POST 请求时,你可以返回以下这些 ActionResponse (PSR-7 Response) 类之一,这些类已从 Shopware 的核心移植过来
namespace Vin\ShopwareSdk\Data\Response; /** * @see Shopware\Core\Framework\App\ActionButton */ new EmptyResponse(); new ReloadDataResponse($shopSecret); new OpenNewTabResponse($shopSecret, 'http://shopware.test'); new NotificationResponse($shopSecret, 'Success!', NotificationResponse::SUCCESS); new NotificationResponse($shopSecret, 'Error!', NotificationResponse::ERROR); new OpenModalResponse($shopSecret, $iframeUrl, OpenModalResponse::LARGE_SIZE, true);
使用管理员 API 服务
- 当前支持的服务
- InfoService
- MediaService
- UserService
- 状态机服务
- 同步服务
- 通知服务
- 用户配置服务
- 管理员搜索服务
- 对于没有具体类的其他服务,使用:AdminActionService
ApiService需要一个Context对象作为它的第一个参数。查看examples/sync-service.php或examples/info-service.php以获取一些参考。
变更日志
请参阅CHANGELOG了解最近发生了哪些变化。
使用Webhook
- 请检查我们AppExample上的集成。
贡献
请在GitHub问题页面上创建问题或直接通过levienthuong@gmail.com联系我。
安全
如果您发现任何安全相关的问题,请通过电子邮件levienthuong@gmail.com联系,而不是使用问题跟踪器。
要求
- ext-curl
- PHP >=7.4
- SW >= 6.4
此SDK主要针对Shopware 6.4及更高版本,较早的SW应用程序在没有测试的情况下可能仍然可使用
致谢
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。