为什么DocuSign不会为自己以外的收件人返回收件人查看网址?

时间:2016-07-13 16:58:02

标签: php json post docusignapi

我有一个演示开发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 :如果收件人未获得授权,如何为收件人视图生成网址?

2 个答案:

答案 0 :(得分:1)

假设信封已被"发送"并且没有“创造”#34;状态。尝试传递用户名&与创建的信封上的收件人匹配的电子邮件,对应于名称&电子邮件。 ClientUserId如果出现在信封的原始创建中,也必须匹配。

如果不是 - 请说明您创建信封的方式。最好的方法是捕获原始API请求日志并发布JSON:https://support.docusign.com/articles/API-Request-Logging

答案 1 :(得分:0)

要为给定信封中的收件人生成签名令牌,必须满足以下条件之一:

  1. 您需要成为信封的发件人。
  2. 您需要成为发送帐户的管理员。
  3. 您能否确认以下其中一项是正确的?