嵌入式发送docusign中的角色名称

时间:2013-11-22 11:57:19

标签: php curl docusignapi

我正在使用docusign rest api。我正在尝试创建一个模板,然后使用嵌入式发送。

这是我的代码:

创建模板:

$header = "<DocuSignCredentials><Username>" . $email . "</Username><Password>" . $password . "</Password><IntegratorKey>" . $integratorKey . "</IntegratorKey></DocuSignCredentials>";    

$url = "https://demo.docusign.net/restapi/v2/login_information";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("X-DocuSign-Authentication: $header"));

$json_response = curl_exec($curl); 
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ( $status != 200 ) {
  $status = 'notok';
}

$response = json_decode($json_response, true); 

if( (isset($response['errorCode']))  && ($response['errorCode'] == 'USER_LACKS_PERMISSIONS')) {
  echo $msg = 'This user lacks sufficient permissions';
  $_SESSION['msg_frm_apd'] = $msg;

}



 $accountId = $response["loginAccounts"][0]["accountId"];
$baseUrl = $response["loginAccounts"][0]["baseUrl"];
curl_close($curl);

 $template_name = "template_" . time();

$data = "{
  \"emailBlurb\":\"String content\",
\"emailSubject\":\"String content\",
  \"documents\": [{
\"documentId\": \"1\",
\"name\": \"document.pdf\"
}],
\"recipients\": {
\"signers\": [{
\"recipientId\": \"1\",
\"roleName\": \"Signer 1\"
}]
},
\"envelopeTemplateDefinition\": {
\"description\": \"Description\",
\"name\": \"$template_name\"
}
}";  





$file_contents = file_get_contents("uploads/envelopes/" . $file_name);

$requestBody = "\r\n"
."\r\n"
."--myboundary\r\n"
."Content-Type: application/json\r\n"
."Content-Disposition: form-data\r\n"
."\r\n"
."$data\r\n"
."--myboundary\r\n"
."Content-Type:application/pdf\r\n"
."Content-Disposition: file; filename=\”document.pdf\"; documentid=1 \r\n"
."\r\n"
."$file_contents\r\n"
."--myboundary--\r\n"
."\r\n";


$url = "https://demo.docusign.net/restapi/v2/accounts/376082/templates";


$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $requestBody);                                                                  
curl_setopt($curl, CURLOPT_HTTPHEADER, array(                                                                          
  'Content-Type: multipart/form-data;boundary=myboundary',
  'Content-Length: ' . strlen($requestBody),
  "X-DocuSign-Authentication: $header" )                                                                       
);

$json_response = curl_exec($curl); 
$response = json_decode($json_response, true);


$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ( $status != 201 ) {
  echo "error calling webservice, status is:" . $status . "\nerror text is --> ";
  print_r($json_response); echo "\n";
  exit(-1);
}

$response = json_decode($json_response, true);

嵌入式发送:

$templateId = $response['templateId'];   // provide a valid templateId of a template in your account

  $clientUserId = "1234"; 
  $templateRoleName = "Signer 1";

