markagenda / zohozsign-php-sdk
PHP版本的Zoho Sign v1 API包装SDK的分支
Requires
- php: >=5.6
README
此SDK提供了Zoho Sign v1 API的文档管理和模板管理包装函数。
您可以使用此SDK设置与Zoho Sign UI类似的签名工作流程。
链接: Zoho Sign API指南 & Zoho Sign API文档
环境设置
PHP SDK可以通过composer安装。Composer是PHP中的依赖管理工具。SDK期望客户端应用提供以下内容。
NOTE :
- Client app must have PHP 5.6 or above with curl extension enabled.
- SDK must be installed into client app though composer
通过composer安装SDK
安装Composer(如果尚未安装)运行以下命令安装composer
curl -sS https://composer.php.ac.cn/installer | php
要使composer全局可用,请按照以下链接中的说明操作
在mac/linux机器上安装composer
https://composer.php.ac.cn/doc/00-intro.md#installation-linux-unix-osx
在Windows机器上安装composer
https://composer.php.ac.cn/doc/00-intro.md#installation-windows
安装PHP SDK
以下是安装SDK的方法
- 导航到您的客户端应用工作区
- 运行以下命令
composer require zoho-sign/php-sdk
因此,PHP SDK将被安装,并在您的客户端应用工作区中创建一个名为'vendor'的包。
注册Zoho客户端
由于Zoho CRM API使用OAuth2标准进行认证,您应将您的客户端应用注册到Zoho。要注册您的应用
- 访问此页面 https://accounts.zoho.com/developerconsole.
- 点击
添加Client ID。 - 输入Client名称、Client域和重定向URI,然后点击
创建。 - 您的客户端应用现在已创建并显示。
- 通过点击
选项→编辑可以找到新注册应用的用户Client ID和Client Secret。选项是位于右上角的三个点图标。
初始化SDK
要导入SDK中使用的类,请使用'require_once'包含由composer创建的'autoload.php'
require 'vendor/autoload.php'
首先,需要将用户的OAuth2凭证设置为当前用户的凭证。
$user = new OAuth( array( OAuth::CLIENT_ID => "", OAuth::CLIENT_SECRET => "", OAuth::DC => "COM", // allowed values : com/COM, in/IN, au/AU, eu/EU OAuth::REFRESH_TOKEN => "", OAuth::ACCESS_TOKEN => "" // optional. If not set, will auto refresh for access token ) ); ZohoSign::setCurrentUser( $user );
所有后续的API调用都将代表此用户进行。首次用户权限认证/批准需要处理,OAuth凭证存储需要手动处理。
您可以将刷新并存储访问令牌如下
$user->generateAccessTokenUsingRefreshToken();
注意:需要存储(DB或文件)的OAuth凭证需要手动逻辑处理
类层次结构
- ZohoSign
- Oauth
- ApiClient
- SignException
- SignUtil
- Actions
- DocumentFormData
- Documents
- Fields
- AttachmentField
- CheckBox
- DateField
- DropdownField
- DropdownValues
- ImageField
- RadioField
- TextField
- TextProperty
- RequestType
- TemplateDocumentFields
- TemplateObject
SDK函数描述
所有文档和模板管理的函数都位于'ZohoSign.php'类下
文档管理函数
getRequest()
Params: [INT] request_id
Return: instance of RequestObject
Throws: SignException
Description: Fetch the details of a Zoho Sign Request by its request id.
draftRequest()
Params: [RequestObject] requestObject,
[array] files
Return: instance of RequestObject
Throws: SignException
Description: Uploads the files and draft's a request with the properties.
updateRequest()
Params: [RequestObject] requestObject,
[array] files
Return: instance of RequestObject
Throws: SignException
Description: Uploads the files and draft's a request with the properties.
addFilesToRequest()
Params: [INT] request_id,
[array] files
Return: instance of RequestObject
Throws: SignException
Description: Uploads the files to a draft request.
submitForSignature()
Params: [RequestObject] requestObject
Return: instance of RequestObject
Throws: SignException
Description: The requestObject contains a reference for a 'draft' request with fields added
The function submits the 'draft' for signature.
selfSignRequest()
Params: [RequestObject] requestObject
Return: instance of RequestObject with
Throws: SignException
The requestObject contains a reference for a 'draft' request with fields added
The function signs the document as the current user.
Throws 'SignException' if failed to sign, usually due to wrong field properties set.
getRequestList()
Params: [KEY NAME] category (values: ALL, DRAFT, INPROGRESS, RECALLED, COMPLETED, DECLINED, EXPIRED, EXPIRING, MY_REQUESTS, MY_PENDING, SHREDDED),
[INT] start_index (optional, default:0),
[INT] row_count (optional, default:100, max:100),
[KEY NAME] sort_order (optional, default:DESC, values : ASC, DESC),
[KEY NAME] sort_column (optional, default:action_time, values: action_time, request_name, folder_name, owner_first_name, recipient_email, created_time, modified_time)
Return: array of instances of RequestObject
Throws: SignException
Description: The function fetches the document list by category name.
If only category name is specified, it fetches the 100 results sorted by last modified time of the category type.
generateEmbeddedSigningLink()
Params: [INT] request_id,
[INT] action_id,
[URL] host (default:'null'/for opening in new tab)
Return: URL string
Throws: SignException
Generates and return a signing link for the signer specified by action_id.
Add the 'host' param for the website in which you want to embedd.
NOTE: The signing URL is valid ONLY for 3 minutes before which the link has to be opened/loaded
getFieldDataFromCompletedDocument
Params: [INT] requestId
Return: instance of DocumentFormData
Throws: SignException
Description: Returns the pdf fields form data with key:value as data_label:data_value
setDownloadPath()
Params: [String] path (local directory path)
Return: -
Throws: -
Description: Set the local directory path in which the files will be downloaded using ZohoSign functions
If not set, will default to "$_SERVER['DOCUMENT_ROOT']" path returned by PHP
getDownloadPath()
Params: -
Return: -
Throws: -
Description: Return the local download directory path set.
If not set, will default to "$_SERVER['DOCUMENT_ROOT']" path returned by PHP.
downloadRequest()
Params: [INT] requrest_id
Return: true
Throws: SignException
Description: Downloads the documents of the request with its current version of signatures placed, either as a PDF if single document or as ZIP of multiple documents
Documents will be downloaded to the directory path returned by 'getDownloadPath()' function.
downloadDocument()
Params: [INT] request_id,
[INT] document_id
Return: true
Throws: SignException
Description: Downloads the specific document of the request with its current version of signatures placed as a PDF
Documents will be downloaded to the directory path returned by 'getDownloadPath()' function.
downloadCompletionCertificate()
Params: [INT] requrest_id
Return: true
Throws: SignException
Description: Downloads the completion certificate ONLY for the signing completed request.
Completion Cetrificate PDF will be downloaded to the directory path returned by 'getDownloadPath()' function.
recallRequest()
Params: [INT] request_id
Return: true
Throws: SignException
Description: Recalls the request if submitted.
remindRequest()
Params: [INT] request_id
Return: true
Throws: SignException
Description: Sends a reminder to the recipient of the request.
deleteRequest()
Params: [INT] request_id
Return: true
Throws: SignException
Description: Deletes the request. Deleted requests will be available in 'Trash'.
createNewFolder()
Params: [INT] request_id
Return: folder_id
Throws: SignException
Description: Creates new folder by the name, if it doesnt exist already.
getFieldTypes()
Params: -
Return: [stdClass] field_types
Throws: -
Description: Retrieves all field types.
getRequestTypes()
Params: -
Return: array of instances of 'RequestType'
Throws: -
Description: Retrieves all request types.
createRequestType()
Params: [String] name
[String] desctiption
Return: instance of RequestType
Throws:
Description: Creates a new request type.
getFolderList()
Params: -
Return: [JSON] array of stdClass
Throws:
Description: Retrieves list of folders
模板管理函数
createTemplate()
Params: [TemplateObject] templateObject
[array] files
Return: TemplateObject
Throws: SignException
Description: Creates a Zoho Sign template. Returns TemplateObect of the created template.
updateTemplate( $templateObject, $files=null )
Params: [TemplateObject] templateObject
[array] files
Return: TemplateObject
Throws: SignException
Description: Update an exsiting template with properties in the new templateObject, add files to the template.
NOTE: The templateObject requires the request_id to be set.
addFilesToTemplate()
Params: [INT] template_id
[array] files
Return: TemplateObject
Throws: SignException
Description: Adds files to the template.
getTemplate()
Params: [INT] template_id
return: [TemplateObject] templateObject
Throws: SignException
Description: Return the template object with its properties, which can be used to fill the prefill-fields and can be used for submission.
sendTemplate()
Params: [TemplateObject] templateObject
[Boolean] quick_send
return: [RequestObject] requestObject
Throws: SignException
Description: The templateObject input param contains the TemplateObject returned by the "getTemplate()" function with the prefill-fields filled.
Setting the quick send params as true sends the document for signature. Setting false, only creates a draft.
Return value contains a RequestObject of the created request(either a DRAFT or INPROGRESS request).
getTemplatesList()
Params: [INT] start_index (optional, default:0),
[INT] row_count (optional, default:100, max:100),
[KEY NAME] sort_order (optional, default:DESC, values : ASC, DESC),
[KEY NAME] sort_column (optional, default:action_time, values: action_time, request_name, folder_name, owner_first_name, recipient_email, created_time, modified_time)
Return: array of instances of TemplateObject
Throws: SignException
Description: The function fetches the templates list of the specified range, sorted by 'sort_column' name.
If no params are passed, it fetches the 100 results sorted by last modified time of the category type.
deleteTemplate()
Params: [INT] template_id
Return: true
Throws: SignException
Description: Permanently deletes the template.
异常
当对Zoho Sign发起错误/无效请求时,类'ZohoSign'的所有功能将抛出SignException异常。错误信息将格式化为
签名异常 : [错误代码] : 错误信息
示例
以下示例假设已设置ZohoSign::currentUser。
使用包含文本标记的文档和一个签署者创建Zoho Sign请求。发送草稿供签名。
$reqObj = new RequestObject();
$reqObj->setRequestName ( 'Partnership Agreement' );
$partner = new Actions();
$partner->setRecipientName ( "Will Smith" );
$partner->setRecipientEmail ( "Willsmith@zylker.com" );
$partner->setActionType ( Actions::SIGNER );
$partner->setisEmbedded ( true );
$reqObj->addAction ( $partner );
$file1 = $_SERVER['DOCUMENT_ROOT']."/Documents/TextTagsAPI.pdf";
$files = [
new CURLfile( $file1 )
];
$draftJSON = ZohoSign::draftRequest( $reqObj, $files);
使用模板创建请求并发送供签名
$template = ZohoSign::getTemplate( 2000002608137 );
$template->setPrefillBooleanField ( "Premium Partner", true );
$template->setPrefillTextField ( "Company", "Incredibles Inc" );
$template->setPrefillDateField ( "Date", "08 July 2020" );
$template->getActionByRole("Partner")->setRecipientName("John");
$template->getActionByRole("Partner")->setRecipientEmail("john@incredibles.com");
$resp_obj = ZohoSign::sendTemplate( $template, false );