如何使用REST API为DocuSign中的收件人设置clientUserId?

时间:2016-07-15 16:41:43

标签: php json rest docusignapi

我尝试创建一个RecipientView,通过应用程序发送给创建的信封的收件人。使用DocuSign的新API,这需要userName由创建需要签名的文档的人输入,email只是收件人的电子邮件,以及{ {1}}这是一个发件人生成的字符串值,用于将收件人作为嵌入式签名者进行身份验证,以便生成RecipientView来主持签名仪式。

我需要设置clientUserId的DocuSign文档参考,但除了通过API创建信封之外,它没有提到如何来执行此操作。但是,在这种情况下,DocuSign Admin客户端将通过实际Web界面上的模板创建信封,并通过API 创建信封。

我在此处设置了生成RecipientView的代码:

clientUserId

当嵌入式签名者是管理员帐户时,此代码执行,但是当信封发送给实际收件人时则不行。在此请求之后,DocuSign返回的JSON应为:

$url = "https://demo.docusign.net/restapi/v2/accounts/$account_id/envelopes/$envelope_id/views/recipient";

$body = array("returnUrl" => "http://www.docusign.com/devcenter",
              "authenticationMethod" => "None",
              "email" => "$email",
              "userName" => "$name",
              "recipientId" => "$recipientId",
              "clientUserId" => "1000"
);

$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($conn));
}

$response = json_decode($json_response, true);
$url = $response["url"];

但是,对于不是DocuSign帐户管理员的收件人,我得到的回报是:

{
    "url": "example.example.com"
}

我认为不设置{ "errorCode": "UNKNOWN_ENVELOPE_RECIPIENT", "message": "The recipient you have identified is not a valid recipient of the specified envelope." } 是背后的原因,因为documentation说我需要设置clientUserId而不是仅仅在拨打电话时创建一个值。如何通过REST API设置收件人clientUserId

更新:在这种情况下,我不会是创建和发送信封的人。这将由我通过我的应用程序的客户端完成,其中绝大多数将很可能使用Web界面来执行此操作,而不是API。我可以访问有关每个客户端的管理员帐户的所有信息,包括集成商密钥,访问令牌,信封ID,帐户ID等。

1 个答案:

答案 0 :(得分:1)

对于嵌入式签名(又名收件人视图),您需要进行两次调用。实际上有3个电话,包括最初的登录API,但听起来你已经有了这个工作,所以我会专注于其他两个。

第1步:创建包含嵌入式收件人的信封。添加收件人时,请务必设置nameemailrecipientIdclientUserId

第2步:请求签名者的信封收件人视图。为此,您需要调用EnvelopeViews:createRecipient API,并且必须为在步骤1中设置的收件人引用相同的确切值集(即nameemailrecipientId ,和clientUserId

查看Signing from Within your App API配方以获取完整的代码示例。