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.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package express-api

kode/express-api

通用快递API集成包,支持多种快递公司接口,提供统一的调用方式,便于快速集成到各种PHP项目中。

功能特性

安装

使用Composer安装:

配置说明

获取API密钥

要使用各快递公司API,您需要在相应开放平台注册并获取API密钥:

  1. EMS:

    • 访问EMS开放平台
    • 注册开发者账号并完成企业认证
    • 在API控制台选择需要的服务接口
    • 获取API密钥(AppKey和AppSecret)
  2. 顺丰SF:

    • 访问顺丰开放平台
    • 注册开发者账号并申请API权限
    • 获取API密钥
  3. 韵达:

    • 访问韵达开放平台
    • 注册开发者账号并完成认证
    • 获取API密钥
  4. 中通:

    • 访问中通开放平台
    • 注册开发者账号并完成认证
    • 获取API密钥
  5. 申通:

    • 访问申通开放平台
    • 注册开发者账号并完成认证
    • 获取API密钥
  6. 菜鸟网络:
    • 访问菜鸟开放平台
    • 注册开发者账号并完成认证
    • 获取AppKey、AppSecret和PartnerId

环境配置

生产环境

在生产环境中使用真实的EMS API端点:

沙箱环境

在开发和测试阶段,建议使用沙箱环境:

配置参数详解

app_key

app_secret

partner_id

sandbox

timeout

version

认证机制

EMS API使用OAuth 2.0客户端凭证模式进行认证:

  1. 使用app_key和app_secret获取访问令牌
  2. 在后续API请求中使用该令牌进行认证

网络要求

生产环境端点

沙箱环境端点

确保您的服务器能够访问这些地址。

快速开始

初始化API客户端

API方法

1. 发货通知

2. 批量发货

3. 取件通知

4. 订单查询

5. 批量查询订单

6. 取消订单

7. 轨迹查询

8. 批量轨迹查询

9. 拦截件

10. 改件信息

11. 面单打印

12. 批量面单打印

国际物流(跨境 / 货运)快速开始

国际物流客户端与国内快递共用同一套工厂入口,差异仅在配置字段与「运输方式 / 海关申报」等国际要素。

国内货运(零担 / 整车 / 快运)快速开始

国内货运客户端与国内快递 / 国际物流共用同一套工厂入口,差异仅在配置字段与「服务类型(零担 / 整车 / 快运)」等货运要素。

物流链自动关联(v2.3.0,核心能力)

你不用自己去指定物流链的物流:给出运单号,SDK 自动识别归属承运商; 给出发货意图(起止国家 / 重量 / 运输方式),SDK 自动挑选每个环节的承运商并拼装整条链路。

1) 运单号自动识别承运商 —— ExpressApiClient::recognize()

底层由 CourierRecognizer 完成,内置各服务商运单号特征规则(前缀 / 长度 / 字符集); 规则未命中时,可经 AggregateResolver 聚合 17TRACK / 快递100 / 快递鸟等已接入的权威源做确定性回退:

AggregateResolver 会把各家返回的外部承运商代码(如 17TRACK 的 ups、快递100 的 shunfeng) 经内置别名表映射为本 SDK 的内部承运商代码(如 sf),单个聚合源失败不阻断整体。 也可直接用 CourierRecognizer::registerPattern() 注册 / 覆盖规则。

2) 按发货意图自动拼装物流链 —— ExpressApiClient::buildChain()

不传 prefer 时,编排器按「已签约配置」自动挑选每个环节的最优承运商; 某环节未签约则自动回退同类目其他承运商,仍缺失则标记 unavailable 而不中断整链。

3) 按运单号自动识别并推断完整链路 —— ExpressApiClient::chainFromTracking()

三类入口均不触网:recognize() 与 buildChain()/chainFromTracking() 仅做本地识别与编排, 真正查询需调用 $chain->track($trackingNo)(单段失败相互隔离)。

自动发现能力菜单(物流链总览)

