From 046a5b945607052b5956208ef112f63b60d15de5 Mon Sep 17 00:00:00 2001 From: James Fan Date: Wed, 3 Jun 2020 17:57:50 +0800 Subject: [PATCH 1/7] =?UTF-8?q?feature:=20=E6=8F=90=E4=BE=9B=20Json=20?= =?UTF-8?q?=E5=B7=A5=E5=85=B7=E7=B1=BB=EF=BC=8C=E6=96=B9=E4=BE=BF=E6=B5=8B?= =?UTF-8?q?=E8=AF=95=E5=BA=94=E7=94=A8=E8=BE=93=E5=87=BA=E4=B8=8E=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E6=A0=BC=E5=BC=8F=E4=B8=80=E8=87=B4=E7=9A=84=20JSON?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sdk/Http/JsonContent.cs | 24 +++-------------------- Sdk/Properties/AssemblyInfo.cs | 6 +++--- Sdk/Sdk.csproj | 1 + Sdk/Util/Json.cs | 36 ++++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 24 deletions(-) create mode 100644 Sdk/Util/Json.cs diff --git a/Sdk/Http/JsonContent.cs b/Sdk/Http/JsonContent.cs index 28253da..ddb15d6 100644 --- a/Sdk/Http/JsonContent.cs +++ b/Sdk/Http/JsonContent.cs @@ -1,8 +1,6 @@ -using Newtonsoft.Json; -using Newtonsoft.Json.Converters; -using Newtonsoft.Json.Serialization; -using System.Net.Http; +using System.Net.Http; using System.Text; +using Signit.Sdk.Util; namespace Signit.Sdk.Http { @@ -10,22 +8,6 @@ namespace Signit.Sdk.Http { public JsonContent(object model) : base(ToJson(model), Encoding.UTF8, "application/json") { } - private static readonly JsonSerializerSettings defaultJsonSettings = CreateDefaultJsonSettings(); - - private static JsonSerializerSettings CreateDefaultJsonSettings() - { - var settings = new JsonSerializerSettings - { - ContractResolver = new CamelCasePropertyNamesContractResolver(), - }; - - settings.Converters.Add(new StringEnumConverter()); - return settings; - } - - private static string ToJson(object model, JsonSerializerSettings settings = null) - { - return JsonConvert.SerializeObject(model, settings ?? defaultJsonSettings); - } + private static string ToJson(object model) => model.ToJson(); } } diff --git a/Sdk/Properties/AssemblyInfo.cs b/Sdk/Properties/AssemblyInfo.cs index 4a7bf64..82825e6 100644 --- a/Sdk/Properties/AssemblyInfo.cs +++ b/Sdk/Properties/AssemblyInfo.cs @@ -10,7 +10,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("SignIt")] [assembly: AssemblyProduct("Sdk")] -[assembly: AssemblyCopyright("Copyright © SignIt 2019")] +[assembly: AssemblyCopyright("Copyright © SignIt 2020")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: AssemblyVersion("1.0.1.0")] +[assembly: AssemblyFileVersion("1.0.1.0")] diff --git a/Sdk/Sdk.csproj b/Sdk/Sdk.csproj index 6417192..4c5a073 100644 --- a/Sdk/Sdk.csproj +++ b/Sdk/Sdk.csproj @@ -161,6 +161,7 @@ + diff --git a/Sdk/Util/Json.cs b/Sdk/Util/Json.cs new file mode 100644 index 0000000..ba602e0 --- /dev/null +++ b/Sdk/Util/Json.cs @@ -0,0 +1,36 @@ +using System; +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Serialization; + +namespace Signit.Sdk.Util +{ + public static class Json + { + private static readonly JsonSerializerSettings defaultJsonSettings = CreateDefaultJsonSettings(); + + private static JsonSerializerSettings CreateDefaultJsonSettings() + { + var settings = new JsonSerializerSettings + { + ContractResolver = new CamelCasePropertyNamesContractResolver(), + }; + + settings.Converters.Add(new StringEnumConverter()); + return settings; + } + + public static string ToJson(this object model, JsonSerializerSettings settings = null) + { + return JsonConvert.SerializeObject(model, settings ?? defaultJsonSettings); + } + + public static string ToJson(this object model, Action configure) + { + if (configure == null) { return ToJson(model); } + var settings = CreateDefaultJsonSettings(); + configure(settings); + return ToJson(model, settings); + } + } +} -- Gitee From a8424f4d973ebf09b0f614dd8fc4457393cf8223 Mon Sep 17 00:00:00 2001 From: James Fan Date: Fri, 5 Jun 2020 11:40:38 +0800 Subject: [PATCH 2/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sdk/.editorconfig | 7 ++++++ Sdk/HISTORY.md | 18 +++++++++++++++ Sdk/Types/FormType.cs | 45 +++++++++++++++++-------------------- Sdk/Types/IdCardType.cs | 45 +++++++++++++++++++++++-------------- Sdk/Types/PersonAuthType.cs | 32 ++++++++++++++++++-------- 5 files changed, 97 insertions(+), 50 deletions(-) create mode 100644 Sdk/.editorconfig create mode 100644 Sdk/HISTORY.md diff --git a/Sdk/.editorconfig b/Sdk/.editorconfig new file mode 100644 index 0000000..6e928bc --- /dev/null +++ b/Sdk/.editorconfig @@ -0,0 +1,7 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 4 +end_of_line = lf diff --git a/Sdk/HISTORY.md b/Sdk/HISTORY.md new file mode 100644 index 0000000..7f0a1ce --- /dev/null +++ b/Sdk/HISTORY.md @@ -0,0 +1,18 @@ +# 升级历史简要记录 + +> Ref Repository (Java) +> +> - https://github.com/signit-wesign/java-sdk.git +> - https://github.com/signit-wesign/java-sdk-sample + +## v1.0.1 2020-06-05 + +> *Ref: [java-sdk]: `575a3bc7fcb5e2b817ea1a9fe1e1899d30fe89d2`* + +### 已知问题 + +- 没有 `cn.signit.sdk.type.WebhookEventType` + +## v1.0.0 2019-05-26 + +> *Ref: java-sdk: `c06f5d4156657198d61f8ba7f4816cdf848fa8d6`* \ No newline at end of file diff --git a/Sdk/Types/FormType.cs b/Sdk/Types/FormType.cs index 074c598..bfdf00c 100644 --- a/Sdk/Types/FormType.cs +++ b/Sdk/Types/FormType.cs @@ -1,33 +1,30 @@ namespace Signit.Sdk.Types { - /** - * - * 表单类型枚举. - * - * @since 2.0.0 - */ + /// + /// 表单类型枚举. + /// @since v1.0 + /// public enum FormType { - - /** - * 印章签名表单域 - */ + /// 印章签名表单域 SEAL_SIGN, - /** - * 手写签名表单域 - */ + + /// 手写签名表单域 WRITE_SIGN, - /** - * 文本表单域 - */ + + /// 文本表单域 TEXT, - /** - * 骑缝章表单域 - */ + + /// 骑缝章表单域 MULTI_CHECK_MARK, - /** - * 二维码骑缝章表单域 - */ - MULTI_QRCODE_MARK + + /// 二维码骑缝章表单域 + MULTI_QRCODE_MARK, + + /// + /// 时间戳表单 + /// @since v1.1 + /// + DATE, } -} \ No newline at end of file +} diff --git a/Sdk/Types/IdCardType.cs b/Sdk/Types/IdCardType.cs index ae9990f..a81690e 100644 --- a/Sdk/Types/IdCardType.cs +++ b/Sdk/Types/IdCardType.cs @@ -1,25 +1,36 @@ namespace Signit.Sdk.Types { - /** - * - * 身份证类型枚举. - * - * @since 1.0.2 - */ + /// + /// 身份证类型枚举 + /// @since 1.0 + /// public enum IdCardType { - /** - * 二代身份证 - */ + /// 二代身份证 SECOND_GENERATION_IDCARD, - /** - * 临时身份证 - */ + + /// 临时身份证 TEMPORARY_IDCARD, - /** - * 护照 - */ - PASSPORT + /// 护照 + PASSPORT, + + /// + /// 香港身份证 + /// @since v1.1 + /// + HONG_KONG_IDCARD, + + /// + /// 澳门身份证 + /// @since v1.1 + /// + MA_CAO_IDCARD, + + /// + /// 台湾身份证 + /// @since v1.1 + /// + TAI_WAN_IDCARD, } -} \ No newline at end of file +} diff --git a/Sdk/Types/PersonAuthType.cs b/Sdk/Types/PersonAuthType.cs index aa78860..75eb2aa 100644 --- a/Sdk/Types/PersonAuthType.cs +++ b/Sdk/Types/PersonAuthType.cs @@ -1,16 +1,30 @@ namespace Signit.Sdk.Types { - /** - * 个人实名认证方式 - * - * @since 2.1.0 - */ + /// + /// 个人实名认证方式 + /// @since v1.0 + /// public enum PersonAuthType { - /** - * 三网手机号三元素实名认证方式 - */ - PHONE_AUTH + /// 三网手机号三元素实名认证方式 + PHONE_AUTH, + /// + /// 人脸识别认证方式 + /// @since v1.1 + /// + FACE_AUTH, + + /// + /// 支付宝芝麻认证方式 + /// @since v1.1 + /// + ZM_AUTH, + + /// + /// 三网手机号三元素实名认证+人脸识别认证,双重认证方式 + /// @since v1.1 + /// + PHONE_FACE_AUTH, } } \ No newline at end of file -- Gitee From 5bedecf4ecc9c02d3996093506284228cca78079 Mon Sep 17 00:00:00 2001 From: James Fan Date: Fri, 5 Jun 2020 14:13:03 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sdk/.editorconfig | 2 + Sdk/Entity/BaseFileData.cs | 14 +- Sdk/Entity/FileData.cs | 20 ++- Sdk/Entity/InitialValue.cs | 95 ++++++----- Sdk/Entity/KeywordPosition.cs | 5 +- Sdk/Entity/Receiver.cs | 155 +++++++++++------- .../Enterprise/EnterpriseVerifyRequest.cs | 20 ++- Sdk/Http/Envelope/EnvelopeBasicInfo.cs | 62 ++++--- Sdk/Http/Webhook/EnvelopeStarted.cs | 26 ++- Sdk/Http/Webhook/RawDataBasicInfo.cs | 63 +++++-- Sdk/Http/Webhook/WebhookDataBase.cs | 4 +- Sdk/Sdk.csproj | 2 + 12 files changed, 319 insertions(+), 149 deletions(-) diff --git a/Sdk/.editorconfig b/Sdk/.editorconfig index 6e928bc..3dda769 100644 --- a/Sdk/.editorconfig +++ b/Sdk/.editorconfig @@ -5,3 +5,5 @@ charset = utf-8 indent_style = space indent_size = 4 end_of_line = lf +trim_trailing_whitespace = true + diff --git a/Sdk/Entity/BaseFileData.cs b/Sdk/Entity/BaseFileData.cs index 47f9b24..9e59168 100644 --- a/Sdk/Entity/BaseFileData.cs +++ b/Sdk/Entity/BaseFileData.cs @@ -1,8 +1,20 @@ -namespace Signit.Sdk.Entity +namespace Signit.Sdk.Entity { public class BaseFileData { + /// + /// 文件数据 URL 地址 + /// public string Url { get; set; } + + /// + /// 采用 BASE64 编码的文件内容,支持最大约 10MB 文件数据 + /// public string Base64 { get; set; } + + /// + /// 文件名 + /// + public string Name { get; set; } } } diff --git a/Sdk/Entity/FileData.cs b/Sdk/Entity/FileData.cs index ea2c98a..b0814a3 100644 --- a/Sdk/Entity/FileData.cs +++ b/Sdk/Entity/FileData.cs @@ -1,13 +1,31 @@ -namespace Signit.Sdk.Entity +using System; + +namespace Signit.Sdk.Entity { public class FileData { + /// + /// 待签名文件(html/pdf/doc/docx/xls/xlsx/ppt/pptx)的URL地址。 + /// 注意:如果 Url 和 Base64 同时存在,优先使用 Base64 + /// public string Url { get; set; } + + /// + /// 待签名文件(html/pdf/doc/docx/xls/xlsx/ppt/pptx)数据的 BASE64 编码, + /// 支持最大约 10MB 的文件数据。 + /// 注意:如果 Url 和 Base64 同时存在,优先使用 Base64 + /// public string Base64 { get; set; } + + /// + /// 待签名的文件是否转换成单页的形式,否则,默认使用A4尺寸自动进行分页。 + /// 注:待签名文件为html时该值有效,且此单页最大支持的高度为5000mm + /// public bool EnableSinglePage { get; set; } public FileData() { } + [Obsolete("将在 v1.2 中删除此构造,请使用对象初始化语法代替")] public FileData(string url) { Url = url; diff --git a/Sdk/Entity/InitialValue.cs b/Sdk/Entity/InitialValue.cs index e8bf1cc..4a7bcb6 100644 --- a/Sdk/Entity/InitialValue.cs +++ b/Sdk/Entity/InitialValue.cs @@ -1,73 +1,80 @@ -using Signit.Sdk.Types; +using Signit.Sdk.Types; namespace Signit.Sdk.Entity { - /** - * 签名初始化数据。包含印章数据、手写数据、证书数据、证书签名证书秘钥访问口令、证书类型、 渲染模式、签名地理位置、联系方式、签名是否锁定、签名原因。 - * 印章数据、手写数据仅一个不为空的有效。 - */ + /// + /// 签名初始化数据。包含印章数据、手写数据、证书数据、证书签名证书秘钥访问口令、证书类型、 + /// 渲染模式、签名地理位置、联系方式、签名是否锁定、签名原因。 + /// 印章数据、手写数据仅一个不为空的有效。 + /// public class InitialValue { - /** - * 印章数据. - */ + /// + /// 印章数据. + /// public SealData SealData { get; set; } - /** - * 手写签名数据. - */ + /// + /// 手写签名数据. + /// public WriteData WriteData { get; set; } - /** - * 证书数据. - */ + /// + /// 证书数据. + /// public CertData CertData { get; set; } - /** - * 证书签名证书密钥访问口令. - */ + /// + /// 证书签名证书密钥访问口令. + /// public string CertPassin { get; set; } - /** - * 证书类型. - * 对应枚举:CertType - */ + /// + /// 证书类型. + /// 对应枚举:CertType + /// public CertType CertType { get; set; } - /** - * 渲染模式. 对应枚举: - * 对应枚举:RenderMode - */ + /// + /// 渲染模式. 对应枚举: + /// 对应枚举:RenderMode + /// public RenderMode RenderingMode { get; set; } = RenderMode.GRAPHIC; - /** - * 签名地理位置. - */ + /// + /// 签名地理位置. + /// public string Location { get; set; } - /** - * 联系方式. - */ + /// + /// 联系方式. + /// public string Contact { get; set; } - /** - * 签名是否锁定. - */ + /// + /// 签名是否锁定. + /// public bool Locked { get; set; } - /** - * 签名原因. - */ + /// + /// 签名原因. + /// public string Reason { get; set; } - /** - * 文本框文本内容 - */ + /// + /// 文本框文本内容 + /// public string TextContent { get; set; } - /** - * 二维码内容字符串. - */ + /// + /// 二维码内容字符串. + /// public string QrcodeContent { get; set; } + + /// + /// 时间表单的时间戳(单位:毫秒(ms)). + /// @since v1.1 + /// + public long Timestamp { get; set; } } -} \ No newline at end of file +} diff --git a/Sdk/Entity/KeywordPosition.cs b/Sdk/Entity/KeywordPosition.cs index d928c7a..f338530 100644 --- a/Sdk/Entity/KeywordPosition.cs +++ b/Sdk/Entity/KeywordPosition.cs @@ -1,4 +1,4 @@ -using Signit.Sdk.Types; +using Signit.Sdk.Types; namespace Signit.Sdk.Entity { @@ -15,6 +15,9 @@ namespace Signit.Sdk.Entity public float? Scale { get; set; } public string Pages { get; set; } + public string ReplaceTextAfterLocate { get; set; } + public bool DeleteTextAfterLocate { get; set; } + /// /// x 方向的便移量 正是往右,负是往左,坐标缩放前进行最后的微调参数 /// diff --git a/Sdk/Entity/Receiver.cs b/Sdk/Entity/Receiver.cs index 65fcbc5..c311e8b 100644 --- a/Sdk/Entity/Receiver.cs +++ b/Sdk/Entity/Receiver.cs @@ -1,85 +1,130 @@ -using Signit.Sdk.Types; using System.Collections.Generic; +using Signit.Sdk.Types; namespace Signit.Sdk.Entity { - /** - * 接收方信息。 包含接收方名字、接收方联系方式、安全等级、接收方类型、 接收方是否必须预分配表单域、设置接收方私人信息、接收方处理顺序、 - * 签署认证等级、接收方所在企业名称、信封自定义元数据信息、预设表单信息. - */ + /// + /// 接收方信息。 包含接收方名字、接收方联系方式、安全等级、接收方类型、 + /// 接收方是否必须预分配表单域、设置接收方私人信息、接收方处理顺序、 + /// 签署认证等级、接收方所在企业名称、信封自定义元数据信息、预设表单信息. + /// public class Receiver { - /** - * 接收方名字. - */ + /// + /// 接收方名字. + /// public string Name { get; set; } - /** - * 接收方联系方式. - */ + + /// + /// 接收方联系方式. + /// public Contact Contact { get; set; } - /** - * 安全等级. - *

- * 对应枚举:SecureLevel - * - */ + + /// + /// 安全等级. + ///

+ /// 对应枚举:SecureLevel + /// + ///
public SecureLevel SecureLevel { get; set; } - /** - * 接收方类型。 接收方类型:ReceiverType - * - */ + + /// + /// 接收方类型。 接收方类型:ReceiverType + /// + /// public ReceiverType Type { get; set; } - /** - * 接收方是否必须预分配表单域. - */ + + /// + /// 接收方是否必须预分配表单域. + /// public bool NeedForm { get; set; } - /** - * 设置接收方私人信息. - */ + + /// + /// 设置接收方私人信息. + /// public string AssignedMessage { get; set; } - /** - * 接收方处理顺序. - */ + + /// + /// 接收方处理顺序. + /// public int AssignedSequence { get; set; } - /** - * 接收方所在企业名称. - */ + /// + /// 接收方所在企业名称. + /// public string EnterpriseName { get; set; } - /** - * 信封自定义元数据信息. - */ + + /// + /// 信封自定义元数据信息. + /// public string Metadata { get; set; } - /** - * 预设表单信息. - */ + + /// + /// 预设表单信息. + /// public IList PresetForms { get; set; } public EnvelopeRoleType RoleType { get; set; } - /** - * 流程完成后删除当前参与者的信封。 默认:false - * - */ + /// + /// 流程完成后删除当前参与者的信封。 默认:false + /// public bool DeleteCompletedEnvelope { get; set; } - /** - * 参与者处理表单各种模式的枚举 - */ + + /// + /// 参与者处理表单各种模式的枚举 + /// public ParticipantHandleMode HandleMode { get; set; } public IList SelectedAuthTypes { get; set; } - /** - * 启用嵌入模式,调用方系统中直接嵌入易企签WEB流程时设置为true,签署流程消息只会通过webhook事件消息方式通知,用户在易企签平台设置的短信/邮件等消息将自动屏蔽。非必填,默认值:false. - * @since 2.1.0 - */ + /// + /// 启用嵌入模式,调用方系统中直接嵌入易企签WEB流程时设置为true, + /// 签署流程消息只会通过webhook事件消息方式通知,用户在易企签平台设置的短信/邮件等消息将自动屏蔽。 + /// 非必填,默认值:false. + /// public bool EnableEmbeddedMode { get; set; } - /** - * 签署接收方用户在调用方系统的唯一标识.
- * enableEmbeddedMode为false时,非必填;当enableEmbeddedMode为true时,则必填。默认:null - * @since 2.1.0 - */ + /// + /// 签署接收方用户在调用方系统的唯一标识. + /// enableEmbeddedMode为false时,非必填;当enableEmbeddedMode为true时,则必填。默认:null + /// public string ClientId { get; set; } + + /// + /// 参与者唯一标识. + /// @since v1.1 + /// + public string ParticipantWsid { get; set; } + + /// + /// 是否是外部. + /// @since v1.1 + /// + public bool IsExternal { get; set; } + + /// + /// 是否是委托外部. + /// @since v1.1 + /// + public bool IsEntrust { get; set; } + + /// + /// 是否允许撤销. + /// @since v1.1 + /// + public bool AllowRevoke { get; set; } + + /// + /// 是否区分顺序. + /// @since v1.1 + /// + public bool SequenceSensitive { get; set; } + + /// + /// 用户ID. + /// @since v1.1 + /// + public string UserWsid { get; set; } } } diff --git a/Sdk/Http/Enterprise/EnterpriseVerifyRequest.cs b/Sdk/Http/Enterprise/EnterpriseVerifyRequest.cs index 0745b3e..8b1fb47 100644 --- a/Sdk/Http/Enterprise/EnterpriseVerifyRequest.cs +++ b/Sdk/Http/Enterprise/EnterpriseVerifyRequest.cs @@ -1,6 +1,6 @@ -using Signit.Sdk.Entity; -using Signit.Sdk.Types; using System.Collections.Generic; +using Signit.Sdk.Entity; +using Signit.Sdk.Types; namespace Signit.Sdk.Http.Enterprise { @@ -54,6 +54,12 @@ namespace Signit.Sdk.Http.Enterprise /// public EnterpriseAuthType AuthType { get; set; } + /// + /// 设置经办人或者法人的个人实名认证方式,默认为:PHONE_AUTH + /// @since v1.1 + /// + public List AuthModes { get; set; } + /// /// 企业对公银行信息. /// @@ -63,5 +69,13 @@ namespace Signit.Sdk.Http.Enterprise /// 额外认证所需照片信息数组. /// public IList ExtraAuthImages { get; set; } + + /// + /// 启用嵌入模式,调用方系统中直接嵌入易企签WEB流程时设置为true, + /// 签署流程消息只会通过webhook事件消息方式通知,用户在易企签平台设置的短信/邮件等消息将自动屏蔽。 + /// 非必填,默认值:false. + /// @since v1.1 + /// + public bool EnableEmbeddedMode { get; set; } } -} \ No newline at end of file +} diff --git a/Sdk/Http/Envelope/EnvelopeBasicInfo.cs b/Sdk/Http/Envelope/EnvelopeBasicInfo.cs index 4ee4af0..9e27e5d 100644 --- a/Sdk/Http/Envelope/EnvelopeBasicInfo.cs +++ b/Sdk/Http/Envelope/EnvelopeBasicInfo.cs @@ -1,37 +1,55 @@ -using Signit.Sdk.Types; +using Signit.Sdk.Types; namespace Signit.Sdk.Http.Envelope { - /** - * 信封基本信息. 包含信封标题、信封主题、信封类型、信封认证等级、自定义元数据信息. - */ + /// + /// 信封基本信息. 包含信封标题、信封主题、信封类型、信封认证等级、自定义元数据信息. + /// public class EnvelopeBasicInfo { - /** - * 信封标题. - */ + /// + /// 信封标题. + /// public string Title { get; set; } - /** - * 信封主题. - */ + /// + /// 信封主题. + /// public string Subject { get; set; } - /** - * 信封类型. - * 对应枚举:EnvelopeType - */ + /// + /// 信封类型. + /// 对应枚举:EnvelopeType + /// public EnvelopeType Type { get; set; } - /** - * 信封认证等级. - * 对应枚举:AuthLevel - */ + /// + /// 信封认证等级. + /// 对应枚举:AuthLevel + /// public AuthLevel AuthLevel { get; set; } - /** - * 自定义元数据信息. - */ + /// + /// 自定义元数据信息. + /// public string Metadata { get; set; } + + /// + /// 时间单位:天;如果 `当前时间 > 信封发起时间 + 逾期时间` 后,信封将不可签署 + /// @since v1.1 + /// + public int Expire { get; set; } + + /// + /// 信封ID. + /// @since v1.1 + /// + public string EnvelopeWsid { get; set; } + + /// + /// 模式. + /// @since v1.1 + /// + public string Mode { get; set; } } -} \ No newline at end of file +} diff --git a/Sdk/Http/Webhook/EnvelopeStarted.cs b/Sdk/Http/Webhook/EnvelopeStarted.cs index 532a281..5d8215b 100644 --- a/Sdk/Http/Webhook/EnvelopeStarted.cs +++ b/Sdk/Http/Webhook/EnvelopeStarted.cs @@ -1,28 +1,40 @@ -using System.Collections.Generic; +using System.Collections.Generic; namespace Signit.Sdk.Http.Webhook { public class EnvelopeStarted : AbstractWebhookResponse { - // 执行的动作对应的URL地址 + /// + /// 执行的动作对应的URL地址 + /// public string ActionUrl { get; set; } - // 流程允许在易企签WEB执行的动作 + /// + /// 流程允许在易企签WEB执行的动作 + /// public IList Actions { get; set; } - // 接收方对应的在易企签的帐号 + /// + /// 接收方对应的在易企签的帐号 + /// public string Account { get; set; } - // 信封基本信息 + /// + /// 信封基本信息 + /// public RawDataBasicInfo BasicEnvelope { get; set; } public Sender SenderParticipant { get; set; } public Receiver ReceiverParticipant { get; set; } - // 已完成的签署数据 + /// + /// 已完成的签署数据 + /// public SignData SignData { get; set; } - // 客户端回调地址 + /// + /// 客户端回调地址 + /// public string ReturnUrl { get; set; } } } diff --git a/Sdk/Http/Webhook/RawDataBasicInfo.cs b/Sdk/Http/Webhook/RawDataBasicInfo.cs index a68643c..6df9d8b 100644 --- a/Sdk/Http/Webhook/RawDataBasicInfo.cs +++ b/Sdk/Http/Webhook/RawDataBasicInfo.cs @@ -1,31 +1,68 @@ -namespace Signit.Sdk.Http.Webhook +namespace Signit.Sdk.Http.Webhook { - /** - * 信封基本信息. - * - * @since 2.0.0 - */ + /// + /// 信封基本信息. + /// public class RawDataBasicInfo { - // 信封全局唯一ID + /// + /// 信封全局唯一ID + /// public string Wsid { get; set; } - // 信封状态 + /// + /// 信封发起者ID + /// + public string SenderWsid { get; set; } + + /// + /// 信封发起者名字 + /// + public string SenderName { get; set; } + + /// + /// 信封状态 + /// public string Status { get; set; } - // 信封创建时间 + /// + /// 信封类型 + /// + public string Type { get; set; } + + /// + /// 信封标题 + /// + public string Title { get; set; } + + /// + /// 信封主题 + /// + public string Subject { get; set; } + + /// + /// 信封创建时间 + /// public long? CreatedDatetime { get; set; } - // 信封过期时间 + /// + /// 信封过期时间 + /// public long? ExpireDatetime { get; set; } - // 信封最新状态时间 + /// + /// 信封最新状态时间 + /// public long? StatusDatetime { get; set; } - // 信封最新状态原因 + /// + /// 信封最新状态原因 + /// public string StatusReason { get; set; } - // 当前签署方的序号 + /// + /// 当前签署方的序号 + /// public int? CurrentSequence { get; set; } } } diff --git a/Sdk/Http/Webhook/WebhookDataBase.cs b/Sdk/Http/Webhook/WebhookDataBase.cs index e936384..758b81e 100644 --- a/Sdk/Http/Webhook/WebhookDataBase.cs +++ b/Sdk/Http/Webhook/WebhookDataBase.cs @@ -1,11 +1,11 @@ -namespace Signit.Sdk.Http.Webhook +namespace Signit.Sdk.Http.Webhook { public class WebhookDataBase { public string Event { get; set; } public SourceType Source { get; set; } public TargetType Target { get; set; } - public bool NeedCallback { get; set; } + public bool NeedCallBack { get; set; } public class SourceType { diff --git a/Sdk/Sdk.csproj b/Sdk/Sdk.csproj index 4c5a073..24f3d58 100644 --- a/Sdk/Sdk.csproj +++ b/Sdk/Sdk.csproj @@ -168,7 +168,9 @@ + + -- Gitee From d4400f9f17ee654ec8a31a689b8ad9bf5bad1dca Mon Sep 17 00:00:00 2001 From: James Fan Date: Fri, 5 Jun 2020 14:51:37 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E4=BD=BF=E7=94=A8=20ThreadLocal=20?= =?UTF-8?q?=E5=B0=81=E8=A3=85=E9=83=A8=E5=88=86=E6=88=90=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sdk/SignitClient.cs | 49 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) diff --git a/Sdk/SignitClient.cs b/Sdk/SignitClient.cs index 02e1cf2..1ea33bf 100644 --- a/Sdk/SignitClient.cs +++ b/Sdk/SignitClient.cs @@ -1,14 +1,41 @@ -using Newtonsoft.Json; +/** + * The MIT License (MIT) + * + * Copyright (C) 2018 signit.cn + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +using System.Collections.Specialized; +using System.Threading; +using Newtonsoft.Json; using Signit.Sdk.Http; using Signit.Sdk.Http.Webhook; using Signit.Sdk.Types; using Signit.Sdk.Util; -using System.Collections.Specialized; -using System.Diagnostics; using Viyi.Util; namespace Signit.Sdk { + /// + /// 易企签快捷签署 Java SDK的基本操作类. + /// public class SignitClient { public static WebhookData ParseWebhookData(string raw) @@ -31,8 +58,20 @@ namespace Signit.Sdk //private const Pattern RIGHT_QUOTATION = Pattern.compile("\\}\""); //private const Pattern BACKLASH_QUOTATION = Pattern.compile("\\\\\""); - public string BaseUrl { get; set; } - public string OAuthTokenUrl { get; set; } + private ThreadLocal baseUrl = new ThreadLocal(); + private ThreadLocal oAuthTokenUrl = new ThreadLocal(); + + public string BaseUrl + { + get => baseUrl.Value; + set => baseUrl.Value = value; + } + + public string OAuthTokenUrl + { + get => oAuthTokenUrl.Value; + set => oAuthTokenUrl.Value = value; + } public SignitClient(ApiOptions options = null) : this(null, null, options) { } -- Gitee From 7d0cc2c3c98dfc974c9a5855962177c39308e87a Mon Sep 17 00:00:00 2001 From: James Fan Date: Fri, 5 Jun 2020 17:13:18 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E7=BB=86=E8=8A=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Enterprise/EnterpriseVerifyRequest.cs | 2 +- Sdk/Http/Envelope/EnvelopeBasicInfo.cs | 2 +- Sdk/Http/HttpClientSync.Response.cs | 31 +++++++++++++++++-- Sdk/Http/Webhook/WebhookDataBase.cs | 2 +- Sdk/Sdk.csproj | 1 - Sdk/SignitClient.cs | 7 +++-- Sdk/Types/NamingStyle.cs | 31 ------------------- Sdk/Types/ParticipantHandleMode.cs | 31 +++++++++---------- Sdk/Util/Json.cs | 14 ++++++++- 9 files changed, 64 insertions(+), 57 deletions(-) delete mode 100644 Sdk/Types/NamingStyle.cs diff --git a/Sdk/Http/Enterprise/EnterpriseVerifyRequest.cs b/Sdk/Http/Enterprise/EnterpriseVerifyRequest.cs index 8b1fb47..915eb7f 100644 --- a/Sdk/Http/Enterprise/EnterpriseVerifyRequest.cs +++ b/Sdk/Http/Enterprise/EnterpriseVerifyRequest.cs @@ -76,6 +76,6 @@ namespace Signit.Sdk.Http.Enterprise /// 非必填,默认值:false. /// @since v1.1 /// - public bool EnableEmbeddedMode { get; set; } + public bool? EnableEmbeddedMode { get; set; } } } diff --git a/Sdk/Http/Envelope/EnvelopeBasicInfo.cs b/Sdk/Http/Envelope/EnvelopeBasicInfo.cs index 9e27e5d..c685ac0 100644 --- a/Sdk/Http/Envelope/EnvelopeBasicInfo.cs +++ b/Sdk/Http/Envelope/EnvelopeBasicInfo.cs @@ -38,7 +38,7 @@ namespace Signit.Sdk.Http.Envelope /// 时间单位:天;如果 `当前时间 > 信封发起时间 + 逾期时间` 后,信封将不可签署 /// @since v1.1 /// - public int Expire { get; set; } + public int? Expire { get; set; } /// /// 信封ID. diff --git a/Sdk/Http/HttpClientSync.Response.cs b/Sdk/Http/HttpClientSync.Response.cs index 546d403..9ed173d 100644 --- a/Sdk/Http/HttpClientSync.Response.cs +++ b/Sdk/Http/HttpClientSync.Response.cs @@ -1,5 +1,6 @@ -using Newtonsoft.Json; using System.Net; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; namespace Signit.Sdk.Http { @@ -15,7 +16,33 @@ namespace Signit.Sdk.Http { return string.IsNullOrWhiteSpace(Content) ? default(T) - : JsonConvert.DeserializeObject(Content); + : FromJson(Content); + } + + private T FromJson(string json) + { + try + { + var jo = JsonConvert.DeserializeObject(json) as JObject; + + if (jo.ContainsKey("error")) + { + throw new SignitException(jo + .GetValue("error") + .Value()); + } + + if (jo.ContainsKey("errorWsid")) + { + throw new SignitException(json); + } + + return jo.ToObject(); + } + catch (JsonSerializationException jse) + { + throw new SignitException(jse); + } } } } diff --git a/Sdk/Http/Webhook/WebhookDataBase.cs b/Sdk/Http/Webhook/WebhookDataBase.cs index 758b81e..ab05580 100644 --- a/Sdk/Http/Webhook/WebhookDataBase.cs +++ b/Sdk/Http/Webhook/WebhookDataBase.cs @@ -5,7 +5,7 @@ namespace Signit.Sdk.Http.Webhook public string Event { get; set; } public SourceType Source { get; set; } public TargetType Target { get; set; } - public bool NeedCallBack { get; set; } + public bool? NeedCallBack { get; set; } public class SourceType { diff --git a/Sdk/Sdk.csproj b/Sdk/Sdk.csproj index 24f3d58..269d1c7 100644 --- a/Sdk/Sdk.csproj +++ b/Sdk/Sdk.csproj @@ -153,7 +153,6 @@ - diff --git a/Sdk/SignitClient.cs b/Sdk/SignitClient.cs index 1ea33bf..a9690fc 100644 --- a/Sdk/SignitClient.cs +++ b/Sdk/SignitClient.cs @@ -33,11 +33,15 @@ using Viyi.Util; namespace Signit.Sdk { + // TODO 还没有添加重试机制 + /// /// 易企签快捷签署 Java SDK的基本操作类. /// public class SignitClient { + private const int MAX_COUNT = 3; + public static WebhookData ParseWebhookData(string raw) { return JsonConvert.DeserializeObject(raw); @@ -52,7 +56,6 @@ namespace Signit.Sdk private readonly ApiOptions options; //private HttpClientWrapper httpClient; - //private readonly int MAX_COUNT = 3; //private readonly AtomicInteger count = new AtomicInteger(MAX_COUNT); //private const Pattern LEFT_QUOTATION = Pattern.compile("\"\\{"); //private const Pattern RIGHT_QUOTATION = Pattern.compile("\\}\""); @@ -183,7 +186,7 @@ namespace Signit.Sdk .Post(BaseUrl, request, headers); var result = response.GetObject(); - if (!result.IsSuccess) + if (result?.IsSuccess != true) { result.Error = response.GetObject(); } diff --git a/Sdk/Types/NamingStyle.cs b/Sdk/Types/NamingStyle.cs deleted file mode 100644 index 23138ce..0000000 --- a/Sdk/Types/NamingStyle.cs +++ /dev/null @@ -1,31 +0,0 @@ -namespace Signit.Sdk.Types -{ - /** - * 命名风格的枚举. - * - * @author zhd - * @since 1.0.0 - */ - public enum NamingStyle - { - /** - * 小驼峰命名风格.如:nameStyle - */ - CAMEL, - - /** - * 字母间均大写命名风格.如:NameStyle - */ - PASCAL, - - /** - * 字母间均以下划线分隔命名风格(unix命名风格).如:name_style - */ - SNAKE, - - /** - * 字母间均以连词符分隔命名风格.如:name-style - */ - KEBAB - } -} diff --git a/Sdk/Types/ParticipantHandleMode.cs b/Sdk/Types/ParticipantHandleMode.cs index b73840c..ce36477 100644 --- a/Sdk/Types/ParticipantHandleMode.cs +++ b/Sdk/Types/ParticipantHandleMode.cs @@ -1,25 +1,22 @@ namespace Signit.Sdk.Types { - /** - * 参与者处理表单的模式枚举 - * - * @since 2.0.0 - */ + /// + /// 参与者处理表单的模式枚举 + /// public enum ParticipantHandleMode { - /** - * 正常处理模式(默认). - * - * @since 2.0.0 - */ + /// + /// 正常处理模式(默认). + /// NORMAL, - /** - * 静默处理模式. - * 该接受方不用执行签署流程,自动完成签署。接收方设置为静默签署条件:①接收方类型为签署者SIGNER;②接收方和发起方为同一企业下的同一人;③该接收方有预设表单,且该接收方的预设表单均设置了初始值(手写签名表单除外)。 - * - * @since 2.0.0 - */ - SILENCE + /// + /// 静默处理模式。 + /// 该接受方不用执行签署流程,自动完成签署。接收方设置为静默签署条件: + /// - ① 接收方类型为签署者SIGNER; + /// - ② 接收方和发起方为同一企业下的同一人; + /// - ③ 该接收方有预设表单,且该接收方的预设表单均设置了初始值(手写签名表单除外)。 + /// + SILENCE, } } \ No newline at end of file diff --git a/Sdk/Util/Json.cs b/Sdk/Util/Json.cs index ba602e0..a629208 100644 --- a/Sdk/Util/Json.cs +++ b/Sdk/Util/Json.cs @@ -1,6 +1,8 @@ -using System; +using System; +using System.IO; using Newtonsoft.Json; using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Linq; using Newtonsoft.Json.Serialization; namespace Signit.Sdk.Util @@ -32,5 +34,15 @@ namespace Signit.Sdk.Util configure(settings); return ToJson(model, settings); } + + public static T FromFile(string filePath) + { + using (var reader = new StreamReader(filePath)) + using (var jsonReader = new JsonTextReader(reader)) + { + var jo = JToken.ReadFrom(jsonReader) as JObject; + return jo.ToObject(); + } + } } } -- Gitee From a1239cb4993137e48b79f8c862f2764826f10b06 Mon Sep 17 00:00:00 2001 From: James Fan Date: Fri, 5 Jun 2020 17:23:03 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sdk/Properties/AssemblyInfo.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Sdk/Properties/AssemblyInfo.cs b/Sdk/Properties/AssemblyInfo.cs index 82825e6..8fca3b9 100644 --- a/Sdk/Properties/AssemblyInfo.cs +++ b/Sdk/Properties/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.1.0")] -[assembly: AssemblyFileVersion("1.0.1.0")] +[assembly: AssemblyVersion("1.0.2.0")] +[assembly: AssemblyFileVersion("1.0.2.0")] -- Gitee From f9653412ed9396380e803c464ec45a3a1d9e2451 Mon Sep 17 00:00:00 2001 From: James Fan Date: Fri, 5 Jun 2020 17:24:16 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=9B=B4=E6=AD=A3=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sdk/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sdk/Properties/AssemblyInfo.cs b/Sdk/Properties/AssemblyInfo.cs index 8fca3b9..7418c03 100644 --- a/Sdk/Properties/AssemblyInfo.cs +++ b/Sdk/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 //通过使用 "*",如下所示: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.2.0")] -[assembly: AssemblyFileVersion("1.0.2.0")] +[assembly: AssemblyVersion("1.1.1.0")] +[assembly: AssemblyFileVersion("1.1.1.0")] -- Gitee