1

我在正确理解 DocuSign API 时遇到了一些麻烦。

我的第一个任务是简单地发送和创建一个信封。我使用 UIView 和 Core Graphics 创建了一个 PDF(在 iOS 中)。然后我继续在我需要签名的部分放置锚标签。

由于创建了 Anchor 选项卡,我不确定是否应该将选项卡作为输出的一部分发送。

这是我的输出主体

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:DSAPIService="http://www.docusign.net/API/3.0" xsl:version="1.0">
  <soap:Body>
    <DSAPIService:CreateAndSendEnvelope>
      <DSAPIService:Envelope>
        <DSAPIService:AccountId>(Account Id)</DSAPIService:AccountId>
        <DSAPIService:Documents>
          <DSAPIService:Document>
            <DSAPIService:ID>1</DSAPIService:ID>
            <DSAPIService:Name>(Name)</DSAPIService:Name>
            <DSAPIService:PDFBytes>(PDF data)</DSAPIService:PDFBytes>
          </DSAPIService:Document>
        </DSAPIService:Documents>
        <DSAPIService:Recipients>
          <DSAPIService:Recipient>
            <DSAPIService:ID>1</DSAPIService:ID>
            <DSAPIService:UserName>(Signer 1)</DSAPIService:UserName>
            <DSAPIService:Email>(Signer 1 email)</DSAPIService:Email>
            <DSAPIService:Type>Signer</DSAPIService:Type>
            <DSAPIService:RoutingOrder>0</DSAPIService:RoutingOrder>
          </DSAPIService:Recipient>
          <DSAPIService:Recipient>
            <DSAPIService:ID>2</DSAPIService:ID>
            <DSAPIService:UserName>(Signer 2)</DSAPIService:UserName>
            <DSAPIService:Email>(Signer 2 Email)/DSAPIService:Email>
            <DSAPIService:Type>Signer</DSAPIService:Type>
            <DSAPIService:RoutingOrder>1</DSAPIService:RoutingOrder>
          </DSAPIService:Recipient>
          <DSAPIService:Recipient>
            <DSAPIService:ID>3</DSAPIService:ID>
            <DSAPIService:UserName>(Signer 3)</DSAPIService:UserName>
            <DSAPIService:Email>(Signer 3 email)</DSAPIService:Email>
            <DSAPIService:Type>InPersonSigner</DSAPIService:Type>
            <DSAPIService:CaptiveInfo/>
            <DSAPIService:RoutingOrder>2</DSAPIService:RoutingOrder>
          </DSAPIService:Recipient>
          <DSAPIService:Recipient>
            <DSAPIService:ID>4</DSAPIService:ID>
            <DSAPIService:UserName>(Signer 4)</DSAPIService:UserName>
            <DSAPIService:Email>(Signer 4 email)</DSAPIService:Email>
            <DSAPIService:Type>Signer</DSAPIService:Type>
            <DSAPIService:RoutingOrder>3</DSAPIService:RoutingOrder>
          </DSAPIService:Recipient>
        </DSAPIService:Recipients>
        <DSAPIService:Tabs/>
        <DSAPIService:Subject>(Subject)</DSAPIService:Subject>
        <DSAPIService:EmailBlurb>Please sign the attached document.</DSAPIService:EmailBlurb>
        <DSAPIService:EnableWetSign>true</DSAPIService:EnableWetSign>
      </DSAPIService:Envelope>
    </DSAPIService:CreateAndSendEnvelope>
  </soap:Body>
</soap:Envelope>

这是我的回应

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><soap:Header><wsa:Action>http://schemas.xmlsoap.org/ws/2004/08/addressing/fault</wsa:Action><wsa:MessageID>urn:uuid:9a22096c-ca51-4445-80fd-78c08f9b0f24</wsa:MessageID><wsa:RelatesTo>urn:uuid:7f921133-4834-402b-aaa7-769b7fa0042b</wsa:RelatesTo><wsa:To>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To><wsse:Security><wsu:Timestamp wsu:Id="Timestamp-9b102c34-6215-4fd6-8f9c-f1cb6a30c080"><wsu:Created>2013-09-26T22:59:09Z</wsu:Created><wsu:Expires>2013-09-26T23:04:09Z</wsu:Expires></wsu:Timestamp></wsse:Security></soap:Header><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Unspecified_Error</faultstring><faultactor>https://www.docusign.net/api/3.0/DSAPI.asmx</faultactor><detail><ErrorCode xmlns="missing in Web.Config">1</ErrorCode><ErrorReason xmlns="missing in Web.Config">An Error Occurred.</ErrorReason></detail></soap:Fault></soap:Body></soap:Envelope>
namespace error : xmlns: 'missing in Web.Config' is not a valid URI
/api/3.0/DSAPI.asmx</faultactor><detail><ErrorCode xmlns="missing in Web.Config"
                                                                               ^
