Shopify 现在发布了用于构建 PHP 和 Python 应用的官方开源包。shopify/shopify-app-php 在 Packagist 上以及 shopifyapp 在 PyPI 上均已达到 1.0 版本。 shopify/shopify-app-php 在 Packagist 和 shopifyapp 在 PyPI 已达到版本 1.0。
它们提供与框架无关的原语,用于请求验证、令牌交换和管理员 GraphQL 请求。如果您使用 PHP 或 Python 构建应用,现在即可采用这些包。
变更内容
两个新包现已全面可用:
composer require shopify/shopify-app-phppip install shopifyapp两者都暴露相同的原语,因此您可以按需组合所需的功能,而无需采用完整的框架:
- 针对 Webhook、App Home 和 App Bridge 请求、应用代理请求以及 Checkout、POS、Admin、Customer Account 和 Flow 扩展请求的请求验证
- 令牌交换,包括客户端凭证和刷新已交换的访问令牌
- 具有自动重试处理功能的管理员 GraphQL 客户端
它们支持任何技术栈,包括 Laravel、Symfony、Django、FastAPI,或纯 PHP 和 Python。
之前的 shopify-api-php 和 shopify_python_api 库现已弃用。它们仍可继续使用,但不会再获得新功能或安全修复。
shopify-api-php 在 Packagist 上被标记为废弃,shopify_python_api 在 PyPI 上被标记为不活跃。两者均引导开发者使用新的软件包。
受影响对象
这会影响使用 PHP 或 Python 开发 Shopify 应用的开发者。
使用 Node.js 或 Ruby 库构建的应用不受影响,React Router 仍然是大多数新应用推荐的路径。
已使用旧版库的应用可继续正常运行,无需立即采取任何操作。
为何重要
这些包体积小且功能明确。每个基础组件对应安全设置中的一个步骤,使流程在代码中清晰可见,便于你或 AI 工具理解。
它们在多语言间保持一致。两个包实现相同的接口并运行相同的测试套件,因此对其中一个的改进也能惠及另一个。
它们旨在支持渐进式采用,因此你可以一次迁移一个路由,而无需重写整个应用。
该怎么做
目前没有提供 PHP 或 Python 的应用模板。相反,你需要自行搭建项目结构,并根据需要组合使用这些基础组件。
每个软件包的 README 文档记录了所有基础操作,并可在搭建应用时作为上下文提供给 AI 编码工具。
如果你正在启动一个新的 PHP 或 Python 应用:
- 安装适用于你所用语言的包。
- 使用你首选的框架或技术栈来搭建项目结构。
- 组合所需的基础组件,例如先验证传入的请求,然后再交换令牌。
- 确认请求能够成功验证,并且在开发商店中令牌交换能返回访问令牌。
PHP 使用示例:
$shopify = new Shopify\App\ShopifyApp($clientId, $clientSecret); $result = $shopify->verifyAppHomeReq($request);此示例验证了 App Home 请求。成功后,$result 提供已验证的 $result->shop 和 $result->idToken,你可将其交换为访问令牌。它还包含日志和返回给客户端的响应。
请使用与你处理界面相匹配的 verify... 方法,并直接使用这些值,而无需自行解析或重新验证请求。
如果你正在维护使用 shopify-api-php 或 shopify_python_api 的应用,则没有强制迁移或移除日期。当你准备好时,请遵循新软件包 README 中的升级说明并逐步迁移。
相关文档
- Shopify 库和模板
- Admin GraphQL API 参考
- 位于 GitHub 上的 shopify-app-php GitHub
- 位于 GitHub 上的 shopify-app-python GitHub

