Множество хороших вопросов:
EnvelopeViews: createRecipient требует заголовка X-DocuSign-Authentication, поэтому этот запрос должен вызываться со стороны отправителя, не так ли?
Не используйте заголовок X-DocuSign-Authentication
. Это «устаревшая проверка подлинности», и DocuSign не поддерживает ее для новых приложений REST eSignature. Вместо этого используйте OAuth. Вероятно, поток предоставления JWT OAuth, поскольку этот поток позволяет вашему приложению олицетворять пользователя DocuSign (например, отправителя), когда пользователя нет.
Вы может вызывать EnvelopeViews: createRecipient со своего сервера или из приложения браузера. Если вы звоните из своего браузера, вам необходимо реализовать частный шлюз CORS.
В любом случае, когда подписывающая сторона готова подписать, вы получите URL-адрес церемонии подписания из EnvelopeViews : createRecipient API, а затем перенаправить браузер подписывающей стороны на URL.
EnvelopeViews: createRecipient возвращает URL-адрес, который можно использовать один раз, почему?
В целях безопасности. Это часть нашей архитектуры информационной безопасности. И не только URL-адрес церемонии подписания можно использовать только один раз, но и ограничен по времени. Его следует использовать в течение минуты или двух с момента его получения от DocuSign. Срок его действия истечет через 5 минут после его создания.
Второй раз, когда я использую этот URL, я получаю в качестве ответа 404.
Да, все так, как задумано. Вы получаете URL-адрес, а затем сразу перенаправляете подписавшего на URL-адрес. Затем они подписывают. Затем они перенаправляются обратно в ваше приложение.
Если вы хотите предоставить подписывающей стороне URL-адрес, который она может использовать позже, вы можете реализовать этот поток самостоятельно. Я описал это в других ответах.
Итак, я заметил, что Получатель не может использовать URL-адрес (предоставленный Отправителем) дважды, но он не может каждый раз генерировать новый URL-адрес, потому что он не аутентифицирован (нет X-DocuSign-Authentication).
Как я могу правильно реализовать этот поток?
Вы почти у цели. Реализуйте поток грантов JWT в своем приложении. Таким образом ваше приложение может выдавать себя за отправителя, даже когда его нет рядом. Когда подписывающая сторона хочет подписать, ваше приложение получает URL-адрес церемонии подписания из DocuSign, а затем перенаправляет для включения подписи.
Альтернативой, которая также работает нормально, является вход отправителя в DocuSign с помощью стандартного OAuth Предоставление кода авторизации. Это предоставит вашему приложению токен доступа и токен refre sh.
Ваше приложение позволяет отправителю отправлять разработчикам с помощью токена доступа.
Позже, когда подписывающая сторона захочет sign, ваше приложение использует сохраненный в нем токен refre sh для создания нового токена доступа. Используйте токен доступа с методом API EnvelopeViews: createRecipient, чтобы получить URL-адрес церемонии подписания.