getApiMenu() 会基于各客户端实际方法,按 order / query / label / freight / customs 分类自动生成能力目录, 无需手工维护,便于前端动态渲染菜单或生成文档:

韧性与可观测性(v2.2.0)

失败重试(指数退避)

传输层在遇到瞬时故障(连接错误、超时、HTTP 5xx)时会按指数退避自动重试; 客户端错误(HTTP 4xx)视为终态,不重试。默认关闭重试,可在进程启动时全局开启:

重试为全局静态配置,作用于全部 30 家快递商。SSL 强制校验默认开启,可用 HttpClient::setVerifySsl(false) 关闭(仅测试/内网自签场景)。

响应归一化策略

所有响应经由 ResponseHandler 按快递商(provider)注册的策略统一判定成功/失败并解包业务数据, 避免散落在各客户端的重复判断。EMS / 顺丰已预置精确策略;其余快递商回退到保守默认策略 (仅在 error 字段、success === false、或 code ∈ [400,599] 时判定失败,不擅自改包结构)。

如需为某家快递商定制策略:

跨快递商批量轨迹查询

ExpressApiClient::batchQueryTracking() 接收「快递商 + 运单号」条目列表,逐单调用对应客户端, 单条失败相互隔离(不中断其余查询),最终汇总 results / success / failed:

版本号入口

请求诊断

无需引入日志依赖,可随时读取最近一次请求的诊断元信息(含耗时、HTTP 状态码、重试次数):

面单布局功能设计

功能概述

面单布局功能用于生成和管理快递面单的打印布局配置,支持不同快递公司的面单模板。

面单模板结构

布局管理器

获取和使用字段值

核心类设计

LayoutManager

负责面单布局的管理,包括创建、读取、更新、删除模板。

Template

表示一个面单模板,包含尺寸信息和字段定义。

使用面单可视化编辑器

  1. 启动PHP内置服务器:

  2. 访问 http://localhost:8000/ 进入面单可视化编辑器

  3. 使用编辑器功能:
    • 拖拽调整元素位置
    • 调整元素大小
    • 修改元素属性(字体、颜色、边框等)
    • 添加文本、条形码、二维码元素
    • 选择面单规格
    • 预览和导出配置

面单模板配置示例

多语言支持

AdvancedLayoutManager 支持创建和管理多语言字段,使得面单模板可以在不同语言环境下使用。

MultilingualField 类

MultilingualField 类继承自 Field 类,提供了多语言标签的支持。

构造函数

配置参数

方法

使用示例

在模板中使用多语言字段

在创建模板时,可以通过在字段配置中添加 labels 参数来创建多语言字段:

错误处理

所有 API 调用失败都会抛出 Kode\ExpressApi\Common\Exception\ExpressApiException,其 getDetails() 可获取原始响应体,便于排查。响应是否成功、如何解包由 ResponseHandler 的按快递商策略统一决定 (详见上文「响应归一化策略」)。约定上的标准响应结构如下:

瞬时网络故障(连接错误 / 超时 / 5xx)会按 HttpClient::setRetry() 自动重试; 4xx 客户端错误不会重试,直接抛出 ExpressApiException。

开发指南

集成新的快递公司

  1. 创建新的配置类(继承AbstractConfig)
  2. 创建认证类(实现AuthInterface)
  3. 创建客户端类(实现ClientInterface)
  4. 更新ExpressApiClient.php,添加新的快递公司支持
  5. 如该快递商响应结构与通用约定不同,调用 ResponseHandler::registerPolicy() 注册专属的错误判定 / 数据解包策略(可选,未注册则回退保守默认策略)

代码规范

本项目遵循PSR-12代码规范。

代码检查

使用PHP_CodeSniffer检查代码规范:

自动修复

自动修复代码规范问题:

运行测试

运行所有测试用例:

测试覆盖率

生成测试覆盖率报告:

测试要求

  1. 测试覆盖率: 所有代码都必须有相应的测试用例,测试覆盖率应达到90%以上
  2. 测试类型: 包含单元测试和集成测试
  3. 测试环境: 测试应在沙箱环境中进行,避免影响生产数据

