问题描述
在我们组织的dmz Web应用程序中,我们代表Signer(我们的客户)生成信封并将其发送给公证人。并且我们正在沙箱环境中通过eSign API尝试在eNotary(InPersonSigner收件人)信封中使用Signature,Seal,DateSigned TABS。但是docusignapi不允许我们创建签名,印章,DateSigned TABS,但仅允许公证TAB。
我们如何通过eSign API将签名,印章,DateSigned TABS用于公证?
更新的代码将引发附加错误“ Notary_Signing_Host_Tabs_Not_Allowed”:
string signerEmail = "signer@domain.com";
string signerName = "Signer";
string notaryEmail = "notary@domain.com";
string notaryName = "Notary";
// Step 1. Create the envelope deFinition
EnvelopeDeFinition envelope = new EnvelopeDeFinition();
envelope.EmailSubject = "Please sign this document";
byte[] buffer = System.IO.File.ReadAllBytes("Execute_and_Notarize.pdf");
Document doc1 = new Document();
String doc1b64 = Convert.ToBase64String(buffer);
doc1.DocumentBase64 = doc1b64;
doc1.Name = "Notarize1_1page"; // can be different from actual file name
doc1.FileExtension = "pdf";
doc1.DocumentId = "1";
// The order in the docs array determines the order in the envelope
envelope.Documents = new List<Document> { doc1 };
Notarize notarize1 = new Notarize
{
AnchorString = "/notary1/",AnchorUnits = "pixels",AnchorXOffset = "10",AnchorYOffset = "10",required = "true"
};
SignHere notarizesignhere1 = new SignHere
{
AnchorString = "/notarysigner1/",AnchorYOffset = "10"
};
SignHere notarizesignhere2 = new SignHere
{
AnchorString = "/notarysignerseal1/",IsSealSignTab = "true"
};
DateSigned notarizedatesigned1 = new DateSigned()
{
AnchorString = "/notarysigner1ds/",AnchorYOffset = "10"
};
Tabs notaryTabs = new Tabs
{
NotarizeTabs = new List<Notarize> { notarize1 },SignHereTabs = new List<SignHere> { notarizesignhere1,notarizesignhere2 },DateSignedTabs = new List<DateSigned> { notarizedatesigned1 }
};
NotaryHost notaryHost = new NotaryHost()
{
Email = notaryEmail,Name = notaryName,DeliveryMethod = "email",RecipientId = "2",Tabs = notaryTabs
};
// Create signHere fields (also kNown as tabs) on the documents,// We're using anchor (autoplace) positioning
//
// The DocuSign platform seaches throughout your envelope's
// documents for matching anchor strings.
SignHere signHere1 = new SignHere
{
AnchorString = "/signer1/",AnchorYOffset = "10"
};
DateSigned dateSigned1 = new DateSigned()
{
AnchorString = "/signer1ds/",AnchorYOffset = "10"
};
// Tabs are set per recipient / signer
Tabs signer1Tabs = new Tabs
{
SignHereTabs = new List<SignHere> { signHere1 },DateSignedTabs = new List<DateSigned> { dateSigned1 }
};
// Create a signer recipient to sign the document,identified by name and email
// We set the clientUserId to enable embedded signing for the recipient
// We're setting the parameters via the object creation
InPersonSigner inPersonSigner1 = new InPersonSigner()
{
Email = signerEmail,Name = signerName,RecipientId = "1",InPersonSigningType = "notary",Tabs = signer1Tabs
};
inPersonSigner1.NotaryHost = notaryHost;
// Add the recipient to the envelope object
Recipients recipients = new Recipients
{
InPersonSigners = new List<InPersonSigner> { inPersonSigner1 },};
envelope.Recipients = recipients;
Image Attachment: errorCode - notary_signing_host_tabs_not_allowed
解决方法
您至少缺少一行:
inPersonSigner1.NotaryHost = notaryHost;
这是一个摘自my blog post的C#代码段:
// To complete this code snippet,you will need an Envelope and a Document object
var notarizeTab = new Notarize
{
XPosition = "100",YPosition = "100"
};
var signHereTab = new SignHere
{
XPosition = "200",YPosition = "200"
};
var notarizeTabs = new List<Notarize>();
notarizeTabs.Add(notarizeTab);
var signHereTabs = new List<SignHere>();
signHereTabs.Add(signHereTab);
var notaryHost = new NotaryHost
{
Name = "Nadia Notary",Email = "nadianotary@domain.com",DeliveryMethod = "email",RecipientId = "2",Tabs = new Tabs { NotarizeTabs = notarizeTabs }
};
// InPersonSigner is used here even if the signer doesn't sign in person
var inPersonSigner = new InPersonSigner
{
NotaryHost = notaryHost,Name = "Eddie End User",Email = "endusersigner@domain.com",RecipientId = "1",InPersonSigningType = "notary",Tabs = new Tabs { SignHereTabs = signHereTabs }
};
var inPersonSigners = new List<InPersonSigner>();
inPersonSigners.Add(inPersonSigner);
var recipients = new Recipients{ InPersonSigners = inPersonSigners };
您可以添加所需的任何标签,但是重要的是要了解公证人是不同的收件人,并且他们有自己的单独标签。