Class: Fadada::Contract

Inherits:
Object
  • Object
show all
Defined in:
lib/fadada/contract.rb

Class Method Summary collapse

Class Method Details

.auto_sign(params = {}) ⇒ Object

自动签署合同 自动签接口不需要用户亲自操作,当接入平台调用此接口时,就会在指定的电子合同上签上指定用户的电子章, 省略了用户交互的步骤。因此如果需要使用此接口的能力, 需要接入平台联系法大大商务签署补充协议。

默认情况下只需要传入如下参数

transaction_id: '',
contract_id: '',
doc_title: ''



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/fadada/contract.rb', line 47

def self.auto_sign(params = {})
  _options = {
    customer_id: Fadada::config.customer_id, # 接入平台客户编号
    client_role: '1', # 客户角色 1-接入平台
    position_type: '0', # 定位类型 0-关键字(默认)
    sign_keyword: Fadada::config.customer_name, # 定位关键字,默认按照接入平台方的名称定位
    keyword_strategy: '2', # 关键字签章策略 2:最后一个关键字签章;
  }
  _basic = %i(customer_id)
  _md5 = %i(transaction_id)
  _normal = %i(contract_id signature_id client_role doc_title position_type sign_keyword keyword_strategy signature_positions notify_url)
  options = _options.merge(params.slice(*(_basic + _md5 + _normal)))
  digest_params = { _params: options.slice(*_basic), _md5_params: options.slice(*_md5) }
  Fadada::HttpClient.request(:post, 'extsign_auto.api', options, digest_params)
end

.batch_sign(params = {}) ⇒ Object

批量手动签署合同 该接口为页面接口,接入方平台可以在合适的业务场景嵌入该接口链接,引导客户至法大大进行文档签署 (比如可以在接入方平台网站上放置一个按钮,该按钮触发跳转至法大大或将法大大签章页面嵌入接入方流程)。 用于一个用户一次签署多份合同,页面展示多份合同,用户进行一次签署操作,填写验证码,验证码通过后即完成全部合同的签署。



81
82
83
84
85
86
87
88
# File 'lib/fadada/contract.rb', line 81

def self.batch_sign(params = {})
  _basic = %i(customer_id outh_customer_id)
  _md5 = %i(batch_id)
  _normal = %i(sign_data signature_id batch_title mobile_sign_type return_url notify_url customer_mobile)
  options = params.slice(*(_basic + _md5 + _normal))
  digest_params = { _params: params.slice(*_basic), _md5_params: params.slice(*_md5) }
  Fadada::HttpClient.request(:get, 'gotoBatchSemiautoSignPage.api', options, digest_params)
end

.cancellation(contract_id) ⇒ Object

合同撤销(风险很高,慎用,除非你知道自己在干啥) 合同编号不允许重复!当合同已经上传或生成成功,已经占用了某合同编号, 此时发现该合同内容存在错误,需要重新上传或生成,又需要用之前的合同编号。 这种情况,就可以通过此接口,释放之前的合同编号,达到再次使用这个编号的目的。 之前的合同如果已经签署,建议接入方在新的合同中增加条款,说明上一份合同无效; 如果没有签署,则不 需要其他操作。



111
112
113
114
# File 'lib/fadada/contract.rb', line 111

def self.cancellation(contract_id)
  options = { contract_id: contract_id }
  Fadada::HttpClient.request(:post, 'cancellation_of_contract.api', options)
end

.download(contract_id) ⇒ Object

合同下载 通过合同编号下载文档(PDF 格式),可通过 Content-Length 取文件大小。 正常时直接返回 PDF 文档(MIME:application/pdf),异常时返回 JSON 报文



100
101
102
103
# File 'lib/fadada/contract.rb', line 100

def self.download(contract_id)
  options = { contract_id: contract_id }
  Fadada::HttpClient.request(:get, 'downLoadContract.api', options)
end

.filing(contract_id) ⇒ Object

