【问题标题】:How to set clientUserId for a Recipient in DocuSign using the REST API?如何使用 REST API 在 DocuSign 中为收件人设置 clientUserId?
【发布时间】:2016-07-15 16:41:42
【问题描述】:

我正在尝试创建一个 RecipientView 以通过应用程序发送给已创建信封的收件人。使用 DocuSign 的较新 API,这需要一个 userName(由创建需要签名的文档的人输入)、一个 email(只是收件人的电子邮件)和一个 clientUserId(这是发件人生成的字符串)将收件人身份验证为嵌入式签名者的值,以便可以生成 RecipientView 来主持签名仪式。

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

我生成 RecipientView 的代码全部设置在这里:

$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 返回的 JSON 应该是:

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

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

{
    "errorCode": "UNKNOWN_ENVELOPE_RECIPIENT",
    "message": "The recipient you have identified is not a valid recipient of the 
               specified envelope."
}

我相信不设置clientUserId 是这背后的原因,因为documentation 说我需要设置clientUserId 而不仅仅是在拨打电话时创建一个值。如何通过 REST API 设置收件人的clientUserId

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

【问题讨论】:

    标签: php json rest docusignapi


    【解决方案1】:

    对于嵌入式签名(又名收件人视图),您需要拨打两个电话。实际上,包括初始登录 API 在内的 3 个调用,但听起来您已经完成了这项工作,所以我将专注于其他两个。

    第 1 步:创建一个嵌入收件人的信封。添加收件人时,请确保设置他们的nameemailrecipientIdclientUserId

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

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

    【讨论】:

    • 我犯的错误是没有设置clientUserId。由于在创建信封时我无法控制该字段,因此我必须在调用嵌入式签名者 url 之前设置 clientUserId。
    • 但是当我们通过DocuSign网站创建信封时,如何防止向嵌入式签名者发送电子邮件?
    猜你喜欢
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    相关资源
    最近更新 更多