DocuSign - 多用户/合同的最佳选择

DocuSign - best option for multiple users / contracts

谁能告诉我设置 Docusign 的正确方法。

我的环境是一个 php/laravel/vuejs Estate Agents 站点。我们的网站被多个 agencies/branches.

使用

我们的客户(房地产经纪人)目前通过电子邮件发送收件人收到的 pdf 文档,可以打印、签名并 return。或者只是打印并 post 带有 SAE 以便 returned 签名。

我们想提供电子版,但不确定进行的最佳方式。

我需要轻松实现的是一种快速轻松地允许任何代理通过电子邮件发送任何 vendor/landlord/tenant 独特文档供他们签署的方法(销售 contract/tenancy 协议)。

在我看来,我认为我可以创建 PDF,填充自定义字段已经说明 Vendor/Landlord/Tenant,signatures/dates 的区域并通过 Docusign 将其发送给收件人然后签名。

我为 Laravel 8 找到了这个选项:-

https://blog.codehunger.in/embedded-signing-docusign-laravel/

但是,当它发送PDF时,你需要登录,添加每个字段然后发送。

考虑到上述情况,这是否意味着我们所有的代理都需要一个 Docusign 帐户才能登录,修改每个 PDF 以添加 signature/initials/date 签名,所以在签名时,所有各方(公司代理)都会收到一个签名文档的电子邮件副本?

或者,是否有更好的方法来实现 Docusign?

我看不到模板选项起作用,因为每个文档都需要填充唯一信息(地址/vendor/landlord/tenant/担保人)。

只是想找出从我们的系统中自动执行此选项的最佳方法。或者,您会推荐一个替代系统吗?

希望我已经解释得足够多了,有人可以回答!如果没有,请告诉我!

提前干杯 卡尔.

我们有一个完整的应用程序快速启动项目,它展示了您可以使用的几种不同方法,listed here。如果您还没有开发者帐户,请创建一个,然后使用此页面 select PHP 为您生成完整的应用程序。这将节省为您的机器设置集成密钥和本地重定向的时间。它将下载一个 PHP 应用程序,您可以将其用于您打算构建的特定集成的样板代码。

为了回答您的具体问题,

My environment is a php/laravel/vuejs Estate Agents site. We have our website that is used by multiple agencies/branches.

Our customers (estate agents) currently send out by email a pdf document that the recipient receives, can print out, sign and return. Or just print and post with a SAE for it to be returned signed.

We would like to offer an electronic version but not sure on the best way to proceed.

What I need to easily implement is a way to quickly and easily allow any agent to email any vendor/landlord/tenant a unique document for them to sign (sales contract/tenancy agreement).

