Bitzsoft.Integrations.Express.Cainiao
1.0.1
dotnet add package Bitzsoft.Integrations.Express.Cainiao --version 1.0.1
NuGet\Install-Package Bitzsoft.Integrations.Express.Cainiao -Version 1.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Bitzsoft.Integrations.Express.Cainiao" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Bitzsoft.Integrations.Express.Cainiao" Version="1.0.1" />
<PackageReference Include="Bitzsoft.Integrations.Express.Cainiao" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Bitzsoft.Integrations.Express.Cainiao --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Bitzsoft.Integrations.Express.Cainiao, 1.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Bitzsoft.Integrations.Express.Cainiao@1.0.1
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Bitzsoft.Integrations.Express.Cainiao&version=1.0.1
#tool nuget:?package=Bitzsoft.Integrations.Express.Cainiao&version=1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Bitzsoft.Integrations.Express.Cainiao
菜鸟速递 EDI 服务实现 -- 对接菜鸟速递开放平台 B2C 订单管理接口。
功能特性
- 基于菜鸟速递 EDI form-urlencoded 公共信封,业务报文使用 JSON
- 认证方式:
logistic_provider_id+data_digest = Base64(MD5(logistics_interface + secretKey)) - 支持轨迹查询、轨迹订阅、三合一下单、运单取消、时效表达、电子面单取号与预分拣
- 统一异常处理,供应商错误码自动映射为
ExpressException - 实现
IExpressProvider统一契约,可无缝替换其他供应商实现
安装
.NET CLI
dotnet add package Bitzsoft.Integrations.Express.Cainiao
PackageReference
<PackageReference Include="Bitzsoft.Integrations.Express.Cainiao" Version="1.0.0" />
配置
appsettings.json
{
"Express": {
"Cainiao": {
"AppKey": "菜鸟提供的对接码",
"AppSecret": "双方约定的secretKey",
"BaseUrl": "https://edi-daily.xpm.cainiao.com",
"HttpClientName": "CainiaoExpress"
}
}
}
| 配置项 | 必填 | 默认值 | 说明 |
|---|---|---|---|
AppKey |
是 | — | 菜鸟侧提供的对接码,对应 logistic_provider_id |
AppSecret |
是 | — | 双方约定的签名密钥,参与 data_digest 计算 |
BaseUrl |
否 | https://edi-daily.xpm.cainiao.com |
API 基地址;生产环境需配置菜鸟提供的正式网关 |
HttpClientName |
否 | CainiaoExpress |
命名 HttpClient 名称 |
注册服务
从 IConfiguration 绑定(推荐)
using Bitzsoft.Integrations.Express.Cainiao;
builder.Services.AddBitzsoftCainiaoExpress(
builder.Configuration.GetSection("Express:Cainiao"));
委托配置
builder.Services.AddBitzsoftCainiaoExpress(options =>
{
options.AppKey = "your_provider_id";
options.AppSecret = "your_secret_key";
});
请求审计
内置 Bitzsoft.Integrations.RequestLogging 出站请求记录管道,默认使用 NullRequestLogStore 不持久化。
// ① 默认:启用记录管道但不持久化(日志丢弃)
services.AddBitzsoftCainiaoExpress(options => { /* ... */ });
// ② 持久化:宿主注册 IRequestLogStore 实现后,所有出站请求自动落库
services.AddRequestLogging<MyRequestLogStore>(opts =>
{
opts.MaxInMemoryBodyBytes = 64 * 1024; // 仅控制内存/加密临时文件切换,不截断正文
opts.SensitiveFields.Add("AppSecret");
});
services.AddBitzsoftCainiaoExpress(options => { /* ... */ });
使用示例
物流轨迹查询
using Bitzsoft.Integrations.Express.Interfaces;
using Bitzsoft.Integrations.Express.Models;
public class TrackingService
{
private readonly IExpressProvider _express;
public TrackingService(IExpressProvider express) => _express = express;
public async Task TrackAsync(string trackingNumber)
{
ExpressTrackingInfo info = await _express.TrackAsync(trackingNumber);
Console.WriteLine($"状态: {info.State}, 轨迹数: {info.Traces.Count}");
foreach (var step in info.Traces)
Console.WriteLine($"[{step.Time:yyyy-MM-dd HH:mm}] {step.Description}");
// 批量查询
IReadOnlyList<ExpressTrackingInfo> batch =
await _express.BatchTrackAsync(new[] { "CN001", "CN002" });
}
}
订阅轨迹推送
ExpressSubscriptionResult sub = await _express.SubscribeAsync(
trackingNumber: "CN001",
callbackUrl: "https://yourapp.com/express/callback");
// 回调接收需按菜鸟推送接口另行暴露服务
核心类型一览
| 类型 | 说明 |
|---|---|
CainiaoExpressProvider |
菜鸟速递 EDI 服务实现(IExpressProvider) |
CainiaoOptions |
菜鸟配置选项(AppKey / AppSecret / BaseUrl / HttpClientName) |
IExpressProvider |
通用物流操作契约(抽象层) |
ExpressTrackingInfo |
物流轨迹查询结果 |
ExpressShipmentResult |
三合一订单下发结果 |
实现状态
| 方法 | 状态 | 说明 |
|---|---|---|
TrackAsync |
已实现 | 调用物流轨迹查询接口 |
BatchTrackAsync |
已实现 | 并发逐单查询 |
SubscribeAsync |
已实现 | 调用物流轨迹订阅接口;回调接收需按菜鸟推送接口另行暴露服务 |
CreateShipmentAsync |
已实现 | 调用三合一订单下发接口,返回运单号 |
CancelShipmentAsync |
已实现 | 调用运单取消接口;参数可传 mailNo、mailNo|reason 或 JSON |
GetQuoteAsync |
部分实现 | 调用时效表达接口,仅返回截单/揽收时效,不返回运费 |
GenerateWaybillAsync |
部分实现 | 调用电子面单和预分拣接口获取运单号,公开接口不直接返回 HTML/PDF |
DetectCarrierAsync |
不支持 | 菜鸟 B2C EDI 文档未提供独立承运商识别接口 |
API 端点
| 常量 | 接口 | 用途 |
|---|---|---|
PathTrack |
/ext/gateway/ediPracticeTrace/ediStandardPracticeTrace/api |
物流轨迹查询 |
PathSubscribe |
/ext/gateway/ediStandardTraceSubscribe/api |
物流轨迹订阅 |
PathOrderAccept |
/ext/gateway/orderAccept/commonReceive/api |
三合一订单下发 |
PathWaybillAndSort |
/ext/gateway/ediStandardWaybillAndSort/ediStandardWaybillAndSort/api |
电子面单取号和预分拣 |
PathCancel |
/ext/gateway/ediStandardWaybillCancel/api |
运单取消 |
PathQuote |
/ext/gateway/ediStandardExpectCollectTimeQuery/api |
时效表达 |
依赖
| 包 | 说明 |
|---|---|
Bitzsoft.Integrations.Express |
抽象层(IExpressProvider 接口与模型) |
Bitzsoft.Integrations.Compatibility |
基础工具库 |
Bitzsoft.Integrations.RequestLogging |
出站请求记录管道 |
Microsoft.Extensions.Configuration.Abstractions |
配置抽象 |
Microsoft.Extensions.Http |
IHttpClientFactory(Typed Client 连接池) |
Microsoft.Extensions.Options.ConfigurationExtensions |
Options 配置节点绑定 |
注意事项
- 公开文档中的
edi-daily.xpm.cainiao.com为测试网关域名,生产地址、对接码和密钥需由菜鸟侧提供 SubscribeAsync只提交订阅运单号,回调 URL 不属于该接口入参;回调服务需按菜鸟"物流轨迹推送接口"另行实现GenerateWaybillAsync只能返回取号结果,HTML/PDF 打印内容需结合菜鸟打印组件或淘系专用能力补充GetQuoteAsync对应下单前预计揽收信息,不是按单运费报价IExpressProvider使用TryAddSingleton注册,如需同时注册多个供应商请单独引用并自行解析
相关包
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- Bitzsoft.Integrations.Compatibility (>= 1.0.1)
- Bitzsoft.Integrations.Express (>= 1.0.1)
- Bitzsoft.Integrations.RequestLogging (>= 1.0.1)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Http (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
-
net5.0
- Bitzsoft.Integrations.Compatibility (>= 1.0.1)
- Bitzsoft.Integrations.Express (>= 1.0.1)
- Bitzsoft.Integrations.RequestLogging (>= 1.0.1)
- Microsoft.Extensions.Configuration.Abstractions (>= 5.0.0)
- Microsoft.Extensions.Http (>= 5.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 5.0.0)
-
net8.0
- Bitzsoft.Integrations.Compatibility (>= 1.0.1)
- Bitzsoft.Integrations.Express (>= 1.0.1)
- Bitzsoft.Integrations.RequestLogging (>= 1.0.1)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Http (>= 10.0.10)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.10)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Bitzsoft.Integrations.Express.Cainiao:
| Package | Downloads |
|---|---|
|
Bitzsoft.Integrations.Express.All
快递物流服务聚合包 — 包含所有供应商实现 |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.1 | 126 | 8/3/2026 |
| 1.0.0 | 124 | 8/2/2026 |
| 1.0.0-alpha.10 | 52 | 7/26/2026 |
| 1.0.0-alpha.9 | 57 | 7/12/2026 |
| 1.0.0-alpha.8 | 60 | 7/1/2026 |
| 1.0.0-alpha.7 | 76 | 6/16/2026 |
| 1.0.0-alpha.6 | 73 | 6/16/2026 |
| 1.0.0-alpha.5 | 67 | 6/14/2026 |
| 1.0.0-alpha.3 | 75 | 6/7/2026 |