Docusign客户文件数据

时间:2015-08-09 21:18:39

标签: docusignapi

使用docusign可以将自定义数据发送到文档。

我们的用例是让客户签署嵌入式表格。我们从数据库中填充所有数据。

因此主合同是相同的,但我们需要将一些价值,例如合同号,名称,地址和价格发送到我们签署的文件。什么是实现这一目标的最佳方式?

我已经看到为此目的提到的客户标签,但似乎我们只能在经典视图中执行此操作,这使得它似乎不会是新版本中支持的功能。

更新

我仍然对此问题保持不变。

我尝试过做的建议并设置textCustomFields

然而,无论我在标签中传递的是什么,我都没有出现。

例如。

我的文档上有名称字段,我还有一个文本字段,其数据标签为:contractid

然后我尝试按照文档中的描述将数据传入我的信封中(我还没有在任何地方找到这样的例子)

string requestBody = 
                "<envelopeDefinition  xmlns=\"http://www.docusign.com/restapi\">" +
                "<status>sent</status>" + 
                "<emailSubject>DocuSign API - Embedded Signing example</emailSubject>" +
                "<templateId>" + templateId + "</templateId>" + 
                "<templateRoles>" + 
                "<templateRole>" + 
                "<email>" + recipientEmail + "</email>" +   
                "<name>" + recipientName + "</name>" +
                "<roleName>" + templateRole + "</roleName>" + 
                "<clientUserId>1</clientUserId>" +  // user-configurable
                "</templateRole>" + 
                "</templateRoles>" + 
                "<customFields>" +
                "<textCustomFields>" +
                "<fieldId>contractid</fieldId>" +
                "<name>contractid</name>" +
                "<required>true</required>" +
                "<show>true</show>" +
                "<value>123</value>" +
                "</textCustomFields>" +
                "</customFields>" +
                "</envelopeDefinition>";

名称字段在合同中正确显示,但这是Docusign预定义的自定义字段

但是,contractid字段只显示空白,因为没有数据传入其中。

我甚至尝试将信息添加到我的视图调用中,以便在显示嵌入式合同时也不执行任何操作。

我可能会以错误的方式解决这个问题,但到目前为止,我找不到关于如何通过REST API将自定义数据发送到合同中的良好文档。

编辑:

以下是我的设置的屏幕截图,我试图将文本标签添加到信封和文档查看请求中。

我不得不说我已经使用过多个Rest API,包括使用Twilio,Phaxio,Twitter和这个Rest API实现似乎是最容易混淆的,我曾经遇到过什么

enter image description here

3 个答案:

答案 0 :(得分:1)

我们正在完成我们的DocuSign实施,并且能够通过添加到签名者对象的textTabs来完成您正在寻找的内容。我在PowerShell中附加了我的POC代码,显示了正在格式化的选项卡。

我们在Word 2013中生成合同并使用锚点来放置所有内容。源文档在文本中会有// SIGNATURE //,但在发布之前它会突出显示并更改为白色字体,因此最终合同在DocuSign中呈现得非常好。

enter image description here

结果(除了我砍掉名称和标题) enter image description here

将您的API密钥和凭据放入登录功能,并在顶部设置收件人信息。该脚本使用名为“contract.docx”

的文档创建并发送信封
[string]$recipientEmail = "mr.mann@bluesbrothers.com"
[string]$recipientName = "Mr. Mann"
[string]$recipientFirstName = "Mann"
[string]$recipientTitle = "CEO, Mann, Inc."

function boundry {
    [System.Guid]::NewGuid().ToString()
}

function encodeFile {
    param ([string]$fileName)
    [System.Convert]::ToBase64String([IO.File]::ReadAllBytes((Resolve-Path $fileName).ProviderPath))
}


function logonParams {
    [string] $userName = 'YOUR USER NAME' 
    [string] $password = 'YOUR PASSWORD'
    [string] $integratorKey = 'YOUR INTEGRATOR KEY'

    @"
        {    
            "Username" : "$userName",
            "Password" : "$password",
            "IntegratorKey" : "$integratorKey"
        }
"@
}

function logon {
    [string] $loginURL = 'https://demo.docusign.net/restapi/v2/login_information'
    $headers = 
        @{
            "X-DocuSign-Authentication"=$(logonParams);
            "accept"="application/json";
            "content-type"="application/json";
        }

    $r = Invoke-WebRequest -uri $loginURL -headers $headers -method GET 
    $responseInfo = $r.content | ConvertFrom-Json 
    $baseURL = $responseInfo.loginAccounts.baseURL

    $baseURL
}

