Php 从模板创建的信封中未显示选项卡
我正在尝试创建一个基于模板的嵌入式信封。我遇到的问题是,在创建的信封中,我创建的选项卡丢失了 我四处搜索,找到了角色分配,并使用了它,但仍然没有运气。当我查看XML时,角色与模板以及路由顺序和ID相同 我尝试设置模板,以便无法删除任何收件人,但出现错误: 未捕获的SoapFault异常:Php 从模板创建的信封中未显示选项卡,php,docusignapi,Php,Docusignapi,我正在尝试创建一个基于模板的嵌入式信封。我遇到的问题是,在创建的信封中,我创建的选项卡丢失了 我四处搜索,找到了角色分配,并使用了它,但仍然没有运气。当我查看XML时,角色与模板以及路由顺序和ID相同 我尝试设置模板,以便无法删除任何收件人,但出现错误: 未捕获的SoapFault异常:[soap:Client]未提供模板中所需的收件人。收件人对模板测试表单中的角色、签名人不满意 这是我创建和发送信封的PHP,其中许多代码来自文档: // Get the recipient from a pos
[soap:Client]未提供模板中所需的收件人。收件人对模板测试表单中的角色、签名人不满意
这是我创建和发送信封的PHP,其中许多代码来自文档:
// Get the recipient from a post
$rcp1 = new Recipient(); // First recipient to put in recipient array
$rcp1->UserName = $_POST['Name'];
$rcp1->Email = $_POST['Email'];
$rcp1->Type = RecipientTypeCode::Signer;
$rcp1->ID = "1";
$rcp1->RoutingOrder = 1;
$rcp1->CaptiveInfo = new RecipientCaptiveInfo();
$rcp1->CaptiveInfo->ClientUserId = 1;
$rcp1->RoleName = "Signer";
$rcp1->RequireIDLookup = FALSE;
// Create Role Assignments
$assign = new TemplateReferenceRoleAssignment();
$assign->RecipientID = $rcp1->ID;
$assign->RoleName = $rcp1->RoleName;
// Use a server-side template
$templateRef = new TemplateReference();
$templateRef->TemplateLocation = TemplateLocationCode::Server;
$templateRef->RoleAssignments = $assign;
$templateRef->Template = "****";
// Construct the envelope info
$envInfo = new EnvelopeInformation();
$envInfo->AccountId = $AccountID;
$envInfo->Subject = "This is the Subject";
$envInfo->EmailBlurb = "I have no Idea What a blurb is";
// Send creates draft with all the template info
$createEnvelopeFromTemplatesparams = new CreateEnvelopeFromTemplates();
$createEnvelopeFromTemplatesparams->TemplateReferences = array($templateRef);
$createEnvelopeFromTemplatesparams->Recipients = array($rcp1);
$createEnvelopeFromTemplatesparams->EnvelopeInformation = $envInfo;
$createEnvelopeFromTemplatesparams->ActivateEnvelope = true;
$env = $api->CreateEnvelopeFromTemplates($createEnvelopeFromTemplatesparams);
$envStatus = $env->CreateEnvelopeFromTemplatesResult;
// Construct the recipient token authentication assertion and specify
// ID, start time, method, and domain
$assertion = new RequestRecipientTokenAuthenticationAssertion();
$assertion->AssertionID = guid();
$assertion->AuthenticationInstant = nowXsdDate();
$assertion->AuthenticationMethod = RequestRecipientTokenAuthenticationAssertionAuthenticationMethod::Password;
$assertion->SecurityDomain = "Request Recipient Token Test";
// Construct the URLs based on UserName
$recip = $envStatus->RecipientStatuses->RecipientStatus[0];
$urls = new RequestRecipientTokenClientURLs();
$urlbase = getCallbackURL('pop.php');
$urls->OnSigningComplete = $urlbase . "?event=SignComplete&uname=" . $recip->UserName;
$urls->OnViewingComplete = $urlbase . "?event=ViewComplete&uname=" . $recip->UserName;
$urls->OnCancel = $urlbase . "?event=Cancel&uname=" . $recip->UserName;
$urls->OnDecline = $urlbase . "?event=Decline&uname=" . $recip->UserName;
$urls->OnSessionTimeout = $urlbase . "?event=Timeout&uname=" . $recip->UserName;
$urls->OnTTLExpired = $urlbase . "?event=TTLExpired&uname=" . $recip->UserName;
$urls->OnIdCheckFailed = $urlbase . "?event=IDCheck&uname=" . $recip->UserName;
$urls->OnAccessCodeFailed = $urlbase . "?event=AccesssCode&uname=" . $recip->UserName;
$urls->OnException = $urlbase . "?event=Exception&uname=" . $recip->UserName;
// Send
$requestRecipientTokenparams = new RequestRecipientToken();
$requestRecipientTokenparams->EnvelopeID = $envStatus->EnvelopeID;
$requestRecipientTokenparams->ClientUserID = $recip->ClientUserId;
$requestRecipientTokenparams->Username = $recip->UserName;
$requestRecipientTokenparams->Email = $recip->Email;
$requestRecipientTokenparams->AuthenticationAssertion = $assertion;
$requestRecipientTokenparams->ClientURLs = $urls;
$response = $api->RequestRecipientToken($requestRecipientTokenparams);
$tokenUrl = $response->RequestRecipientTokenResult;
echo '<iframe src="' . $tokenUrl . '" width="100%" height="720px"></iframe>';
这可能是因为您将templateRoleAssignments设置为对象而不是数组。由于您使用的是SOAP api而不是REST,您在Github上见过DocuSign SOAP SDK吗?它有5种不同环境的示例代码和项目,包括PHP(
PHP
、Java
、C
、Ruby
、以及Salesforce
):
查看PHP项目中定义的函数,我看到以下内容:
function createFinalRoleAssignments($recipients) {
$roleAssignments[] = new TemplateReferenceRoleAssignment();
foreach ($recipients as $r) {
$assign = new TemplateReferenceRoleAssignment();
$assign->RecipientID = $r->ID;
$assign->RoleName = $r->RoleName;
array_push($roleAssignments, $assign);
}
// eliminate 0th element
array_shift($roleAssignments);
return $roleAssignments;
}
请注意,
$roleasignments
是如何使用方括号将其声明为数组的[]
,我有一种强烈的感觉,那就是它导致了您的错误。尝试以同样的方式定义你的角色分配,这可能会奏效 我没有看到任何明显的错误,只是再次检查您是否确定您所引用的模板上的角色名称设置为签名者
?因为您正在设置$rcp1->RoleName=“Signer”代码>然后模板中保存的角色名称需要完全匹配。添加了直接从模板中获取的我的收件人信息。谢谢!成功了。我最初查看了示例文件,认为因为我只担心一个收件人,所以我不需要数组。酷,无论如何,你可以接受并投票支持我的答案吗?:)Thx-麦角蛋白
function createFinalRoleAssignments($recipients) {
$roleAssignments[] = new TemplateReferenceRoleAssignment();
foreach ($recipients as $r) {
$assign = new TemplateReferenceRoleAssignment();
$assign->RecipientID = $r->ID;
$assign->RoleName = $r->RoleName;
array_push($roleAssignments, $assign);
}
// eliminate 0th element
array_shift($roleAssignments);
return $roleAssignments;
}