使用所谓的信封将文档发送给签名者。生成信封对象并传递给我们的 API 以当场签署一组文档(使用重定向到 docusign 托管页面)或通过电子邮件将它们发送给收件人进行签名。 Example 2 PHP 快速入门将向您的签名者发送一个信封和一个抄送。使用自动标记,您可以指定您的供应商、房东和租户的名称和价值,并将这些传递到信封中的文件,让各方签署 and/or 接收副本。

    # document 1 (html) has sign here anchor tag **signature_1**
    # document 2 (docx) has sign here anchor tag /sn1/
    # document 3 (pdf)  has sign here anchor tag /sn1/
    #
    # The envelope has two recipients.
    # recipient 1 - signer
    # recipient 2 - cc
    # The envelope will be sent first to the signer.
    # After it is signed, a copy is sent to the cc person.
    #
    # create the envelope definition
    $envelope_definition = new EnvelopeDefinition([
       'email_subject' => 'Please sign this document set'
    ]);
    $doc1_b64 = base64_encode($this->clientService->createDocumentForEnvelope($args));
    # read files 2 and 3 from a local directory
    # The reads could raise an exception if the file is not available!
    $content_bytes = file_get_contents(self::DEMO_DOCS_PATH . $GLOBALS['DS_CONFIG']['doc_docx']);
    $doc2_b64 = base64_encode($content_bytes);
    $content_bytes = file_get_contents(self::DEMO_DOCS_PATH . $GLOBALS['DS_CONFIG']['doc_pdf']);
    $doc3_b64 = base64_encode($content_bytes);

    # Create the document models
    $document1 = new Document([  # create the DocuSign document object
        'document_base64' => $doc1_b64,
        'name' => 'Order acknowledgement',  # can be different from actual file name
        'file_extension' => 'html',  # many different document types are accepted
        'document_id' => '1'  # a label used to reference the doc
    ]);
    $document2 = new Document([  # create the DocuSign document object
        'document_base64' => $doc2_b64,
        'name' => 'Battle Plan',  # can be different from actual file name
        'file_extension' => 'docx',  # many different document types are accepted
        'document_id' => '2'  # a label used to reference the doc
    ]);
    $document3 = new Document([  # create the DocuSign document object
        'document_base64' => $doc3_b64,
        'name' => 'Lorem Ipsum',  # can be different from actual file name
        'file_extension' => 'pdf',  # many different document types are accepted
        'document_id' => '3'  # a label used to reference the doc
    ]);
    # The order in the docs array determines the order in the envelope
    $envelope_definition->setDocuments([$document1, $document2, $document3]);


    # Create the signer recipient model
    $signer1 = new Signer([
        'email' => $args['signer_email'], 'name' => $args['signer_name'],
        'recipient_id' => "1", 'routing_order' => "1"]);
    # routingOrder (lower means earlier) determines the order of deliveries
    # to the recipients. Parallel routing order is supported by using the
    # same integer as the order for two or more recipients.

    # create a cc recipient to receive a copy of the documents
    $cc1 = new CarbonCopy([
        'email' => $args['cc_email'], 'name' => $args['cc_name'],
        'recipient_id' => "2", 'routing_order' => "2"]);

    # Create signHere fields (also known as tabs) on the documents,
    # We're using anchor (autoPlace) positioning
    #
    # The DocuSign platform searches throughout your envelope's
    # documents for matching anchor strings. So the
    # signHere2 tab will be used in both document 2 and 3 since they
    #  use the same anchor string for their "signer 1" tabs.
    $sign_here1 = new SignHere([
        'anchor_string' => '**signature_1**', 'anchor_units' => 'pixels',
        'anchor_y_offset' => '10', 'anchor_x_offset' => '20']);
    $sign_here2 = new SignHere([
        'anchor_string' => '/sn1/', 'anchor_units' =>  'pixels',
        'anchor_y_offset' => '10', 'anchor_x_offset' => '20']);

    # Add the tabs model (including the sign_here tabs) to the signer
    # The Tabs object wants arrays of the different field/tab types
    $signer1->setTabs(new Tabs([
        'sign_here_tabs' => [$sign_here1, $sign_here2]]));

    # Add the recipients to the envelope object
    $recipients = new Recipients([
        'signers' => [$signer1], 'carbon_copies' => [$cc1]]);
    $envelope_definition->setRecipients($recipients);

    # Request that the envelope be sent by setting |status| to "sent".
    # To request that the envelope be created as a draft, set to "created"
    $envelope_definition->setStatus($args["status"]);

    return $envelope_definition;

PHP Quickstart 本身是一个完全可用的 MVC 应用程序。您很可能想查看示例 2 的视图代码,它通过 twig 模板充当 html 表单。根据您正在做的事情,您将使用 vendor/landlord 信息预先填充此数据,并且您将有一些租户的输入字段(或根据您的业务需要的一些组合)。然后,您的表单将作为 post 请求在控制器上触发,然后触发发送信封。对于 OAuth,将 JWT Grant authentication 与单个管理员帐户一起使用,以便您可以根据需要在整个应用程序中生成新的访问令牌。