Ошибка SHARED_VIEW_USER_LACKS_PERMISSION в DocuSign \ eSign \ Model \ RecipientViewRequest - PullRequest
0 голосов
/ 26 марта 2020

Мой сценарий будет таким в моем приложении: Зарегистрироваться> Подписать документ> Вернуться на страницу Fini sh. Пользователь регистрируется в моей заявке, и ему необходимо подписать документ, чтобы завершить sh его регистрацию. Он не пользователь DocuSign. На данный момент все мои тесты проходят в среде Sandbox.

Создание конверта прекрасно работает. Если я не использую client_user_id, он отправляет письмо на подпись. Но мне нужно использовать client_user_id, чтобы использовать встроенную подпись и получить URL для следующего шага.

Когда я пытаюсь получить URL конверта, я получаю следующую ошибку:

errorCode: SHARED_VIEW_USER_LACKS_PERMISSION
message: User lacks shared permission to envelope. Only a user with shared access to the envelope may perform the requested operation.

Вот код, который я использую в своем приложении PHP, чтобы попытаться получить URL недавно созданного конверта:

$envelope = $this->docusignlib->create_document_for_signing($user, $file);
$result = $this->docusignlib->get_url_document($user, $envelope['envelope_id'], $return_url);
   public function create_document_for_signing($user, $file)
   {
      # Document
      $document = new DocuSign\eSign\Model\Document([
         'document_base64' =>  base64_encode(file_get_contents($file)),
         'name' => 'Document name',
         'file_extension' => 'pdf',
         'document_id' => '1'
      ]);

      # Sign Here Position
      $signHere = new DocuSign\eSign\Model\SignHere([
         'document_id' => '1', 'page_number' => '2', 'recipient_id' => '1',
         'tab_label' => 'Sign here', 'x_position' => '100', 'y_position' => '720'
      ]);

      # The signer object
      $signer = new DocuSign\eSign\Model\Signer([
         'email' => $user->user_email,
         'name' => $user->user_name,
         'recipient_id' => "1",
         'client_user_id' => $user->user_id,
         'tabs' => new DocuSign\eSign\Model\Tabs([
            'sign_here_tabs' => [$signHere]
         ])
      ]);

      # Next, create the top level envelope definition and populate it.
      $envelopeDefinition = new DocuSign\eSign\Model\EnvelopeDefinition([
         'email_subject' => "Email subject",
         'documents' => [$document],
         'recipients' => new DocuSign\eSign\Model\Recipients(['signers' => [$signer]]),
         'status' => "sent"
      ]);

      $config = new DocuSign\eSign\Configuration();
      $config->setHost($this->api);
      $config->addDefaultHeader("Authorization", "Bearer " . $this->accessToken);
      $apiClient = new DocuSign\eSign\Client\ApiClient($config);
      $envelopeApi = new DocuSign\eSign\Api\EnvelopesApi($apiClient);
      return $envelopeApi->createEnvelope($this->accountId, $envelopeDefinition);
   }
   public function get_url_document($user, $envelopeId, $returnUrl)
   {
      $recipientViewRequest = new DocuSign\eSign\Model\RecipientViewRequest([
         'user_name' => $user->user_name,
         'email' => $user->user_email,
         "recipient_id" => "1",
         "client_user_id" => $user->user_id,
         "authentication_method" => "email",
         "return_url" => $returnUrl
      ]);


      $config = new DocuSign\eSign\Configuration();
      $config->setHost($this->api);
      $config->addDefaultHeader("Authorization", "Bearer " . $this->accessToken);
      $apiClient = new DocuSign\eSign\Client\ApiClient($config);
      $envelopeApi = new DocuSign\eSign\Api\EnvelopesApi($apiClient);
      return $envelopeApi->createEnvelopeRecipientSharedView($this->accountId, $envelopeId, $recipientViewRequest);
   }

Я не смог найти НИЧЕГО связанного с этой ошибкой в ​​документации, и я проверил все разрешения, и все, кажется, в порядке. Я использую пользователя admin моего демо-счета. Есть идеи, что я здесь не так делаю?

Спасибо!

1 Ответ

0 голосов
/ 28 марта 2020

SHARED_VIEW_USER_LACKS_PERMISSION о пользователе и учетной записи. Вы можете попробовать другой аккаунт и / или новый конверт. Я также хотел бы убедиться, что вы делаете API-вызов для demo.docusign. net URL, а не www.docusign.net, поскольку вы все еще находитесь в демо / песочнице. AccessToken должен соответствовать учетной записи, и если вы используете генератор токенов, это учетная запись, которую вы использовали, когда генератор токенов попросил вас войти в систему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...