Docusignapi 自定义文档字段

Docusignapi 自定义文档字段,docusignapi,Docusignapi,我正在使用dev帐户和demo.docusign.net站点测试API。我想使用具有自定义数据字段的文档创建模板。我创建了一个模板,在将字段拖到文档的页面上,我创建了一个自定义字段。我叫它“姓”。我保存了自定义字段并保存了模板。现在,我想创建一个新文档,用于通过API进行签名,并填充该字段。使用演练作为指导,我能够从模板创建一个新的草稿信封。然后我想用数据填充自定义字段。然而,这是失败的。我得到以下错误: { “错误代码”:“无效的请求\u正文”, “消息”:“请求正文缺失或格式不正确。” }"

我正在使用dev帐户和demo.docusign.net站点测试API。我想使用具有自定义数据字段的文档创建模板。我创建了一个模板,在将字段拖到文档的页面上,我创建了一个自定义字段。我叫它“姓”。我保存了自定义字段并保存了模板。现在,我想创建一个新文档,用于通过API进行签名,并填充该字段。使用演练作为指导,我能够从模板创建一个新的草稿信封。然后我想用数据填充自定义字段。然而,这是失败的。我得到以下错误:

{ “错误代码”:“无效的请求\u正文”, “消息”:“请求正文缺失或格式不正确。” }"

下面是我根据演练编写的代码。除了在设计时附加一个自定义字段外,我还想动态测试添加一个新的自定义字段并对其进行修改。因此,首先我发出一个POST请求,添加一个新字段,并使用Recipients/Tabs API设置它。然后我发出一个GET请求来获取收件人的标签,这样我就可以捕获标签ID。然后我发出一个PUT请求来修改字段,这就是我得到错误消息的地方。但是请求主体在我看来很好,它包含TagId唯一必需的字段。我假设唯一需要的字段是设置值的字段。对于POST请求,相同的请求主体可以正常工作。我只是复制了它并更改了字段。帖子运行良好,我可以通过在控制台中打开它来验证添加的字段。新的领域就在那里。只是修改的结果不起作用

/////////////////////////////////////////////////////////////////////////////////////////////////
// STEP 1 - Add New Tab
/////////////////////////////////////////////////////////////////////////////////////////////////                                                                                  
$curl = curl_init($baseUrl . "/envelopes/" . $envelopeId . "/recipients/1/tabs" );
$data = array (
  'textTabs' => 
  array (
    0 => 
    array (
      'documentId' => '1',
      'pageNumber' => '1',
      'tabLabel' => 'test tab',
      'value' => 'test',
    ),
  ),
);

$data_string = json_encode($data);  


curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($curl, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string),
    "X-DocuSign-Authentication: $header" )                                                                       
);

$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ( $status != 201 ) {
    echo "error calling webservice, status is:" . $status;

    exit(-1);
}

$response = json_decode($json_response, true);
curl_close($curl);

//--- display results



/////////////////////////////////////////////////////////////////////////////////////////////////
// STEP 2 - Get recipient tab information
/////////////////////////////////////////////////////////////////////////////////////////////////                                                                                  
$curl = curl_init($baseUrl . "/envelopes/" . $envelopeId . "/recipients/1/tabs" );
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(                                                                          
    "X-DocuSign-Authentication: $header" )                                                                       
);

$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ( $status != 200 ) {
    echo "error calling webservice, status is:" . $status;

    exit(-1);
}

$response = json_decode($json_response, true);
curl_close($curl);

$lastNameTabID = $response['textTabs'][0]['tabId'];
$testTabID = $response['textTabs'][1]['tabId'];
//--- display results

/////////////////////////////////////////////////////////////////////////////////////////////////
// STEP 3 - update tab value
/////////////////////////////////////////////////////////////////////////////////////////////////                                                                                  
$curl = curl_init($baseUrl . "/envelopes/" . $envelopeId . "/recipients/1/tabs" );
$data = array (
  'textTabs' => 
  array (
    0 => 
    array (
      'tabId' => $testTabID,
      'value' => 'Some Value',
    ),
  ),
);

$data_string = json_encode($data);  


curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_PUT, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);                                                                  
curl_setopt($curl, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string),
    "X-DocuSign-Authentication: $header" )                                                                       
);