function createEnvelope {
    param ([string]$contractFile,
            [string]$baseURL
          )

    [string]$boundry = boundry
    $headers = 
    @{
        "X-DocuSign-Authentication"=$(logonParams);
        "accept"="application/json";
        "content-type"="multipart/form-data; boundary=$boundry";
    }

    [string]$formData = @"
--$boundry
Content-Type: application/json

{
  "status":"sent",
  "emailBlurb":"$recipientFirstName, Here is a test contract that I uploaded to DocuSign and routed through their webservice API.",
  "emailSubject": "Test Contract $(date)",
  "authoritativeCopy" : "true",
  "documents": [
      {
          "name": "$contractFile",
          "documentId":"1",
          "order":"1"
      }
  ],
  "recipients": {
    "signers" : [{
      "email" : "$recipientEmail",
      "name"  : "$recipientName",
      "title" : "$recipientTitle",
      "recipientId":"1",
      "tabs"  : {
            "signHereTabs" : [{ 
                "anchorString" : "//SIGNATURE//" 
            }],
            "fullNameTabs" : [{ 
                "anchorString" : "//SIGNATURE_NAME//",
                "font" : "Calibri",
                "fontSize" : "Size11",
                "anchorYOffset" : -10
            }],
            "titleTabs"    : [{ 
                "anchorString" : "//SIGNATURE_TITLE//",
                "font" : "Calibri",
                "fontSize" : "Size11",
                "anchorYOffset" : -10
            }],
            "dateTabs"     : [{ 
                "anchorString" : "//SIGNATURE_DATE//",
                "font" : "Calibri",
                "fontSize" : "Size11",
                "anchorYOffset" : -10
            }],
            "textTabs"     : [
                { 
                    "anchorString" : "//INVOICE_NAME//",
                    "font" : "Calibri",
                    "fontSize" : "Size11",
                    "anchorYOffset" : -10,
                    "value" : "My Invoice Name",
                },
                { 
                    "anchorString" : "//INVOICE_ADDRESS1//",
                    "font" : "Calibri",
                    "fontSize" : "Size11",
                    "anchorYOffset" : -10,
                    "value" : "My Invoice Address 1",
                },
                { 
                    "anchorString" : "//INVOICE_ADDRESS2//",
                    "font" : "Calibri",
                    "fontSize" : "Size11",
                    "anchorYOffset" : -10,
                    "value" : "My Invoice Address 2",
                },
                { 
                    "anchorString" : "//INVOICE_ADDRESS3//",
                    "font" : "Calibri",
                    "fontSize" : "Size11",
                    "anchorYOffset" : -10,
                    "value" : "My Invoice Address 3",
                },
                { 
                    "anchorString" : "//INVOICE_EMAIL//",
                    "font" : "Calibri",
                    "fontSize" : "Size11",
                    "anchorYOffset" : -10,
                    "value" : "somebody@somewhere.com"
                }
            ],
       }
    }]
  }
}

--$boundry
Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document
Content-Transfer-Encoding: base64
Content-Disposition: file; filename="$mainFile";documentid=1

$(encodeFile $contractFile) 

--$boundry--
"@

    $envelopeURL = "$baseURL/envelopes"

    Invoke-WebRequest -uri $envelopeURL -headers $headers -body $formData -method POST
}

$baseURL = logon
createEnvelope "contract.docx" $baseURL

答案 1 :(得分:0)

对于那些使用XML并尝试自动填写数据的人

string requestBody = 
"<envelopeDefinition xmlns=\"http://www.docusign.com/restapi\">" +
"<status>sent</status>" + 
"<emailSubject>DocuSign API - Embedded Signing example</emailSubject>" +
"<templateId>" + templateId + "</templateId>" + 
"<templateRoles>" + 
"<templateRole>" + 
"<email>" + recipientEmail + "</email>" +   
"<name>" + recipientName + "</name>" +
"<roleName>" + templateRole + "</roleName>" + 
"<clientUserId>1</clientUserId>" +  // user-configurable
"<tabs>" + 
"<textTabs>" + 
"<text>" + 
"<anchorString>follows:</anchorString>" +
"<value>Initial Data Goes</value>" + 
"</text>" + 
"</textTabs>" + 
"</tabs>" + 
"</templateRole>" + 
"</templateRoles>" + 
"</envelopeDefinition>";

然后在文档中的任何位置都会显示以下文字:您将显示文本,您可以修改它以使用其他字段显示它。

答案 2 :(得分:-1)

这可以通过DocuSign API完成。您可以根据该合同构建模板,并添加需要数据的字段。然后,在创建信封时,您可以设置在这些字段中填充的数据。

可以找到更多信息here.

修改

可以找到示例代码here

自定义字段指的是信封自定义字段,该字段可用于记录有关信封的信息,帮助搜索信封和跟踪信息,而不是标签。

您需要textTab:

    <textTabs>
        <text>
          <anchorIgnoreIfNotPresent>sample string 35</anchorIgnoreIfNotPresent>
          <anchorString>sample string 31</anchorString>
          <anchorUnits>sample string 34</anchorUnits>
          <anchorXOffset>sample string 32</anchorXOffset>
          <anchorYOffset>sample string 33</anchorYOffset>
          <conditionalParentLabel>sample string 39</conditionalParentLabel>
          <conditionalParentValue>sample string 40</conditionalParentValue>
          <documentId>sample string 26</documentId>
          <pageNumber>sample string 28</pageNumber>
          <recipientId>sample string 27</recipientId>
          <tabId>sample string 36</tabId>
          <templateLocked>sample string 37</templateLocked>
          <templateRequired>sample string 38</templateRequired>
          <xPosition>sample string 29</xPosition>
          <yPosition>sample string 30</yPosition>
          <bold>sample string 21</bold>
          <font>sample string 20</font>
          <fontColor>sample string 24</fontColor>
          <fontSize>sample string 25</fontSize>
          <italic>sample string 22</italic>
          <tabLabel>sample string 19</tabLabel>
          <underline>sample string 23</underline>
          <concealValueOnDocument>sample string 16</concealValueOnDocument>
          <disableAutoSize>sample string 17</disableAutoSize>
          <locked>sample string 15</locked>
          <maxLength>18</maxLength>
          <name>sample string 10</name>
          <originalValue>sample string 12</originalValue>
          <required>sample string 14</required>
          <value>sample string 11</value>
          <width>13</width>
          <requireAll>sample string 9</requireAll>
          <requireInitialOnSharedChange>sample string 7</requireInitialOnSharedChange>
          <senderRequired>sample string 8</senderRequired>
          <shared>sample string 6</shared>
          <validationMessage>sample string 5</validationMessage>
          <validationPattern>sample string 4</validationPattern>
          <formula>sample string 3</formula>
          <height>1</height>
          <isPaymentAmount>sample string 2</isPaymentAmount>
        </text>
      </textTabs>