安装哪个包取决于你用几家厂商。库提供三种粒度,从细到粗递增。
方式一:安装单个厂商包
只用一家厂商时,直接安装对应的厂商实现包。它会把抽象层和基础设施作为传递依赖拉进来。
# 只用支付宝dotnet add package Bitzsoft.Integrations.Payment.Alipay// ① 注册时调对应的 AddBitzsoft 方法builder.Services.AddBitzsoftAlipayPayment(builder.Configuration.GetSection("Alipay"));
// ② 直接注入能力接口app.MapPost("/pay", async (IPaymentProvider payment) =>{ var result = await payment.CreateOrderAsync(request); return result.IsSuccess ? Results.Ok(result.Data) : Results.BadRequest(result.ErrorMessage);});适用场景:只集成一家厂商,确定不扩展。
方式二:安装域聚合包(推荐)
用同域多家厂商时,安装聚合包 .All。它把域内全部厂商拉进来,按配置节存在性自动注册。
# 安装 Payment 聚合包(含 Alipay + WeChatPay + Stripe)dotnet add package Bitzsoft.Integrations.Payment.All// appsettings.json — 只写需要的厂商,不需要的省略{ "Payment": { "Alipay": { "AppId": "2021...", "AppPrivateKey": "...", "AlipayPublicKey": "..." }, "WeChatPay": { "AppId": "wx...", "MchId": "...", "ApiV3Key": "..." } }}// ① 一行注册,自动按配置节存在性注册对应厂商builder.Services.AddBitzsoftPaymentAll(builder.Configuration, "Payment");
// ② 多厂商场景注入 Resolver 按需路由app.MapPost("/pay/{provider}", async ( string provider, IIntegrationProviderResolver<IPaymentProvider> providers, PaymentOrderRequest request) =>{ // ③ 按稳定 Provider ID 解析(大小写不敏感) var payment = providers.GetRequired(provider); var result = await payment.CreateOrderAsync(request); return result.IsSuccess ? Results.Ok(result.Data) : Results.BadRequest(result.ErrorMessage);});适用场景:同域多家厂商,或未来可能扩展。
方式三:安装全量聚合包
需要跨域集成时,安装 Bitzsoft.Integrations.All,它引用全部模块。
dotnet add package Bitzsoft.Integrations.All适用场景:微服务或集成中间层,需要同时接入多个功能域。
选型建议
| 场景 | 推荐安装 | 理由 |
|---|---|---|
| 只用一家厂商 | 厂商包 | 最小依赖 |
| 同域多家厂商 | 域聚合包 .All | 配置驱动注册,扩展方便 |
| 跨域集成 | 全量包 Integrations.All | 一次安装全部能力 |
| 需要兼容 net5.0 | 按域安装(不用全量包) | 全量包不目标 net5.0 |
Sms 域特殊说明
Sms 是唯一不拆包的域。所有 6 家供应商在同一个包里:
dotnet add package Bitzsoft.Integrations.Sms注册时直接调 AddXxxSms()(不带 Bitzsoft 前缀),详见 Sms 域手册。