使用新的DocuSign C#Client取消信封

Bla*_* L. 5 c# docusignapi

我试图使用DocuSign C#Client(DocuSign.eSign)的更新版本使现有信封无效.

信封处于已发送状态,尚未完成或无效.

目前我有以下代码:

EnvelopesApi envelopesApi = new EnvelopesApi();

Envelope envelope = envelopesApi.GetEnvelope(accountId, envelopeId);           
envelope.Status = "voided";
envelope.VoidedReason = "This envelope was voided by " + currentUserName;

// create the recipient view (aka signing URL)
var updateSummary = envelopesApi.Update(accountId, envelopeId, envelope);

return updateSummary;
Run Code Online (Sandbox Code Playgroud)

调用此代码时,它会因ApiException和以下ErrorContent而失败:

{
  "errorCode": "INVALID_REQUEST_PARAMETER",
  "message": "The request contained at least one invalid parameter. Value for 'purgeState' must be 'documents_queued' or 'documents_and_metadata_queued'."
}
Run Code Online (Sandbox Code Playgroud)

消息是"请求包含至少一个无效参数.'purgeState'的值必须是'documents_queued'或'documents_and_metadata_queued'",但根据文档,如果状态为"无效",我不需要提供这些参数"我有一个无效的理由.

有没有办法使用DocuSign C#Client取消信封?

Bla*_* L. 8

问题似乎是在加载信封并将其传递给API调用时,envelope.PurgeState设置为"未清除".因此即使我没有明确设置PurgeState,它也认为我试图用无效参数执行清除操作.

我能够通过显式取消设置envelope.PurgeState来解决这个问题:

envelope.Status = "voided";
envelope.VoidedReason = "This envelope was voided by " + currentUserName;
envelope.PurgeState = null;
Run Code Online (Sandbox Code Playgroud)


小智 5

我知道这是一个老问题,但我想补充一点,您不需要调用 API 来获取原始信封对象,只需设置所需的属性并发送 Update 调用即可。

    public EnvelopeUpdateSummary VoidRequest(string envelopeId, string message)
    {
        var envelope = new Envelope()
        {
            Status = "voided",
            VoidedReason = message
        };

        var updateSummary = EnvelopesApi.Update(AccountId, envelopeId, envelope);
        return updateSummary;
    }
Run Code Online (Sandbox Code Playgroud)

您可以查看文档:https : //docs.docusign.com/esign/restapi/Envelopes/Envelopes/update/