namespace error : xmlns: 'missing in Web.Config' is not a valid URI
="missing in Web.Config">1</ErrorCode><ErrorReason xmlns="missing in Web.Config"
                                                                               ^
2013-09-26 15:59:09.107 (iOS App Name)[89329:4003] DSAPIService_CreateAndSendEnvelope soap call failed:

 ************
Unspecified_Error
 ************

我非常彻底地查看了该服务的文档,但我真的不确定自动锚选项卡是否适合 API,如果它们适合的话。

即使我试图通过将我想要使用的所有字段作为 /s1/ /s2/ 等来使用自动锚选项卡,我仍然添加选项卡吗?我看不出还有什么是关于为什么调用的问题失败的。

编辑:我现在看到无论自动锚定如何,我都需要添加标签。如何为签名、日期和标题添加选项卡自动锚点?

4

2 回答 2

1

首先,我建议您为 Document 指定FileExtension。(正如我在下面提供的示例中所做的那样。)

其次,绝对从 1(不是零)开始 RoutingOrder。这可能是您遇到错误的原因。

最后,以下 SOAP XML 示例使用文档中的锚文本来放置/指定选项卡,如下所示:

  • SignHere选项卡放在第一个签名者 (RecipientId=1) 的信封中文本\s1\出现的任何位置。
  • DateSigned选项卡放在第一个签名者 (RecipientId=1) 的信封中文本\d1\出现的任何位置。
  • 标题选项卡放置在第一个签名者 (RecipientId=1) 的信封中文本\t1\出现的任何位置。

  • SignHere选项卡放在第二个签名者 (RecipientId=2) 的信封中文本\s2\出现的任何位置。

  • DateSigned选项卡放在第二个签名者 (RecipientId=2) 的信封中文本\d2\出现的任何位置。
  • 标题选项卡放置在第二个 (RecipientId=2) 的信封中出现文本\t2\的任何位置。

        <ns:CreateAndSendEnvelope>
        <ns:Envelope>
            <ns:AccountId>my_account_id</ns:AccountId>
            <ns:Documents>
                <ns:Document>
                    <ns:ID>1</ns:ID>
                    <ns:Name>Simple NDA.pdf</ns:Name>
                    <ns:PDFBytes>bytes_removed</ns:PDFBytes>
                    <ns:FileExtension>pdf</ns:FileExtension>
                    <ns:AttachmentDescription>Simple NDA</ns:AttachmentDescription>
                </ns:Document>
            </ns:Documents>
            <ns:Recipients>
                <ns:Recipient>
                    <ns:ID>1</ns:ID>
                    <ns:UserName>Betty Adams</ns:UserName>
                    <ns:Email>BettyEmail@outlook.com</ns:Email>
                    <ns:Type>Signer</ns:Type>
                    <ns:RoutingOrder>1</ns:RoutingOrder>
                </ns:Recipient>
                <ns:Recipient>
                    <ns:ID>2</ns:ID>
                    <ns:UserName>John Jones</ns:UserName>
                    <ns:Email>JohnEmail1@outlook.com</ns:Email>
                    <ns:Type>Signer</ns:Type>
                    <ns:RoutingOrder>2</ns:RoutingOrder>
                </ns:Recipient>
            </ns:Recipients>
            <ns:Tabs>
                <ns:Tab>
                    <ns:RecipientID>1</ns:RecipientID>
                    <ns:AnchorTabItem>
                        <ns:AnchorTabString>\s1\</ns:AnchorTabString>
                        <ns:XOffset>-7</ns:XOffset>
                        <ns:YOffset>12</ns:YOffset>
                        <ns:Unit>Pixels</ns:Unit>
                    </ns:AnchorTabItem>
                    <ns:Type>SignHere</ns:Type>
                </ns:Tab>
                <ns:Tab>
                    <ns:RecipientID>1</ns:RecipientID>
                    <ns:AnchorTabItem>
                        <ns:AnchorTabString>\d1\</ns:AnchorTabString>
                    </ns:AnchorTabItem>
                    <ns:Type>DateSigned</ns:Type>
                </ns:Tab>
                <ns:Tab>
                    <ns:RecipientID>1</ns:RecipientID>
                    <ns:AnchorTabItem>
                        <ns:AnchorTabString>\t1\</ns:AnchorTabString>
                    </ns:AnchorTabItem>
                    <ns:Type>Title</ns:Type>
                </ns:Tab>
                <ns:Tab>
                    <ns:RecipientID>2</ns:RecipientID>
                    <ns:AnchorTabItem>
                        <ns:AnchorTabString>\s2\</ns:AnchorTabString>
                    </ns:AnchorTabItem>
                    <ns:Type>SignHere</ns:Type>
                </ns:Tab>
                <ns:Tab>
                    <ns:RecipientID>2</ns:RecipientID>
                    <ns:AnchorTabItem>
                        <ns:AnchorTabString>\d2\</ns:AnchorTabString>
                    </ns:AnchorTabItem>
                    <ns:Type>DateSigned</ns:Type>
                </ns:Tab>
                <ns:Tab>
                    <ns:RecipientID>2</ns:RecipientID>
                    <ns:AnchorTabItem>
                        <ns:AnchorTabString>\t2\</ns:AnchorTabString>
                    </ns:AnchorTabItem>
                    <ns:Type>Title</ns:Type>
                </ns:Tab>
            </ns:Tabs>
            <ns:Subject>Please DocuSign this document</ns:Subject>
            <ns:EmailBlurb>Please sign this document using DocuSign...thanks!</ns:EmailBlurb>
        </ns:Envelope>
    </ns:CreateAndSendEnvelope>
    

