sabao / eleme-openapi-sdk
饿了么开放平台 PHP SDK(基于官方 SDK 优化维护:PHP 8.2+、完整类型注释、CS-Fixer / PHPStan 检查)
v1.0.2
2026-08-11 10:07 UTC
Requires
- php: >=8.2
- ext-curl: *
- ext-json: *
- ext-mbstring: *
- psr/log: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
- phpstan/phpstan: ^2.0
README
饿了么开放平台 PHP SDK(基于官方 eleme-openapi/eleme-openapi-sdk 优化维护)。
注意:本项目命名空间与官方包不同,两者不能混用。
特性
- 要求 PHP >= 8.2(适配 PHP 8.2,修复动态属性等兼容问题)
- 统一命名空间
Sabao\Eleme\,PSR-4 自动加载 - 全量补齐/修正方法参数与返回值类型注释(
@param/@return) - 内置 PHP-CS-Fixer 与 PHPStan(level 6)配置,开箱即用
- 修复官方 SDK 中
AdService/CrmService重名方法导致类无法加载的问题(重名方法按业务段重命名) - 移除基于
eval的 JSON 解码,改用json_decode+JSON_BIGINT_AS_STRING,避免大整数精度丢失 - 方法名、参数名与官方接口 action 保持一致,接口能力同步至官方 1.92.0
环境要求
- PHP >= 8.2
- ext-curl、ext-json、ext-mbstring
安装
composer require sabao/eleme-openapi-sdk
基本用法
<?php use Sabao\Eleme\Api\ShopService; use Sabao\Eleme\Config\Config; // 实例化一个配置类 $config = new Config($app_key, $app_secret, false); // 使用 config 和 token 对象,实例化一个服务对象 // $token 为授权接口返回的对象,包含 access_token 属性 $shop_service = new ShopService($token, $config); // 调用服务方法,获取资源 $shop = $shop_service->get_shop('12345');
Token 获取
企业应用与个人应用的 token 获取方法略有不同。token 获取成功后可以缓存较长时间使用,请勿每次请求都重新获取。
企业应用
<?php use Sabao\Eleme\Config\Config; use Sabao\Eleme\OAuth\OAuthClient; $config = new Config($app_key, $app_secret, false); $client = new OAuthClient($config); // 根据 OAuth2.0 中的 state、scope 和 callback_url,获取授权 URL $auth_url = $client->get_auth_url($state, $scope, $callback_url);
商家打开授权 URL,同意授权后跳转到回调页面并返回 code:
// 通过授权得到的 code,以及正确的 callback_url,获取 token $token = $client->get_token_by_code($code, $callback_url);
个人应用
<?php use Sabao\Eleme\Config\Config; use Sabao\Eleme\OAuth\OAuthClient; $config = new Config($app_key, $app_secret, false); $client = new OAuthClient($config); // 使用授权类获取 token $token = $client->get_token_in_client_credentials();
开发与质量检查
# 代码风格修复 composer cs-fix # 代码风格检查(不修改文件) composer cs-check # PHPStan 静态分析(level 6) composer analyse
与官方 SDK 的差异
命名空间
| 版本 | 命名空间 |
|---|---|
| 官方 SDK | ElemeOpenApi\... |
| 本包 | Sabao\Eleme\... |
破坏性变更
- 最低 PHP 版本提升至 8.2
Config构造函数参数增加原生类型声明(string $app_key、string $app_secret、bool $sandbox、bool $coupon)AdService中与连锁/资金计划相关的重名方法已重命名(如find_dou_jin_chain_cpc_solution、stable_conversion_chain_find_solution),CrmService第二个query()更名为page_query()- 移除了
RpcClient::optimize_json_decode()(内部eval实现),响应解析改为json_decode(..., JSON_BIGINT_AS_STRING)
CHANGELOG
[2.0.0]
- 包名调整为
sabao/eleme-openapi-sdk,命名空间调整为Sabao\Eleme\ - 要求 PHP >= 8.2,修复 PHP 8.2 兼容问题(动态属性、
evalJSON 解码等) - 全量补齐并修正方法类型注释
- 新增 PHP-CS-Fixer 与 PHPStan 配置
- 修复
AdService/CrmService重名方法导致的类加载失败
[1.92.0](上游基线)
同步官方 SDK 1.92.0 的全部接口。
License
本项目基于 MIT License 发布,版权归原作者所有。