2015-01-24 6 views
1

Я использую учетную запись dev и сайт demo.docusign.net для тестирования API. Я хочу создать шаблон с документом, который имеет пользовательские поля данных. Я создал шаблон и на странице, где вы перетаскиваете поля в документ, я создал настраиваемое поле. Я назвал его «Фамилия». Я сохранил настраиваемое поле и сохранил шаблон. Теперь я хочу создать новый документ для подписания через API и заполнить это поле. Используя Пошаговые руководства в качестве руководства, я смог создать новый черновик конверта из шаблона. Затем я хотел заполнить настраиваемое поле данными. Однако это не работает. Я получаю следующее сообщение об ошибке:Пользовательские поля для документов

{ «ERRORCODE»: «INVALID_REQUEST_BODY», «сообщение» : «Тело запроса отсутствует или неправильно отформатирована.» } '

Ниже приведен мой код на основе Пошагового руководства. В дополнение к тому, что пользовательское поле было прикреплено во время разработки, я хотел протестировать динамическое добавление нового настраиваемого поля и его модификацию. Итак, сначала я делаю запрос POST, чтобы добавить новое поле и установить его с помощью API получателей/вкладок. Затем я делаю запрос GET для получения вкладок для получателя, чтобы я мог захватить идентификатор тега. Затем я делаю запрос PUT для изменения поля, и я получаю сообщение об ошибке. Но тело запроса выглядит хорошо для меня, и оно содержит только необходимое поле для TagId. Я предполагаю, что единственное другое необходимое поле - это одно, чтобы установить значение. Тот же орган запроса отлично работает для запроса POST. Я просто скопировал его и изменил поля. POST работает отлично, и я могу проверить добавленное поле, открыв его в консоли. Новое поле есть. Это просто PUT, чтобы изменить, что не работает.

///////////////////////////////////////////////////////////////////////////////////////////////// 
// 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); 

А вот выход запроса органа

data_string = «{ "textTabs": [{ "табетический": "627883d0-542c-40c7-a58c-ce68d9e057e1", "значение": «Некоторое значение»}]} '

Я ценю некоторые рекомендации.

Благодаря Джо

ответ

3

Я думаю, что это проще, чем мы думаем. Вы должны иметь возможность определить дополнительный тег в сообщении для создания конверта. Ниже приведена часть моего json, чтобы определить вкладку роли шаблона и текстовые вкладки. Первый - это поле, определенное в шаблоне с надписью «Компания». Второй - поле данных, которое я добавляю на лету и размещаю на третьей странице с координатами 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": "[email protected]" 
} 

],

+0

Хорошо, что делает работа. Поэтому я могу хотя бы двигаться вперед.Однако на самом деле он не отвечает на вопрос о том, почему я не могу использовать API получателей/вкладок /accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs изменить после конверта создание. Мне все равно нужен ответ, если мне нужно изменить поле после создания конверта. спасибо – Joe

1

Хорошо, так что я сделал немного покопаться и думаю, что у меня есть то, что нам нужно здесь. Во-первых, чтобы получить идентификатор получателя, а также связанные идентификаторы табуляции для конверта, используйте следующие GET: v2/accounts /: accountId/envelopes /: envelopeId/recipients. Это даст вам то, что вам нужно для редактирования существующих тегов. После того, как у вас есть информация здесь, вы можете использовать PUT v2/accounts /: accountId/envelopes /: envelopeId/recipients /: recipientId/tabs для редактирования вкладок, которые вы хотите изменить. Вот пример запроса JSON, который я отправил с помощью Postman для успешного обновления значения вкладок текста.

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

Чтобы добавить вкладки к этому получателю, используйте тот же URL-адрес, что и редактирование, но используйте POST.

Смежные вопросы