使用锚文本指定的每个选项卡至少必须包含以下元素:

                <ns:Tab>
                    <ns:RecipientID>2</ns:RecipientID>
                    <ns:AnchorTabItem>
                        <ns:AnchorTabString>\t2\</ns:AnchorTabString>
                    </ns:AnchorTabItem>
                    <ns:Type>Title</ns:Type>
                </ns:Tab>

或者,如果需要,您可以指定偏移测量值,以便相对于锚文本字符串位置更精确地放置标签,方法是使用XOffsetYOffsetUnit元素,就像代码示例对第一个签名者的签名选项卡所做的那样:

                <ns:Tab>
                    <ns:RecipientID>1</ns:RecipientID>
                    <ns:AnchorTabItem>
                        <ns:AnchorTabString>\s1\</ns:AnchorTabString>
                        <ns:XOffset>-7</ns:XOffset>
                        <ns:YOffset>12</ns:YOffset>
                        <ns:Unit>Pixels</ns:Unit>
                    </ns:AnchorTabItem>
                    <ns:Type>SignHere</ns:Type>
                </ns:Tab>
于 2013-09-27T00:48:31.773 回答
0

查看 DocuSign 的开发人员中心,因为您的问题都通过那里得到解答:

http://www.docusign.com/developer-center

如果你去探索 -> 功能然后看看 Stick-eTabs 页面,你会看到一个标题为标签定位的部分,它描述了锚标记。为了回答您的问题,DocuSign 中的每个选项卡都可以选择使用绝对定位或相对定位。如果您正在设置选项卡的 XPosition 和 YPosition,那么您使用的是绝对定位。另一方面,如果您正在使用锚标记,那么您正在使用相对定位 - 在这种情况下,您将需要使用选项卡的锚设置。在 REST 中它看起来像这样(我相信您可以轻松地采用 SOAP):

"tabs": {
  "signHereTabs": [
    {
    "anchorString": "Please Sign Here:",
    "anchorXOffset": "1",
    "anchorYOffset": "0",
    "anchorIgnoreIfNotPresent": "false",
    "anchorUnits": "inches"
    }
  ]
}

基本上,在 SOAP 代码中的选项卡元素中,您只需要设置 anchorString(选项卡将锚定到的文档内容)、偏移量(如果有)和偏移量单位等。上面的示例将放置一个签名在文档中找到文本“请在此处签名”的右侧1 英寸处的制表符。


就您收到的未指定错误而言,我感觉这是由于您的 routingOrder。我不相信 0 被允许作为路由顺序,请尝试从 1 开始。

于 2013-09-27T00:32:52.500 回答