合同归档 接入平台更新合同签署状态为-签署完成,法大大将把合同所有相关操作记录进行归档存证。 归档后将不能再对文档再进行签署操作。



119
120
121
122
# File 'lib/fadada/contract.rb', line 119

def self.filing(contract_id)
  options = { contract_id: contract_id }
  Fadada::HttpClient.request(:post, 'contractFiling.api', options)
end

.generate(params = {}) ⇒ Object

模板填充 将需填充的内容通过模板填充接口传入,即可生成合同供签署操作,提高效率, 并可防止接入方自己生成的合同出现一些不兼容或文档签署异常等情况。



27
28
29
30
31
32
33
34
# File 'lib/fadada/contract.rb', line 27

def self.generate(params = {})
  _basic = %i(template_id contract_id)
  _extend = %i(parameter_map)
  _normal = %i(doc_title font_size font_type dynamic_tables)
  options = params.slice(*(_basic + _extend + _normal))
  digest_params = { _params: params.slice(*_basic), _extend_params: params.slice(*_extend) }
  Fadada::HttpClient.request(:post, 'generate_contract.api', options, digest_params)
end

.show(contract_id) ⇒ Object

合同查看 页面接口,返回签署页面,根据浏览器 UA 信息返回 pc 或 H5 页面.



92
93
94
95
# File 'lib/fadada/contract.rb', line 92

def self.show(contract_id)
  options = { contract_id: contract_id }
  Fadada::HttpClient.request(:get, 'viewContract.api', options)
end

.sign(params = {}) ⇒ Object

手动签署合同 该接口为页面接口,接入方平台可以在合适的业务场景嵌入该接口链接,引导客户至法大大进行文档签署 (比如可以在接入方平台网站上放置一个按钮,该按钮触发跳转至法大大或将法大大签章页面嵌入接入方流程)。 法大大根据浏览器 UA 信息,自动加载签 章界面对应的 PC web 版本或移动 HTML5 版本。 用户在法大大的签署页面中进行签署操作。



68
69
70
71
72
73
74
75
# File 'lib/fadada/contract.rb', line 68

def self.sign(params = {})
  _basic = %i(customer_id)
  _md5 = %i(transaction_id)
  _normal = %i(contract_id signature_id doc_title sign_keyword keyword_strategy return_url notify_url customer_mobile customer_name customer_ident_no)
  options = params.slice(*(_basic + _md5 + _normal))
  digest_params = { _params: params.slice(*_basic), _md5_params: params.slice(*_md5) }
  Fadada::HttpClient.request(:get, 'extsign.api', options, digest_params)
end

.upload_doc(params = {}) ⇒ Object

上传合同 接入平台生成 PDF 文档后通过此接口将文档传输到法大大,供签署时使用。 非 PDF 文档请使用合同模板功能(参考合同模板传输接口和合同生成接口) 该接口只支持PDF文件



8
9
10
11
12
# File 'lib/fadada/contract.rb', line 8

def self.upload_doc(params = {})
  options = params.slice(:contract_id, :doc_title, :doc_url, :file).merge(doc_type: '.pdf')
  digest_params = { _params: params.slice(:contract_id) }
  Fadada::HttpClient.request(:post, 'uploaddocs.api', options, digest_params)
end

.upload_template(params = {}) ⇒ Object

上传合同模板 此接口与模板填充接口配合使用,接入方预先将制作好的 PDF 模板通过此接口上传到法大大, 后续如需要签署合同时只需要将需填充的内容通过合同生成接口传入,即可生成合同供签署操作,提高效率, 并可防止接入方自己生成的合同出现一些不兼容或文档签署异常等情况。



18
19
20
21
22
# File 'lib/fadada/contract.rb', line 18

def self.upload_template(params = {})
  options = params.slice(:template_id, :doc_url, :file)
  digest_params = { _params: params.slice(:template_id) }
  Fadada::HttpClient.request(:post, 'uploadtemplate.api', options, digest_params)
end