我正在尝试在我们的Web应用程序中实现DocuSign嵌入式签名功能。我已经能够在应用程序中实现如下一般流程:
我在这里面临的关键问题是签名链接在5分钟后失效。
根据DocuSign文档,我尝试重新生成签名URL,如下所示:
from docusign_esign import ApiClient, EnvelopesApi, RecipientViewRequest
def generate_new_signing_url(request, document_signer):
api_client = ApiClient()
api_client.host = DOCUSIGN_URL
api_client.set_default_header("Authorization", "Bearer " + ACCESS_TOKEN)
#ACCESS_TOKEN is retrieved from the session variable
envelope_api = EnvelopesApi(api_client)
recipient_view_request = RecipientViewRequest(
authentication_method='None',
client_user_id=CLIENT_USER_ID,
recipient_id=RECIPIENT_ID,
return_url=RETURN_URL,
user_name=FULL_NAME,
email=EMAIL
)
response = envelope_api.create_recipient_view(ACCOUNT_ID,
ENVELOP_ID,recipient_view_request=recipient_view_request)
# We store the ENVELOP_ID in the database when it's created for the first time and use it to regenerate the URL
return response.url
关键问题是上述代码仅在原始创建者而不是签名者调用此代码时才起作用。理想的情况应该是,当链接在签名者的一端过期时,应该给它们提供一个新的URL来对文档进行签名。
有人遇到过类似的问题吗?请帮忙。
答案 0 :(得分:1)
正如您所指出的,签字仪式的URL仅持续5分钟。因此,必须在将签名者的浏览器重定向到签名仪式URL之前立即生成它。
您不应将签署仪式的网址提供给签署者以供单击。相反,您应该始终:
在您自己的安全数据库中,为每个延迟签名者创建一行:
列:
将引导发送给签名者,后者稍后将使用嵌入式签名仪式。使用它作为查询参数。例如:myapp.company.com?signingguid=1234
(稍后)
您的应用程序用于创建签名仪式URL的访问令牌可能需要代表信封的发件人(我不确定)或管理员。无论哪种方式,您的应用程序都可以使用JWT Grant流来模拟该DocuSign用户。
签名人本身不需要DocuSign用户帐户。