$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ( $status != 201 ) {
    echo "error calling webservice, status is:" . $status;

    exit(-1);
}

$response = json_decode($json_response, true);
curl_close($curl);
这是请求主体的输出

数据_string='{“texttab”:[{“tabId”:“627883d0-542c-40c7-a58c-ce68d9e057e1”,“value”:“Some value”}]}

我感谢你的指导

谢谢

我认为这比我们想象的要容易。您应该能够在post中定义附加标记以创建信封。下面是我的json的一部分,用于定义模板角色和文本选项卡。第一个是在模板中定义的字段,标记为“Company”。第二个是一个数据字段,我正在动态添加,并用XY坐标放置在第三页上。您还可以使用锚文本放置此文件

"templateRoles": [
{
  "tabs": {
    "textTabs": [
      {
        "tabLabel": "Company",
        "value": "Acme Inc"
      },
      {
        "tabLabel": "business",
        "value": "widgets",
        "pageNumber": "3",
        "documentId": "1",
        "yPosition": "300",
        "xPosition": "300",
        "locked": false
      }
    ]
  },
  "roleName": "Customer",
  "name": "Customer Bob",
  "email": "signerrob@outlook.com"
}

],

我认为这比我们想象的要容易。您应该能够在post中定义附加标记以创建信封。下面是我的json的一部分,用于定义模板角色和文本选项卡。第一个是在模板中定义的字段,标记为“Company”。第二个是一个数据字段,我正在动态添加,并用XY坐标放置在第三页上。您还可以使用锚文本放置此文件

"templateRoles": [
{
  "tabs": {
    "textTabs": [
      {
        "tabLabel": "Company",
        "value": "Acme Inc"
      },
      {
        "tabLabel": "business",
        "value": "widgets",
        "pageNumber": "3",
        "documentId": "1",
        "yPosition": "300",
        "xPosition": "300",
        "locked": false
      }
    ]
  },
  "roleName": "Customer",
  "name": "Customer Bob",
  "email": "signerrob@outlook.com"
}

],

好的,所以我做了一些挖掘,认为我有我们需要的东西。首先,要获取信封的收件人ID以及相关选项卡ID,请使用以下get:v2/accounts/:accountId/信封/:信封ID/recipients。这将为您提供编辑现有标记所需的内容。获得此处的信息后,可以使用PUT v2/accounts/:accountId/envelopes/:envelopeId/recipientId/选项卡编辑要编辑的选项卡。下面是我使用Postman发送的一个JSON请求示例,用于成功更新文本选项卡值

{
  "textTabs": [
    {
      "tabId": "c75d32c4-8024-48c0-975a-acc232b20212",
      "value": "ABC Corp",
    }
  ]
}

要向该收件人添加选项卡,请使用与编辑相同的URL,但要使用帖子。

好的,所以我做了一些挖掘,认为我已经找到了我们需要的内容。首先,要获取信封的收件人ID以及相关选项卡ID,请使用以下get:v2/accounts/:accountId/信封/:信封ID/recipients。这将为您提供编辑现有标记所需的内容。获得此处的信息后,可以使用PUT v2/accounts/:accountId/envelopes/:envelopeId/recipientId/选项卡编辑要编辑的选项卡。下面是我使用Postman发送的一个JSON请求示例,用于成功更新文本选项卡值

{
  "textTabs": [
    {
      "tabId": "c75d32c4-8024-48c0-975a-acc232b20212",
      "value": "ABC Corp",
    }
  ]
}

若要向该收件人添加选项卡,请使用与编辑相同的URL,但要使用帖子。

Ok,可以。这样我至少可以向前迈进。但是,它实际上并没有回答我为什么不能在创建信封后使用Recipient/Tabs API/accounts/{accountId}/envelopes/{envelopeId}/recipientId}/Tabs进行修改的问题。我仍然想要一个答案,以防在创建信封后需要修改字段。谢谢你,这确实管用。这样我至少可以向前迈进。但是,它实际上并没有回答我为什么不能在创建信封后使用Recipient/Tabs API/accounts/{accountId}/envelopes/{envelopeId}/recipientId}/Tabs进行修改的问题。我仍然想要一个答案,以防在创建信封后需要修改字段。谢谢