我正在使用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
。但问题是邮件不会转到收件人的电子邮件地址。谢谢。(我也没有收到任何错误消息)。
答案 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以来发生的每个“Recipient Sent”和/或“Recipient Delivery Failed”事件的日志条目。
检查日志条目的内容应该可以让您确定DocuSign是否成功发送了收件人电子邮件,以及收件人电子邮件是否因无法投递而反弹。
< / LI>如果日志条目表明DocuSign正在发送收件人电子邮件并且未指示任何退回,那么电子邮件客户端可能会阻止收件人收到电子邮件(如Ergin)在他的回答中建议。)