У меня есть учетная запись DocuSign для разработки демо-версии, поскольку я пытаюсь работать с API, чтобы получатели могли быть направлены в документы, чтобы подписываться от отправителя (отправителем в этом случае является я). Всякий раз, когда я POST
API, чтобы получить представление получателя документа, которое я отправил себе, он успешно, и URL-адрес правильно возвращен. Однако, когда я запрашиваю URL-адрес получателя кому-либо, кроме меня, я получаю ошибку 400 Bad Call
. Я реализую это в PHP, но я также пробовал это в REST API explorer с тем же результатом.Почему DocuSign не возвращает URL-адрес Recipientview для других получателей?
Вот код, который работает при отправке документов самому себе. $account_id
, $envelope_id
, $recipient
найдены через базу данных и возвращают правильные значения, поэтому предполагают, что они правильны, где вы их видите:
$url = "https://demo.docusign.net/restapi/v2/accounts/".$account_id."/envelopes/$envelope_id/views/recipient";
$body = array("returnUrl" => "https://www.docusign.com/devcenter",
"authenticationMethod" => "None",
"email" => "$recipient",
"userName" => "$recipient");
$body_string = json_encode($body);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-Type: application/json',
'Content-Length: '.strlen($body_string),
"Authorization: Bearer $access_token"
));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body_string);
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status != 201){
die('Could not connect to end point: '.mysqli_error($connection));
}
Это возвращает следующий JSON:
{
"url": "www.urlexample.com"
}
Поскольку получатели не авторизованный по умолчанию, при обращении к получателю, отличному от меня, я должен изменить $body
, чтобы не только включать "authenticationMethod"
и "returnUrl"
, но также и "userId"
и "recipientId"
, которые должны соответствовать, nd "clientUserId"
(который был бы моим разработчиком), чтобы DocuSign знал, что этот запрос выполняется с авторизацией. Однако, похоже, я не могу это сделать.
Это то, что я пытался для $body
:
$url = "https://demo.docusign.net/restapi/v2/accounts/".$account_id."/envelopes/$envelope_id/views/recipient";
$body = array("authenticationMethod" => "email",
"clientUserId" => "314c7a19-49ff-4405-a958-42344273060c",
"returnUrl" => "https://www.docusign.com/devcenter",
"recipientId" => "a3f182e7-65b6-4bc1-b603-cc8ed23fed0d"
"userId" => "a3f182e7-65b6-4bc1-b603-cc8ed23fed0d"
);
Этот запрос (подставляется в предыдущем коде) возвращает ошибку 400
со следующей JSON:
{
"errorCode": "UNKNOWN_ENVELOPE_RECIPIENT",
"message": "The recipient you have identified is not a valid recipient of the specified envelope."
}
Однако это не имеют смысл, потому что и "recipientId"
, и "userId"
совпадают, и $envelope_id
также определенно правильный (я проверял тройку).
BOTTOM LINE: Как создать URL-адреса для просмотров получателей, если получатели не авторизованы?
Оба являются истинными в моем случае – Jodo1992