【问题标题】:Adobe EchoSign API v5 PHP sampleAdobe EchoSign API v5 PHP 示例
【发布时间】:2020-02-11 23:29:54
【问题描述】:

如何向某人发送使用 Adob​​e EchoSign API v5 进行签名的文档?对于 API 版本 5,我只能找到一个使用 Java 的示例。但我需要它在 PHP 中。如果我使用任何早期版本,它需要一个“API 密钥”,但在当前版本的 API 中,我找不到我的 API 密钥。我什至在 PHP 中找不到任何示例代码。

【问题讨论】:

    标签: php api oauth-2.0 echosign


    【解决方案1】:

    当前版本中不再有 API 密钥,因为它现在使用“访问令牌”。这就是我在我的 PHP 应用程序上所做的。

    1. 存储应用程序 ID 和客户端密钥并将其用于请求访问令牌。
    2. 如果请求成功,请将访问令牌和刷新令牌以及时间戳存储在您的数据库中。
    3. 访问令牌将在 1 小时后过期,因此您必须检查它是否已经过期。
    4. 如果访问令牌已过期。请求刷新令牌,它应该返回一个新的访问令牌。
    5. 用您收到的新访问令牌替换您存储的访问令牌并重新获得对 API 的访问权限。

    【讨论】:

      【解决方案2】:

      Adobe Sign 已更改其身份验证流程,不再使用“API 密钥”,而是使用更安全的“访问令牌”。

      您可以将任何基于 PHP 的第三方 rest API 客户端库用于 Adob​​e Sign API 调用,直到 Adob​​e Sign 本身提供 PHP 的 SDK。

      【讨论】:

      • 如何获取“Access-Token”?我可以在没有誓言的情况下获得它吗?还是我的所有应用用户都需要登录 Adob​​e?
      【解决方案3】:

      我花了一段时间,但我得到了它,我希望它可以帮助其他人,在使用 composer (https://github.com/kevinem/adobe-sign-php/) 安装后,你需要创建你的沙盒页面,对我来说是 /vendor/kevinem/ 中的 index.php adobe-sign-php/ 那么你需要在我的例子中包含 2 个类 Adob​​eSign 和 Psr7,因为我需要上传 2 个文档。

      require "../../../vendor/autoload.php"; 
      use KevinEm\AdobeSign\AdobeSign;
      use GuzzleHttp\Psr7;
      

      这是我配置我的 $provider 的方式,call backurl 必须与 adobe 后端中的相同,并且我在 Adob​​eSign.php 中手动更改了数据中心

      $provider = new KevinEm\OAuth2\Client\AdobeSign([
      'clientId'          => 'YOUR_APP_ID',
      'clientSecret'      => 'YOUR_APP_SECRET',
      'redirectUri'       => 'YOUR_BACK_URL', 
      'dataCenter'        => 'secure.na2', 
      'scope'             => ['user_login:self',
                            'agreement_write:self',
                            'widget_write:self',
                            'library_write:self',
                            'agreement_send:self'
                            ]
       ]);
      

      然后您需要创建一个包含所有 .pdf 文档 URL 的数组。我叫 $archivos。

      $accessToken = $adobeSign->getAccessToken($_GET['code']);
      $adobeSign->setAccessToken($accessToken->getToken());
      $todosDoc = array();
      foreach ($archivos as $doc) {
        $file_path = __DIR__.$doc;
        $file_stream = Psr7\FnStream::decorate(Psr7\stream_for(file_get_contents($file_path)), [
            'getMetadata' => function() use ($file_path) {
                return $file_path;
            }
        ]);
        $multipart_stream   = new Psr7\MultipartStream([
            [
                'name'     => 'File',
                'contents' => $file_stream
            ]
        ]);
        $transient_document = $adobeSign->uploadTransientDocument($multipart_stream);
        array_push($todosDoc, $transient_document);
      }
      
      $adobeSign->createAgreement([
          'documentCreationInfo' => [
              'fileInfos'         => $todosDoc,
              'name'              => 'My Document Test',
              'signatureType'     => 'ESIGN',
              'recipientSetInfos' => [
                  'recipientSetMemberInfos' => [
                      'email' => 'orlando@yoursigner.com'
                  ],
                  'recipientSetRole'        => [
                      'SIGNER'
                  ]
              ],
              'mergeFieldInfo'    => [
                  [
                      'fieldName'    => 'Name',
                      'defaultValue' => 'John Doe'
                  ]
              ],
              'signatureFlow'     => 'SENDER_SIGNATURE_NOT_REQUIRED'
          ]
          ]);
      

      【讨论】:

      • 嗨,我不明白如何在 PHP 中使用 adobe 标志。我需要将 PDF 发送给某人。如何使用 PHP 添加符号字段?!可能吗?以及如何接收签名的 PDF?人必须使用电子邮件将其发回还是有自动方式?
      • 你在哪里使用 $provider var?我试过你的代码,但我得到错误 Uncaught BadMethodCallException: Required parameter not pass: "code"
      【解决方案4】:

      Adobe eSign 现在使用 oAuth 进行身份验证,并且针对不同的语言有很多不同的库

      【讨论】:

        猜你喜欢
        • 2014-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多