支持的快递公司

SDK 覆盖一条完整的物流链:国内快递 → 国际运输(海运 / 空运)→ 海关清关 → 末端派送。

国内快递(快递)

代码 名称 备注
ems 邮政EMS OAuth2 鉴权
sf 顺丰速运 签名鉴权
yunda 韵达快递 签名鉴权
zto 中通快递 签名鉴权
sto 申通快递 签名鉴权
cainiao 菜鸟网络 需 PartnerId
jd 京东快递/京东物流 签名鉴权
jt 极兔速递(J&T) 签名鉴权
yto 圆通速递(YTO) 签名鉴权
best 百世快递(百世汇通) 签名鉴权

国际物流(跨境 / 货运)

代码 名称 鉴权方式 运输方式
fourpx 4PX递四方 OAuth2 + MD5 签名 海运 / 空运
sf_international 顺丰国际 HMAC-SHA256 签名 海运 / 空运
dhl DHL国际 HTTP Basic 空运为主
yunexpress 云途物流 HMAC-SHA256 签名 海运 / 空运
ems_international EMS国际 MD5 签名 海运 / 空运
yanwen 燕文物流 MD5 签名 海运 / 空运
fedex FedEx(联邦快递)国际 OAuth2 Bearer 空运为主
ups UPS(联合包裹)国际 OAuth2 Bearer 空运为主
usps USPS(美国邮政)国际 OAuth2 Bearer 空运 / 海运
postnl PostNL(荷兰邮政)国际 API Key 空运 / 海运
royalmail Royal Mail(英国皇家邮政)国际 OAuth2 Bearer 空运 / 海运
bpost bpost(比利时邮政)国际 API Key 空运 / 海运
singpost SingPost(新加坡邮政)国际 API Key 空运 / 海运

国际物流客户端统一继承 International\AbstractInternationalClient,提供:

注:各服务商真实接口路径与字段以签约后的开放平台文档为准,SDK 已提供标准鉴权与传输骨架,接入时按文档核对即可。

国内货运(零担 / 整车 / 快运)

代码 名称 鉴权方式 服务类型
debang 德邦物流 MD5 签名 零担 / 整车 / 快运
ane 安能物流 HMAC-SHA256 签名 零担 / 整车 / 快运
hoau 天地华宇 MD5 签名 零担 / 整车 / 快运

国内货运客户端统一继承 DomesticFreight\AbstractDomesticFreightClient,提供:

注:各服务商真实接口路径与字段以签约后的开放平台文档为准,SDK 已提供标准鉴权与传输骨架,接入时按文档核对即可。

聚合查询(运单轨迹 + 运单号自动识别)

代码 名称 鉴权方式 说明
kuaidi100 快递100 MD5 签名 运单轨迹 + 智能识别承运商
kuaidiniao 快递鸟 MD5(Base64) 签名 运单轨迹 + 即时识别
juhe 聚合数据 API Key 运单轨迹 + 自动判定
seventeentrack 17TRACK 17token 头 国际运单识别(覆盖最广,推荐作为权威回退首源)

聚合查询服务商只提供轨迹查询与运单号自动识别,并不承接下单 / 打单 / 拦截等实操业务; 调用其实操方法会抛出明确的「不支持」异常。它们更重要的角色是 CourierRecognizer 的权威回退解析器: 当运单号规则无法命中时,可将其接入为动态解析器,确定性地识别归属承运商。

各快递公司特定配置参数

邮政EMS (ems)

参数说明:

顺丰速运 (sf)

参数说明:

韵达快递 (yunda)

参数说明:

中通快递 (zto)

参数说明:

申通快递 (sto)

参数说明:

菜鸟网络 (cainiao)

参数说明:

技术依赖

许可证

MIT License

贡献

欢迎提交Issue和Pull Request!

联系我们

如有问题或建议,请通过以下方式联系:


All versions of express-api with dependencies

PHP Build Version
Package Version
Requires php Version ^8.3
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package kode/express-api contains the following files

Loading the files please wait ...