Вкладка SignHere в Docusign не отображается, когда документы отправляются через приложение Laravel.

Вопрос или проблема

Я работаю над приложением на Laravel, в которое я интегрировал DocuSign для отправки документов на электронные подписи. Я следовал официальной документации API DocuSign для настройки аутентификации JWT и успешно отправлял документы. Однако, когда я отправляю документ на подпись, поле для подписи не появляется на документе.

Как я уже упоминал, я успешно отправляю документы, и код для создания конверта следующий:

    public function buildEnvelope(Request $request): EnvelopeDefinition
    {
        $fileContent = $request->file('formFile')->get();
        $fileName = $request->file('formFile')->getClientOriginalName();
        $fileExtension = $request->file('formFile')->getClientOriginalExtension();
        $recipientEmail = $request['email'];
        $recipientName = $request['name'];

        $document = new Document([
            'document_id' => "1",
            'document_base64' => base64_encode($fileContent),
            'file_extension' => $fileExtension,
            'name' => $fileName
        ]);

        $sign_here_tab = new SignHere([
            'anchor_string' => "**подпись**",
            'page_number' => "1",
            'anchor_units' => "pixels",
            'anchor_x_offset' => "100",
            'anchor_y_offset' => "300"
        ]);

        $tabs = new Tabs([
            'sign_here_tabs' => [$sign_here_tab]
        ]);

        $signer = new Signer([
            'email' => $recipientEmail,
            'name' => $recipientName,
            'recipient_id' => "1",
            'tabs' => $tabs
        ]);

        $recipients = new Recipients([
            'signers' => [$signer]
        ]);

        $inlineTemplate = new InlineTemplate([
            'recipients' => $recipients,
            'sequence' => "1"
        ]);

        $compositeTemplate = new CompositeTemplate([
            'composite_template_id' => "1",
            'document' => $document,
            'inline_templates' => [$inlineTemplate]
        ]);

        return new EnvelopeDefinition([
            'composite_templates' => [$compositeTemplate],
            'email_subject' => "Пожалуйста, подпишите",
            'status' => "отправлено"
        ]);
    }

Я указал номер страницы, некоторые случайные координаты, строку привязки и единицы измерения привязки и ожидал, что на странице 1 я увижу текст подпись

Ответ или решение

Проблема с отсутствием таба подписи SignHere в документе при отправке его через ваше Laravel-приложение может быть вызвана несколькими причинами. Позвольте мне объяснить, как правильно настроить интеграцию с DocuSign и устранить возможные проблемы.

Во-первых, важно убедиться, что строка анкора правильно задана в вашем документе. Вы используете anchor_string = "signature", что означает, что DocuSign будет искать именно эту строку в документе для размещения поля подписи. Убедитесь, что текст **signature** находится на первой странице вашего загружаемого документа в том месте, где вы ожидаете, чтобы оно было. Параметр anchor_units у вас установлен на "pixels", что подразумевает, что координаты anchor_x_offset и anchor_y_offset могут быть некорректно интерпретированы, если не учитывать размер шрифта, а также другие параметры макета документа.

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

  1. Проверьте наличие текста в документе:
    Убедитесь, что в загружаемом документе действительно присутствует текст **signature**. Обратите внимание на регистр и дополнительные пробелы.

  2. Измените параметры позиционирования:
    Попробуйте изменить параметр anchor_units на "inches" или "millimeters", чтобы протестировать, будет ли это влиять на отображение поля подписи. Также попробуйте опустить anchor_x_offset и anchor_y_offset, если у вас стоит фиксированное значение.

  3. Проверьте последовательность документов и получателей:
    Ваша структура документов и получателей выглядит правильно, но убедитесь, что все id (например, recipient_id и document_id) уникальны для каждого нового подписанта или документа, особенно если вы добавляете несколько подписантов.

  4. Логирование и отладка:
    Включите дополнительное логирование в вашем приложении для отслеживания запросов к DocuSign API. Получите и проанализируйте ответ от сервера DocuSign на предмет ошибок или предупреждений, которые могут указывать на источник проблемы.

Вот пример кода, который может помочь добавить дополнительную обработку ошибок:

try {
    $envelopeApi = new EnvelopesApi($apiClient);
    $envelopeSummary = $envelopeApi->createEnvelope($accountId, $envelopeDefinition);
    return response()->json(['success' => true, 'envelope_id' => $envelopeSummary->getEnvelopeId()]);
} catch (ApiException $e) {
    return response()->json(['success' => false, 'message' => $e->getMessage()]);
}
  1. Тестирование с простым документом:
    Создайте простой текстовый документ (например, .txt или .docx) с одной строкой содержащей **signature**, чтобы убедиться, что это не проблема конкретного документа.

Если после всех этих шагов проблема не устраняется, возможно, стоит обратиться в службу поддержки DocuSign с конкретными примерами запросов и ответов API, чтобы они могли помочь вам более детально. Важно собрать как можно больше информации о проблеме для эффективного решения.

Удачи в решении проблемы! Если есть еще вопросы, обращайтесь.

Оцените материал
Добавить комментарий

Капча загружается...