我正在使用Laravel 5.4和docusign / esign-client 3软件包。在我的网站上,我将用户重定向到Docusign中的文档,然后在他们签名后将他们重定向回我的网站,以下载和更新数据库。同时,我给他们发送电子邮件。我的问题是,如果他们单击电子邮件而不是直接从我的站点登陆文档,如何将它们重定向回我的站点?
我尝试使用方法TemplateRole.setEmbeddedRecipientStartUrl
,在将它们发送到文档之前,它确实重定向了我,但是我没有得到有关信封的任何信息。理想情况下,我想将它们直接发送到docusign,然后在单击电子邮件后签名后将它们重定向回我的网站。我该怎么做呢?或什么是正确的代码才能使它正常工作?
<?php
//fill in document fields
$text_tabs = [];
foreach($custom_fields as $custom_field_name=>$custom_field_value){
$text_tabs[] = (new \DocuSign\eSign\Model\Text())
->setTabLabel($custom_field_name)
->setValue($custom_field_value);
}
$tabs = (new \DocuSign\eSign\Model\Tabs())
->setTextTabs($text_tabs);
//end fill in document fields
// assign recipient to template role by setting name, email, and role name. Note that the
// template role name must match the placeholder role name saved in your account template.
$templateRole = (new \DocuSign\eSign\Model\TemplateRole())
->setEmail($email)
->setName($name)
//->setEmbeddedRecipientStartUrl(route("test1"))
->setEmbeddedRecipientStartUrl("SIGN_AT_DOCUSIGN")//sends user directly to docusign
->setClientUserId($rand_user_id)
->setTabs($tabs)
->setRoleName("Applicant");
//webhook config
$envelope_events = [
(new \DocuSign\eSign\Model\EnvelopeEvent())->setEnvelopeEventStatusCode("sent"),
(new \DocuSign\eSign\Model\EnvelopeEvent())->setEnvelopeEventStatusCode("delivered"),
(new \DocuSign\eSign\Model\EnvelopeEvent())->setEnvelopeEventStatusCode("completed"),
(new \DocuSign\eSign\Model\EnvelopeEvent())->setEnvelopeEventStatusCode("declined"),
(new \DocuSign\eSign\Model\EnvelopeEvent())->setEnvelopeEventStatusCode("voided"),
(new \DocuSign\eSign\Model\EnvelopeEvent())->setEnvelopeEventStatusCode("sent"),
(new \DocuSign\eSign\Model\EnvelopeEvent())->setEnvelopeEventStatusCode("sent")
];
$recipient_events = [
(new \DocuSign\eSign\Model\RecipientEvent())->setRecipientEventStatusCode("Sent"),
(new \DocuSign\eSign\Model\RecipientEvent())->setRecipientEventStatusCode("Delivered"),
(new \DocuSign\eSign\Model\RecipientEvent())->setRecipientEventStatusCode("Completed"),
(new \DocuSign\eSign\Model\RecipientEvent())->setRecipientEventStatusCode("Declined"),
(new \DocuSign\eSign\Model\RecipientEvent())->setRecipientEventStatusCode("AuthenticationFailed"),
(new \DocuSign\eSign\Model\RecipientEvent())->setRecipientEventStatusCode("AutoResponded")
];
/*NOTE *****
//make sure to add route url to $except in Http\Middleware\VerifyCsrfToken*/
$event_notification = (new \DocuSign\eSign\Model\EventNotification())
->setUrl(route("webhook"))//url webhook goes to
->setLoggingEnabled("true")
->setRequireAcknowledgment("true")
->setUseSoapInterface("false")
->setIncludeCertificateWithSoap("false")
->setSignMessageWithX509Cert("false")
->setIncludeDocuments("true")
->setIncludeEnvelopeVoidReason("true")
->setIncludeTimeZone("true")
->setIncludeSenderAccountAsCustomField("true")
->setIncludeDocumentFields("true")
->setIncludeCertificateOfCompletion("true")
->setEnvelopeEvents($envelope_events)
->setRecipientEvents($recipient_events);
//end webhook config
// instantiate a new envelope object and configure settings
$envelop_definition = (new \DocuSign\eSign\Model\EnvelopeDefinition())
->setEmailSubject("Docusign Test")
->setTemplateId($template_id)
->setTemplateRoles(array($templateRole))
//->setRecipients($recipients)
->setEventNotification($event_notification)
->setStatus("sent");// set envelope status to "sent" to immediately send the signature request
// optional envelope parameters
$options = (new \DocuSign\eSign\Api\EnvelopesApi\CreateEnvelopeOptions())
->setCdseMode(null)
->setMergeRolesOnDraft(null);
// create and send the envelope (aka signature request)
$envelopeApi = new \DocuSign\eSign\Api\EnvelopesApi($this->api_client);
$envelop_summary = $envelopeApi->createEnvelope($this->account_id, $envelop_definition, $options);
if(!empty($envelop_summary)){
$envelop_summary = json_decode($envelop_summary,true);
$recipient_view_request = ( new \DocuSign\eSign\Model\RecipientViewRequest() )
->setReturnUrl( route("return_url_for_document") )
->setClientUserId($rand_user_id)
->setAuthenticationMethod("email")
->setUserName($name)
->setEmail($email);
try{
$signing_view = $envelopeApi->createRecipientView($this->account_id, $envelop_summary["envelopeId"], $recipient_view_request);
$signing_url = $signing_view->getUrl();
$envelop_summary["signing_url"] = $signing_url;
return $envelop_summary;
} catch (\DocuSign\eSign\ApiException $e){
echo "Error connecting Docusign : " . $e->getResponseBody()->errorCode . " " . $e->getResponseBody()->message;
}
}
答案 0 :(得分:1)
我的问题是,如果他们单击电子邮件而不是直接从我的站点登陆文档,如何将它们重定向回我的站点?
使用embeddedRecipientStartURL
。为了使您的应用程序能够理解上下文,请使用documentation中所述的合并字段功能:
可以使用合并字段将信息附加到嵌入式收件人的起始URL。可用的合并字段项包括:信封ID,收件人ID,收件人名称,收件人电子邮件和customFields。
例如,使用embeddedRecipientStartURL
的{{1}}值