基于爱签开放平台 API 实现,采用 RSA2(SHA256WithRSA)请求体签名机制。
包信息
- NuGet 包:
Bitzsoft.Integrations.ElectronicSignature.Asign - 接口:
IElectronicSignatureProvider - 鉴权:RSA2(SHA256WithRSA)body 签名(AppId / PrivateKey)
- Provider ID:
Asign
配置
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
AppId | string | 是 | — | 应用 AppId |
PrivateKey | string | 是 | — | 开发者 RSA 私钥(PKCS#8 PEM 格式,用于请求签名) |
PublicKey | string | 是 | — | 平台 RSA 公钥(PKCS#8 PEM 格式,用于回调验签) |
BaseUrl | string | 否 | https://oapi.asign.cn | API 基地址(测试 https://prev.asign.cn) |
Timeout | TimeSpan | 否 | 00:00:30 | HTTP 请求超时(文件上传可调大) |
HttpClientName | string | 否 | AsignElectronicSignatureProvider | 命名 HttpClient 标识 |
{ "Asign": { "AppId": "your-app-id", "PrivateKey": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", "PublicKey": "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----", "BaseUrl": "https://oapi.asign.cn", "Timeout": "00:00:30" }}注册
using Bitzsoft.Integrations.ElectronicSignature.Asign;
// 方式一:IConfiguration(默认读取 "Asign" 配置节)services.AddBitzsoftAsignElectronicSignature(configuration);
// 方式二:委托配置services.AddBitzsoftAsignElectronicSignature(options =>{ options.AppId = "your-app-id"; options.PrivateKey = File.ReadAllText("private_key.pem"); options.PublicKey = File.ReadAllText("public_key.pem"); options.BaseUrl = "https://oapi.asign.cn";});使用示例
var createResult = await provider.CreateContractAsync(new SimpleContractRequest{ Title = "采购订单", FileName = "order.pdf", FileData = await File.ReadAllBytesAsync("order.pdf"), SignerName = "孙八", SignerPhone = "13400000000"});
var contractId = createResult.Data!;var detail = await provider.GetContractDetailAsync(contractId);var signUrl = await provider.GetSigningUrlAsync(contractId, "signer-id");鉴权机制
- 请求签名:使用开发者 RSA 私钥对请求体做 SHA256WithRSA 签名。
- 回调验签:使用平台 RSA 公钥验证回调签名。
已知限制
私钥和公钥必须为 PKCS#8 PEM 格式。统一接口覆盖极简场景,复杂业务通过 partial class 扩展。