我有一个演示开发DocuSign帐户,因为我正在尝试使用API,以便收件人可以被定向到文件以便从发件人签名(在这种情况下发件人就是我)。每当我向API POST
获取我发送给自己的文档的收件人视图时,它就会成功,并且正确返回该URL。但是,当我向除我以外的任何人请求收件人的网址时,我收到400 Bad Call
错误。我在PHP中实现了这一点,但我也在REST API资源管理器上尝试了相同的结果。
以下是向自己发送文档时的代码。通过数据库找到$account_id
,$envelope_id
,$recipient
并返回正确的值,因此假设它们在您看到的位置正确无误:
$url = "https://demo.docusign.net/restapi/v2/accounts/".$account_id."/envelopes/$envelope_id/views/recipient";
$body = array("returnUrl" => "https://www.docusign.com/devcenter",
"authenticationMethod" => "None",
"email" => "$recipient",
"userName" => "$recipient");
$body_string = json_encode($body);
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Content-Type: application/json',
'Content-Length: '.strlen($body_string),
"Authorization: Bearer $access_token"
));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $body_string);
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if ($status != 201){
die('Could not connect to end point: '.mysqli_error($connection));
}
返回以下JSON:
{
"url": "www.urlexample.com"
}
由于默认情况下收件人未获得授权,因此在请求非我自己的收件人时,我必须将$body
更改为不仅包括"authenticationMethod"
和"returnUrl"
,还要"userId"
1}}和"recipientId"
,它们应匹配,"clientUserId"
(这将是我的开发者userId),以便DocuSign知道此请求是通过授权进行的。但是,我似乎无法实现这一目标。
这是我为$body
尝试的内容:
$url = "https://demo.docusign.net/restapi/v2/accounts/".$account_id."/envelopes/$envelope_id/views/recipient";
$body = array("authenticationMethod" => "email",
"clientUserId" => "314c7a19-49ff-4405-a958-42344273060c",
"returnUrl" => "https://www.docusign.com/devcenter",
"recipientId" => "a3f182e7-65b6-4bc1-b603-cc8ed23fed0d"
"userId" => "a3f182e7-65b6-4bc1-b603-cc8ed23fed0d"
);
此请求(替换为上一代码)返回400
错误,其中包含以下JSON:
{
"errorCode": "UNKNOWN_ENVELOPE_RECIPIENT",
"message": "The recipient you have identified is not a valid recipient of the specified envelope."
}
然而,这没有任何意义,因为"recipientId"
和"userId"
都匹配,$envelope_id
也绝对正确(我三重检查)。
BOTTOM LINE :如果收件人未获得授权,如何为收件人视图生成网址?
答案 0 :(得分:1)
假设信封已被"发送"并且没有“创造”#34;状态。尝试传递用户名&与创建的信封上的收件人匹配的电子邮件,对应于名称&电子邮件。 ClientUserId如果出现在信封的原始创建中,也必须匹配。
如果不是 - 请说明您创建信封的方式。最好的方法是捕获原始API请求日志并发布JSON:https://support.docusign.com/articles/API-Request-Logging
答案 1 :(得分:0)
要为给定信封中的收件人生成签名令牌,必须满足以下条件之一:
您能否确认以下其中一项是正确的?