docusign嵌入了模板

时间:2018-04-21 01:43:46

标签: python python-3.x docusignapi

我正在尝试使用模板创建嵌入式签名流程,并且我已经按照步骤进行了操作,但对于我的生活,我似乎无法将其余API用于在我创建信封后与我合作。根据我的理解,我应该通过请求收件人视图来获取签名URL,但每次我这样做时,API都会抱怨我的收件人设置不正确。我无法在信封请求中设置收件人,因为我使用的是模板。

我们要求的流程是(1)用户通过在我们的网站www.mycompany.com上输入他或她的信息开始注册过程; (2)用户完成在docusign上的签名; (3)用户被重定向到www.mycompany.com以完成注册过程。

问题:我需要做些什么来获取可用于将用户从我的网络应用重定向到docusign的网址

这是我的代码:

def create_envelope(self, template_id, client_user_id, email, full_name, next_url, **values):
    tabs = Tabs()
    tabs.text_tabs = [
        Text(tab_label=key, value=('%s' % (value,)) if not isinstance(value, str) else value )
        for key, value in values.items()
    ]
    member_role = TemplateRole(
        email=email,
        name=full_name,
        role_name='signer',
        client_user_id=client_user_id,
        tabs=tabs,            
    )
    envelope = EnvelopeDefinition(
        email_subject='%s agreement' % (full_name,),
        template_roles=[ member_role ],
        template_id=template_id,
        status='sent',
    )
    api = EnvelopesApi()        
    summary = api.create_envelope(
        settings.DOCUSIGN_ACCOUNT_ID,
        envelope_definition=envelope)
    # At this point, everything is fine, and we get a valid envelope
    # but the next call to create a recipient view fails with an HTTP 400        
    envelope_id = summary.envelope_id
    data = RecipientViewRequest(
        authentication_method='email',
        client_user_id=session_key,
        email=email,
        return_url=next_url,
        user_id=settings.DOCUSIGN_USER_ID,
    )
    response = api.create_recipient_view(
        settings.DOCUSIGN_ACCOUNT_ID,
        envelope_id,
        recipient_view_request=data)
    return response.uri

以下是创建收件人视图中的错误:

{
    "errorCode": "UNKNOWN_ENVELOPE_RECIPIENT",
     "message": "The recipient you have identified is not a valid recipient of the specified envelope."
}

如果我指定为recipient_id的{​​{1}},则会收到以下错误:

'1'

1 个答案:

答案 0 :(得分:0)

好吧,事实证明user的语义在创建信封的call inc与创建视图请求时的调用之间发生了变化。在创建视图请求的调用中,我们必须传递收件人的全名/用户ID,而不是api名称/用户ID:

data = RecipientViewRequest(
    authentication_method='email',
    client_user_id=session_key,
    email=email,
    return_url=next_url,
    user_name=full_name,
)