$data = array("accountId" => $accountId, 
    "emailSubject" => "DocuSign API - Embedded Sending Example",
    "templateId" => $templateId, 
    "templateRoles" => array(
      array( "roleName" => $templateRoleName, "email" => $recipient_email, "name" => $recipient_name, "clientUserId" => $clientUserId )),
    "status" => "created");                                                                    



  $data_string = json_encode($data);  
  $curl = curl_init($baseUrl . "/envelopes" );
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);                                                                  
  curl_setopt($curl, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string),
    "X-DocuSign-Authentication: $header" )                                                                docusign       
  );

  $json_response = curl_exec($curl);
  $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  if ( $status != 201 ) {
    echo "error calling webservice, status is:" . $status . "\nerror text is --> ";
    print_r($json_response); echo "\n";
    exit(-1);
  }

  $response = json_decode($json_response, true);
  $envelopeId = $response["envelopeId"];
  curl_close($curl);

  //--- display results
 // echo "Envelope created! Envelope ID: " . $envelopeId . "\n"; 

  /////////////////////////////////////////////////////////////////////////////////////////////////
  // STEP 3 - Get the Embedded Sending View (aka the "tag-and-send" view)
  /////////////////////////////////////////////////////////////////////////////////////////////////
  /*$data = array("returnUrl" => "http://www.docusign.com/devcenter");*/
  $returnUrl = $SITE_URL . "/docusign_return.php";
  $data = array("returnUrl" => $returnUrl);                                                                    
  $data_string = json_encode($data);                                                                                   
  $curl = curl_init($baseUrl . "/envelopes/$envelopeId/views/sender" );
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);                                                                  
  curl_setopt($curl, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: application/json',                                                                                
    'Content-Length: ' . strlen($data_string),
    "X-DocuSign-Authentication: $header" )                                                                       
  );

  $json_response = curl_exec($curl);
  $response = json_decode($json_response, true);
  $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
  if ( $status != 201 ) {
    echo "error calling webservice, status is:" . $status . "\nerror text is --> ";
    print_r($json_response); echo "\n";
    exit(-1);
  }

  $url = urlencode($response["url"]);

当我点击上面的网址时,我会收到一个页面,我可以在其中标记并发送文档。有一个电子邮件地址 此页面中的字段会自动填充$recipient_email。但问题是邮件不会转到收件人的电子邮件地址。谢谢。(我也没有收到任何错误消息)。

2 个答案:

答案 0 :(得分:1)

您的代码没有问题,并且正如预期的那样完美运行。我可以说你正在使用DocuSign的API Walkthroughs示例代码。

如果您说一切正常并且没有错误,但是在导航到嵌入式发送URL并发送文档进行签名之后,收件人没有收到我会检查安全软件,垃圾邮件/垃圾邮件的电子邮件邮件过滤器,防火墙等等。 DocuSign服务如此广泛使用,如果电子邮件没有出现在签名请求中,那么很快就会有一个很大的臭味,最重要的是我只是做了一个测试,我的电子邮件出来就好了。

如上所述,如果您确定电子邮件地址是正确的,并且您正在通过用户界面点击SEND按钮,我会检查安全软件,垃圾邮件/垃圾邮件过滤器,防火墙以及其他任何可能阻止它的内容。来自您的电子邮件。

答案 1 :(得分:1)

解决电子邮件传送问题的另一个建议:使用DocuSign Connect。如果您的帐户配置正确,您可以启用Connect并使用Connect日志来检测收件人电子邮件是否无法送达(即,当发送到该地址时DocuSign收到'退回')。

  • 在DocuSign中创建自定义连接配置,如本指南中所述:http://www.docusign.com/sites/default/files/DocuSign_Connect_Service_Guide.pdf

  • 在您创建的“连接配置”中,您可以指定任何网址作为要发布到的网址 - 您要为此次测试尝试执行的操作就是让Connect发送“收件人已发送”事件和“收件人传递失败”事件的通知(并为其发送的通知创建日志条目) - 您指定的端点无法接收/处理Connect消息并不重要

  • 在您创建的Connect Configuration中,请务必选择我在此处突出显示的选项(如前所述,您可以使用任何网址 - 我恰好选择了google.com):{{ 0}}

  • 如上所述创建并保存连接配置后,请完成您在问题中描述的过程以创建/发送信封。

  • 发送信封后,登录DocuSign Web控制台(以管理员身份),然后查看Connect日志条目。 (即导航至首选项&gt;&gt;连接&gt;&gt;日志 Connect Configuration settings

  • 您应该会看到自您创建/启用Connect Configuration以来发生的每个“Recipient Sent”和/或“Recipient Delivery Failed”事件的日志条目。 Connect Logs link

  • 检查日志条目的内容应该可以让您确定DocuSign是否成功发送了收件人电子邮件,以及收件人电子邮件是否因无法投递而反弹。

    < / LI>

如果日志条目表明DocuSign正在发送收件人电子邮件并且未指示任何退回,那么电子邮件客户端可能会阻止收件人收到电子邮件(如Ergin)在他的回答中建议。)