Skip to content
Bitzsoft.Integrationsbitzsoft.integrations

Reference

法大大 电子签章

法大大电子签章服务——AppId/AppKey HMAC-SHA256 签名 + OAuth Token 自动管理。

Last updated

基于法大大开放平台 V3 API 实现,双轮 HMAC-SHA256 签名 + Token 自动管理。

包信息

  • NuGet 包:Bitzsoft.Integrations.ElectronicSignature.Fadada
  • 接口:IElectronicSignatureProvider
  • 鉴权:HMAC-SHA256 签名 + OAuth Token(自动获取与刷新)
  • Provider ID:Fadada

配置

字段类型必填默认值说明
AppIdstring应用标识
AppKeystring应用密钥(参与 HMAC-SHA256 签名,不传输)
BaseUrlstringhttps://openapi.fadada.com/api/v3/API 基地址(沙箱 https://uat-openapi.fadada.com/api/v3/
TimeoutTimeSpan00:00:30HTTP 请求超时(文件上传/下载可调大)
HttpClientNamestringFadadaElectronicSignatureProvider命名 HttpClient 标识
{
"Fadada": {
"AppId": "your-app-id",
"AppKey": "your-app-key",
"BaseUrl": "https://openapi.fadada.com/api/v3/",
"Timeout": "00:00:30"
}
}

注册

using Bitzsoft.Integrations.ElectronicSignature.Fadada;
// 方式一:IConfiguration(默认读取 "Fadada" 配置节)
services.AddBitzsoftFadadaElectronicSignature(configuration);
// 方式二:委托配置
services.AddBitzsoftFadadaElectronicSignature(options =>
{
options.AppId = "your-app-id";
options.AppKey = "your-app-key";
options.BaseUrl = "https://openapi.fadada.com/api/v3/";
});

使用示例

// 注入 IElectronicSignatureProvider,ProviderName == "Fadada"
var createResult = await provider.CreateContractAsync(new SimpleContractRequest
{
Title = "采购合同",
FileName = "contract.pdf",
FileData = await File.ReadAllBytesAsync("contract.pdf"),
SignerName = "张三",
SignerPhone = "13800000000"
});
var contractId = createResult.Data!;
// 查询详情、获取签署页面、下载合同
var detail = await provider.GetContractDetailAsync(contractId);
var signUrl = await provider.GetSigningUrlAsync(contractId, "signer-id");
var bytes = await provider.DownloadContractAsync(contractId);

鉴权机制

  • 首次请求自动获取 Token,内存缓存并在过期前 5 分钟自动刷新。
  • SemaphoreSlim 保证并发安全(双重检查锁模式)。
  • 回调验签:校验 X-Fadada-Timestamp 时间戳新鲜度(5 分钟)与 X-Fadada-Signature,使用固定时间比较防止时序攻击。

已知限制

统一接口仅覆盖极简场景(单文件、单签署方)。复杂签署任务、账号、组织、模板、印章等通过 FadadaElectronicSignatureProvider 的 partial class 扩展方法调用。

100%

滚轮或按钮缩放 · 放大后拖动画面 · 双击切换 100% / 200%