平台简介
新手指南
API协议
API文档
单点登录集成
小程序插件
公告
常见问题
开放平台使用操作手册
帮助中心 / 开放平台帮助文档 / 合同页面
合同页面
合同页面

合同页面

1 签署页面

请求地址:/v2/contract/pageurl

请求方法:POST

请求格式:application/json;charset=UTF-8

请求参数:

参数 类型 必须 描述
contractId String 合同ID,合同ID和业务ID不能同时为空
bizId String 业务ID,合同ID和业务ID不能同时为空
tenantName String 子公司名称,若使用业务ID获取签署页面,且合同是以子公司身份创建的,则需要传递该值,用于确定合同主体
user User 操作人
callbackPage String 回调页面

User(个人用户):

参数 类型 必须 描述
contact String 联系方式
contactType String 联系类型:MOBILE(手机号),
EMAIL(邮箱),EMPLOYEEID(员工ID),NUMBER(员工编号)

返回参数:

参数 类型 描述
code Integer 响应码
message String 响应消息
result Result 签署页面信息

Result(签署页面数据):

参数 类型 描述
pageUrl String 文件签署页面

响应码(全局响应码请查看文档末“全局响应码”):

响应码 描述
1110 NO VIEW PERMISSION,没有查看权限;
用户没有权限查看合同。

请求示例:

Http示例

POST /v2/contract/pageurl HTTP/1.1
Host: [host]
x-qys-open-timestamp: [替换为请求头生成的TimeStamp]
x-qys-open-signature: [替换为请求头生成的Signature]
x-qys-open-accesstoken: [替换为请求头生成的Token]
Content-Type: application/json
{
    "contractId": "2591540368898105360",
    "bizId": null,
    "user": {
        "contact": "10100000000",
        "contactType": "MOBILE"
    },
    "callbackPage": null
}
Java示例

// 初始化sdkClient
String serverUrl = "https://openapi.qiyuesuo.cn";
String accessKey = "替换为您申请的开放平台App Token";
String accessSecret = "替换为您申请的开放平台App Secret";
SdkClient sdkClient = new SdkClient(serverUrl, accessKey, accessSecret);
// 合同页面
ContractPageRequest request = new ContractPageRequest(2589382258757710050L,
        new User("10100000000", "MOBILE"), "");
String response = sdkClient.service(request);
SdkResponse<ContractPageResult> responseObj = JSONUtils.toQysResponse(response, ContractPageResult.class);
if(responseObj.getCode() == 0) {
  ContractPageResult result = responseObj.getResult();
  logger.info("合同页面地址为:{}", result.getPageUrl());
} else {
  logger.info("请求失败,错误码:{},错误信息:{}", responseObj.getCode(), responseObj.getMessage());
}
C#示例

// 初始化sdkClient
string serverUrl = "https://openapi.qiyuesuo.cn";
string accessKey = "替换为您申请的开放平台App Token";
string accessSecret = "替换为您申请的开放平台App Secret";
SDKClient client = new SDKClient(accessKey, accessSecret, serverUrl);
ContractPageRequest request = new ContractPageRequest();
request.ContractId = contractId;                        //内嵌页面签署合同ID
request.User = new User("10100000000", "MOBILE");       //内嵌页面签署人信息
string response = null;
try
{
  response = client.Service(request);
}
catch (Exception e)
{
  throw new Exception("生成签署链接请求服务器失败,失败原因:" + e.Message);
}
SdkResponse<PageUrlResult> sdkResponse = HttpJsonConvert.DeserializeResponse<PageUrlResult>(response);
if (!sdkResponse.Code.Equals(0))
{
  throw new Exception("生成签署链接失败,失败原因:" + sdkResponse.Message);
}
Console.WriteLine(“生成合同页面成功”);
PHP示例

// 初始化$sdkClient
class Util {
    const     url = "https://openapi.qiyuesuo.me";
    const     accessKey = "替换为您申请的开放平台App Token";
    const     accessSecret = "替换为您申请的开放平台App Secret";
}
$sdkClient = Util::getSDk();
$contractAuditRequest = new ContractAuditRequest();
$contractAuditRequest->setContractId('2590804900506210559');
$audutOperator = new User();
$audutOperator->setContact('10100000000');
$audutOperator->setContactType('MOBILE');
$contractAuditRequest->setEmployee($audutOperator);
$contractAuditRequest->setPass(true);
$contractAuditRequest->setComment('同意');
$result = $sdkClient->service($contractAuditRequest);
print_r($result);
return $result;
Python示例

# 初始化SdkClient
url = "https://openapi.qiyuesuo.cn"
accessToken = '替换为您申请的开放平台App Token'
accessSecret = '替换为您申请的开放平台App Secret'
sdkClient = SdkClient(url, accessToken, accessSecret)
# 组装合同页面请求
page_request = ContractPageRequest(draft_contractid)
sign_user = User()
sign_user.set_contact("10100000000")
sign_user.set_contactType("MOBILE")
page_request.set_user(sign_user)
response = sdkClient.request(page_request)
page_mapper = json.loads(response)
if page_mapper['code'] != 0:
    raise Exception('签署链接生成失败,失败原因:', page_mapper['message'])
page_result = page_mapper['result']
print('签署链接签署成功,链接:', page_result['pageUrl'])

2 浏览页面

请求地址:/v2/contract/viewurl

请求方法:GET

请求参数:

参数 类型 必须 描述
contractId String 合同ID,合同ID和业务ID不能同时为空
bizId String 业务ID,合同ID和业务ID不能同时为空
tenantName String 子公司名称,若使用业务ID获取浏览页面,且合同是以子公司身份创建的,则需要传递该值,用于确定合同主体

返回参数:

参数 类型 描述
code Integer 响应码
message String 响应消息
result Result 签署页面信息

Result(浏览页面数据):

参数 类型 描述
pageUrl String 文件签署页面

响应码(全局响应码请查看文档末“全局响应码”):

响应码 描述
1401 DOCUMENT REQUIRED,合同不包含任何文件不允许查看

请求示例:

Http示例

GET /v2/contract/viewurl?contractId=2604642423930777609 HTTP/1.1
Host: [host]
x-qys-open-timestamp: [替换为请求头生成的TimeStamp]
x-qys-open-signature: [替换为请求头生成的Signature]
x-qys-open-accesstoken: [替换为请求头生成的Token]
Java示例

// 初始化sdkClient
String serverUrl = "https://openapi.qiyuesuo.cn";
String accessKey = "替换为您申请的开放平台App Token";
String accessSecret = "替换为您申请的开放平台App Secret";
SdkClient sdkClient = new SdkClient(serverUrl, accessKey, accessSecret);
ContractViewPageRequest request=new ContractViewPageRequest(2604642423930777609L);
String response = sdkClient.service(request);
SdkResponse<ContractPageResult> responseObj = JSONUtils.toQysResponse(response, ContractPageResult.class);
if(responseObj.getCode() == 0) {
    ContractPageResult result = responseObj.getResult();
    logger.info("合同页面地址为:{}", result.getPageUrl());
} else {
    logger.info("请求失败,错误码:{},错误信息:{}", responseObj.getCode(), responseObj.getMessage());
}
C#示例

// 初始化sdkClient
string serverUrl = "https://openapi.qiyuesuo.cn";
string accessKey = "替换为您申请的开放平台App Token";
string accessSecret = "替换为您申请的开放平台App Secret";
SDKClient client = new SDKClient(accessKey, accessSecret, serverUrl);
ContractViewPageRequest request = new ContractViewPageRequest();
request.ContractId = "2604642423930777609";
string response = null;
try
{
    response = client.Service(request);
}
catch (Exception e)
{
    throw new Exception(e.Message);
}
SdkResponse<PageUrlResult> responseObject = HttpJsonConvert.DeserializeResponse<PageUrlResult>(response);
Console.WriteLine(HttpJsonConvert.SerializeObject(responseObject));
PHP示例

// 初始化$sdkClient
class Util {
    const     url = "https://openapi.qiyuesuo.cn";
    const     accessKey = "替换为您申请的开放平台App Token";
    const     accessSecret = "替换为您申请的开放平台App Secret";
}
$sdkClient = Util::getSDk();
$contractViewPageRequest = new ContractViewPageRequest();
$contractViewPageRequest->setContractId('2605319579798344136');
$contractViewPageRequest->setBizId('12345678');
$result = $sdkClient->service($contractViewPageRequest);
print_r($result);
Python示例

# 初始化SdkClient
url = "https://openapi.qiyuesuo.cn"
accessToken = '替换为您申请的开放平台App Token'
accessSecret = '替换为您申请的开放平台App Secret'
sdkClient = SdkClient(url, accessToken, accessSecret)
view_page_request = ContractViewPageRequest()
view_page_request.set_contractId('2604642423930777609')
view_page_response = sdkClient.request(view_page_request)
print('合同浏览 \n', str(view_page_response), '\n')

3.获取短链接

请求地址:/v2/contract/shorturl

请求方法:GET

请求参数:

参数 类型 必须 描述
contractId String 合同ID,合同ID和业务ID不能同时为空
bizId String 业务ID,合同ID和业务ID不能同时为空
tenantName String 子公司名称,若使用业务ID获取访问短链接,且合同是以子公司身份创建的,则需要传递该值,用于确定合同主体

返回参数:

参数 类型 描述
code Integer 响应码
message String 响应消息
result Result 短链接信息

Result(浏览页面数据):

参数 类型 描述
shorturl String 访问的短链接

响应码(全局响应码请查看文档末“全局响应码”):

响应码 描述
1101 INVALID CONTRACT STATUS,合同不能为草稿

请求示例:

Http示例

GET /v2/contract/shorturl?contractId=2628932548523143169 HTTP/1.1
Host: [host]
x-qys-open-timestamp: [替换为请求头生成的TimeStamp]
x-qys-open-signature: [替换为请求头生成的Signature]
x-qys-open-accesstoken: [替换为请求头生成的Token]
Java示例

// 初始化sdkClient
String serverUrl = "https://openapi.qiyuesuo.cn";
String accessKey = "替换为您申请的开放平台App Token";
String accessSecret = "替换为您申请的开放平台App Secret";
SdkClient sdkClient = new SdkClient(serverUrl, accessKey, accessSecret);
ContractShorturlRequest request=new ContractShorturlRequest(2628932548523143169L);
String response = sdkClient.service(request);
SdkResponse responseObj = JSONUtils.toQysResponse(response,     ContractShorturlResult.class);
if(responseObj.getCode() == 0) {
    ContractShorturlResult result = responseObj.getResult();
    logger.info("合同短链接为:{}", result.getShorturl());
} else {
    logger.info("请求失败,错误码:{},错误信息:{}", responseObj.getCode(),     responseObj.getMessage());
}