По какой-то причине я не могу заставить свой код показывать пользовательские поля, которые я хочу добавить на левой панели (например, имя, фамилия и т. Д.). При отправке моей формы нужно перейти в конверт и предварительно заполнить мои собственные поля. Здесь я искал документы DocuSign и другие темы. Буду признателен за любую оказанную помощь. Спасибо.Отправить форму и предварительно заполнить пользовательские поля в DocuSign Envelope
<?php
if(!empty($_POST)){
// Input your info:
$email = "[email protected]"; // your account email
$password = "password"; // your account password
$integratorKey = "wouldnt-you-like-to-know"; // your account integrator key, found on (Preferences -> API page)
$templateId = "66b7706e-936b-4438-bd5e-bd68ce47dffb"; // provide a valid templateId of a template in your account
$templateRoleName = "Test"; // use same role name that exists on the template in the console
$recipientName = 'blah bleh'; // provide a recipient (signer) name
$recipientEmail = '[email protected]';
// the recipient name and email. Whatever you set the clientUserId to you must use the same
// value when requesting the signing URL
// construct the authentication header:
$color = $_POST['color'];
$number = $_POST['number'];
$animal = $_POST['animal'];
$header =
"<DocuSignCredentials>
<Username>" .
$email .
"</Username>
<Password>" .
$password .
"</Password>
<IntegratorKey>" .
$integratorKey .
"</IntegratorKey>
</DocuSignCredentials>";
// STEP 1 - Login (retrieves baseUrl and accountId)
$url = "https://demo.docusign.net/restapi/v2/login_information";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_HEADER, false);
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 "<br>";
echo "error calling webservice, status is:" . $status;
exit(-1);
}
$response = json_decode($json_response, true);
$accountId = $response["loginAccounts"][0]["accountId"];
$baseUrl = $response["loginAccounts"][0]["baseUrl"];
curl_close($curl);
//--- display results
echo "accountId = " . $accountId . "\nbaseUrl = " . $baseUrl . "\n" . "<br>";
// STEP 2 - Create an envelope with an Embedded recipient (uses the clientUserId property)
$data = array(
"accountId" => $accountId,
"emailSubject" => "DocuSign API - Embedded Signing Example",
"emailBlurb" => "This is a test.",
"compositeTemplates" => array(
"serverTemplates" => array(
"sequence" => "1",
"templateId" => $templateId
),
"inlineTemplates" => array(
"sequence" => "2",
"recipients" => array(
"signers" => array(
"roleName" => "Signer1",
"recipientId" => "1",
"name" => "John Doe",
"email" => "[email protected]",
"clientUserId" => "1234",
"tabs" => array(
"textTabs" => array(
"tabLabel" => "address",
"value" => "123 Main Street"
)
)
)
)
)
),
"status" => "sent"
);
$data_string = json_encode($data);
$curl = curl_init($baseUrl . "/envelopes");
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
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 . "\nerror text is --> <br>";
print_r($json_response); echo "\n";
exit(-1);
}
$response = json_decode($json_response, true);
$envelopeId = $response["envelopeId"];
curl_close($curl);
//--- display results
echo "<br>Envelope created! Envelope ID: " . $envelopeId . "\n";
// STEP 3 - Get the Embedded Signing View
$data = array(
"returnUrl" => "http://www.docusign.com/devcenter",
"authenticationMethod" => "Email",
"clientUserId" => "1234",
"userName" => "John Doe",
"email" => "[email protected]"
);
$data_string = json_encode($data);
$curl = curl_init($baseUrl . "/envelopes/$envelopeId/views/recipient");
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
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 . "\nerror text is --> ";
print_r($json_response); echo "\n";
exit(-1);
}
$response = json_decode($json_response, true);
$url = $response["url"];
//--- display results
echo "\n\nNavigate to this URL to start the embedded signing view of the envelope\n" . "<br>Embedded URL is: \n\n" . "<a href='$url'>HERE!</a>";
}
?>
<form action="" method="POST">
<label for="color">color:</label>
<input type="text" name="color">
<br>
<label for="number">number:</label>
<input type="text" name="number">
<br>
<label for="animal">animal:</label>
<input type="text" name="animal">
<br>
<button type="submit">Submit</button>
</form>
Я получаю эту ошибку: { «ERRORCODE»: «INVALID_REQUEST_BODY», «сообщение»: «Тело запроса отсутствует или неправильно отформатирована Не может десериализации текущего объекта JSON (например, {\» Имя \ ": \ "value \"}) в тип 'System.Collections.Generic.List'1 [API_REST.Models.v2.compositeTemplate]', потому что для корректного десериализации дескриптора требуется массив JSON (например, [1,2,3]). – pascalallen
Это означает, что DocuSign ожидает массив в месте, где вы указываете объект.Исследуйте полный след вашего запроса (используя Fiddler или аналогичный инструмент) и сравните его с примером, который я предоставил, - убедитесь, что ваш запрос задает массив для составных шаблонов (а также serverTemplates, InlineTemplates и т. Д.). –
Не могу понять это. Я застрял на этом пару дней. Первоначально я думал, что помещение полей из формы в документ DocuSign будет элементарным, но это занимает очень много времени, и их документы не дают ответа на то, что я ищу. – pascalallen