0

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

4

4 回答 4

2

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

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

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

在 Adob​​e Sign 本身为 PHP 提供 SDK 之前,您可以使用任何基于 PHP 的第三方 Rest API 客户端库进行 Adob​​e Sign API 调用。

于 2016-05-05T08:35:46.987 回答
1

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

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

这就是我配置 $provider 的方式,调用 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'
    ]
    ]);
于 2019-04-12T18:37:38.353 回答
0

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

于 2016-10-18T13:41:42.507 回答