Download the PHP package kode/express-api without Composer
On this page you can find all versions of the php package kode/express-api. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download kode/express-api
More information about kode/express-api
Files in kode/express-api
Package express-api
Short Description 一个通用的快递API集成包,支持多种快递公司(EMS、韵达、申通、中通、菜鸟、顺丰、通用打印面单设计器等)
License MIT
Informations about the package express-api
kode/express-api
通用快递API集成包,支持多种快递公司接口,提供统一的调用方式,便于快速集成到各种PHP项目中。
功能特性
- 支持多种快递公司API(目前已集成:EMS、顺丰SF、韵达、中通、申通、菜鸟网络)
- 统一的接口调用方式,简化开发流程
- 灵活的面单布局管理,支持可视化编辑
- 完善的错误处理和响应标准化
- 支持PSR-12代码规范
- 支持PHP 7.4+
- 支持多语言字段配置
- 丰富的测试用例,测试覆盖率高
安装
使用Composer安装:
配置说明
获取API密钥
要使用各快递公司API,您需要在相应开放平台注册并获取API密钥:
-
EMS:
- 访问EMS开放平台
- 注册开发者账号并完成企业认证
- 在API控制台选择需要的服务接口
- 获取API密钥(AppKey和AppSecret)
-
顺丰SF:
- 访问顺丰开放平台
- 注册开发者账号并申请API权限
- 获取API密钥
-
韵达:
- 访问韵达开放平台
- 注册开发者账号并完成认证
- 获取API密钥
-
中通:
- 访问中通开放平台
- 注册开发者账号并完成认证
- 获取API密钥
-
申通:
- 访问申通开放平台
- 注册开发者账号并完成认证
- 获取API密钥
- 菜鸟网络:
- 访问菜鸟开放平台
- 注册开发者账号并完成认证
- 获取AppKey、AppSecret和PartnerId
环境配置
生产环境
在生产环境中使用真实的EMS API端点:
沙箱环境
在开发和测试阶段,建议使用沙箱环境:
配置参数详解
app_key
- 类型: string
- 必填: 是
- 说明: 应用Key,从各快递公司开放平台获取
app_secret
- 类型: string
- 必填: 是
- 说明: 应用密钥,从各快递公司开放平台获取
partner_id
- 类型: string
- 必填: 否(仅菜鸟网络必需)
- 说明: 合作伙伴ID,从菜鸟开放平台获取
sandbox
- 类型: boolean
- 默认值: false
- 说明: 是否使用沙箱环境
true: 使用沙箱环境,用于开发测试false: 使用生产环境,用于正式业务
timeout
- 类型: integer
- 默认值: 30
- 说明: HTTP请求超时时间(秒)
version
- 类型: string
- 默认值: 'v1'
- 说明: API版本号
认证机制
EMS API使用OAuth 2.0客户端凭证模式进行认证:
- 使用
app_key和app_secret获取访问令牌 - 在后续API请求中使用该令牌进行认证
网络要求
生产环境端点
- EMS:
https://api.ems.com.cn(端口: 443) - 顺丰SF:
https://sfapi.sf-express.com(端口: 443) - 韵达:
https://api-yunda.kdniao.com(端口: 443) - 中通:
https://api-zto.kdniao.com(端口: 443) - 申通:
https://api-sto.kdniao.com(端口: 443) - 菜鸟网络:
https://api-cainiao.openapi.alibaba.com(端口: 443)
沙箱环境端点
- EMS:
https://api-sandbox.ems.com.cn(端口: 443) - 顺丰SF:
https://sfapi-sandbox.sf-express.com(端口: 443) - 韵达:
https://api-sandbox-yunda.kdniao.com(端口: 443) - 中通:
https://api-sandbox-zto.kdniao.com(端口: 443) - 申通:
https://api-sandbox-sto.kdniao.com(端口: 443) - 菜鸟网络:
https://api-sandbox-cainiao.openapi.alibaba.com(端口: 443)
确保您的服务器能够访问这些地址。
快速开始
初始化API客户端
API方法
1. 发货通知
2. 批量发货
3. 取件通知
4. 订单查询
5. 批量查询订单
6. 取消订单
7. 轨迹查询
8. 批量轨迹查询
9. 拦截件
10. 改件信息
11. 面单打印
12. 批量面单打印
面单布局功能设计
功能概述
面单布局功能用于生成和管理快递面单的打印布局配置,支持不同快递公司的面单模板。
面单模板结构
布局管理器
获取和使用字段值
核心类设计
LayoutManager
负责面单布局的管理,包括创建、读取、更新、删除模板。
Template
表示一个面单模板,包含尺寸信息和字段定义。
使用面单可视化编辑器
-
启动PHP内置服务器:
-
访问 http://localhost:8000/ 进入面单可视化编辑器
- 使用编辑器功能:
- 拖拽调整元素位置
- 调整元素大小
- 修改元素属性(字体、颜色、边框等)
- 添加文本、条形码、二维码元素
- 选择面单规格
- 预览和导出配置
面单模板配置示例
多语言支持
AdvancedLayoutManager 支持创建和管理多语言字段,使得面单模板可以在不同语言环境下使用。
MultilingualField 类
MultilingualField 类继承自 Field 类,提供了多语言标签的支持。
构造函数
配置参数
labels: 关联数组,键为语言代码,值为对应语言的标签- 所有其他
Field类的配置参数同样适用
方法
addLabel(string $language, string $label): self- 添加语言标签getLabelByLanguage(string $language): ?string- 根据语言获取标签getLabels(): array- 获取所有语言标签setLanguage(string $language): self- 设置当前语言getLanguage(): string- 获取当前语言setLabel(string $label): self- 设置默认标签getLabel(): string- 获取当前语言的标签
使用示例
在模板中使用多语言字段
在创建模板时,可以通过在字段配置中添加 labels 参数来创建多语言字段:
错误处理
所有API调用返回的响应都遵循统一的格式:
开发指南
集成新的快递公司
- 创建新的配置类(继承AbstractConfig)
- 创建认证类(实现AuthInterface)
- 创建客户端类(实现ClientInterface)
- 更新ExpressApiClient.php,添加新的快递公司支持
- 在ResponseHandler.php中添加新的响应处理逻辑
代码规范
本项目遵循PSR-12代码规范。
代码检查
使用PHP_CodeSniffer检查代码规范:
自动修复
自动修复代码规范问题:
运行测试
运行所有测试用例:
测试覆盖率
生成测试覆盖率报告:
测试要求
- 测试覆盖率: 所有代码都必须有相应的测试用例,测试覆盖率应达到90%以上
- 测试类型: 包含单元测试和集成测试
- 测试环境: 测试应在沙箱环境中进行,避免影响生产数据
Git工作流
分支策略
main: 主分支,包含稳定版本develop: 开发分支,包含最新功能feature/*: 功能分支,用于开发新功能hotfix/*: 热修复分支,用于紧急修复
提交信息规范
提交信息应遵循以下格式:
type类型:
feat: 新功能fix: 修复bugdocs: 文档更新style: 代码格式调整refactor: 代码重构test: 测试相关chore: 构建过程或辅助工具的变动
示例:
版本管理
遵循语义化版本规范(SemVer):
- 主版本号(MAJOR): 不兼容的API修改
- 次版本号(MINOR): 向后兼容的功能性新增
- 修订号(PATCH): 向后兼容的问题修正
支持的快递公司
- EMS(中国邮政速递物流)
- SF(顺丰速运)
- 韵达快递
- 中通快递
- 申通快递
- 菜鸟网络
- 计划支持:京东快递、快递100、快递鸟、聚合快递
各快递公司特定配置参数
邮政EMS (ems)
参数说明:
app_key: EMS分配的应用Keyapp_secret: EMS分配的应用密钥sandbox: 是否使用沙箱环境(测试环境)
顺丰速运 (sf)
参数说明:
app_key: 顺丰分配的应用Keyapp_secret: 顺丰分配的应用密钥sandbox: 是否使用沙箱环境(测试环境)
韵达快递 (yunda)
参数说明:
app_key: 韵达分配的应用Keyapp_secret: 韵达分配的应用密钥sandbox: 是否使用沙箱环境(测试环境)
中通快递 (zto)
参数说明:
app_key: 中通分配的应用Keyapp_secret: 中通分配的应用密钥sandbox: 是否使用沙箱环境(测试环境)
申通快递 (sto)
参数说明:
app_key: 申通分配的应用Keyapp_secret: 申通分配的应用密钥sandbox: 是否使用沙箱环境(测试环境)
菜鸟网络 (cainiao)
参数说明:
app_key: 菜鸟网络分配的应用Keyapp_secret: 菜鸟网络分配的应用密钥partner_id: 菜鸟网络分配的合作伙伴IDsandbox: 是否使用沙箱环境(测试环境)
技术依赖
- PHP 7.4+
- GuzzleHttp(HTTP客户端)
- PHPUnit 12(测试框架)
许可证
Apache License 2.0
贡献
欢迎提交Issue和Pull Request!
联系我们
如有问题或建议,请通过以下方式联系: