Hợp đồng

Bao gồm danh sách các hàm

1. Thêm hợp đồng

Phương thức POST

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/add?APIKey={apikey}&AccessCode={accesscode}

Json đầu vào


{
"AdUserId": "staff",
"AdDepartmentId": "xxx",
"AdCompanyId": "yyy",
"ContractNo": "1234",
"EffectedDate": "10/10/2021",
"ExpiredDate": "10/10/2021",
"SignDate": "10/10/2021",
"ContractTypeId": "hong-dong-dich-vu",
"ContractTemplateId": "id-mau-hop-dong",
"UseTemplate":1,
"ContractId": "123455", //Để trống tự sinh
"PartnerId": "id-doi-tac",
"merge": 1,
"UsingApiUrl": 0,
"autosign": 1,
"SignTemplateId":"default-sign-template",
"WorkflowDefId":"11b3fbb8-8210-4baa-abbc-42593e631d4a",
"SignerId":"",
"SignerSignatureId":"",
"StampSignatureBase64":"",
"StampWidth":0,
"StampHeight":0,
"PartnerSignType":"token",
"CallBackUrl":"",
"AllowRecall":1,
"DisabledDrawSignature":0,
"SendEmailFromAddress":"",
"ExpiredDays":1,
"DisablePartnerDrawSignature":0,
"NotifyEmails":
[
{
"email":"demo1@gmail.com",
"fullname":"Nguyễn Văn A",
"mobile":"090323xxxx",
"Role":"office",
"AllowRecallLink":1,
"Created":1,
"Recall":1,
"Reject":1,
"PartnerSign":1,
"OfficeSign":1,
"OtherSign":0,
"Expired":0,
"Finished":0,
"Workflow":1
},
{
"email":"demo2@gmail.com",
"fullname":"Lê Thị B",
"mobile":"090323xxxx",
"Role":"partner",
"AllowRecallLink":0,
"Created":0,
"Recall":0,
"Reject":0,
"PartnerSign":0,
"OfficeSign":1,
"OtherSign":0,
"Expired":0,
"Finished":0,
"Workflow":0
}
],
"QRCode": {
"QRCodeText": "",
"Page": -1,
"Width": 50,
"Height": 50,
"Position": 4,
"Margin": 10
},
"PartnerEmail":"", //truyền giá trị nếu SignTemplateItems = null
"PartnerMobile":"", //truyền giá trị nếu SignTemplateItems = null
"PartnerName":"", //truyền giá trị nếu SignTemplateItems = null
"PartnerIdentity":"", //truyền giá trị nếu SignTemplateItems = null
"PartnerSSearchTerm":"", //truyền giá trị nếu SignTemplateItems = null
"PartnerSPosition":"", //truyền giá trị nếu SignTemplateItems = null
"SignTemplateItems"://Mảng tham gia ký cần lấy từ mẫu ký nếu truyền
[
{
"SignTemplateItemId":"default-sign-template_partner",
"FullName":"ĐỐI TÁC 1",
"Email":"",
"Mobile":"",
"Role":"partner",
"Scope":"outside"
"SPosition":0,
"SSearchTerm":"",
"SignX":0,
"SignY":0,
"SignPage":0,
"Items":
[
{
"email":"demo1@gmail.com",
"fullname":"Nguyễn Văn A",
"mobile":"090323xxxx",
"Workflow":1
},
{
"email":"demo2@gmail.com",
"fullname":"Lê Thị B",
"mobile":"090323xxxx",
"Workflow":1
}
]
}
],
"ContractAttachFiles":
[
{
"AttachFileName":"FileName",
"AttachFileType":"pdf",
"ContentBase64":"",
"Password":"",
"AllowSignAttachFile":1,
"Main":1
"SignInfos":[//mảng chân ký
{
"AttachFileSignType":"auto", //auto: Ký từ khóa; position: Ký vị trí
"AttachFileSignKeyword":"ĐẠI DIỆN BÊN B", //Từ khóa ký nếu ký auto
"AttachFileSignPosition":-3, //Vị trí lùi xuống dưới từ khóa ký
"AttachFileSignX":0, //Tọa độ X ký nếu kiểu ký là vị trí position
"AttachFileSignY":0, //Tọa độ Y ký nếu kiểu ký là vị trí position
"AttachFileSignPage":0, //Trang ký nếu kiểu ký là vị trí position
"AttachFileSignRole":"partner", //Đối tương ký
"AttachFileRoleAllowSign":1 //0: Không ký; 1: Có cho ký
},
{
"AttachFileSignType":"auto", //auto: Ký từ khóa; position: Ký vị trí
"AttachFileSignKeyword":"ĐẠI DIỆN BÊN A", //Từ khóa ký nếu ký auto
"AttachFileSignPosition":-3, //Vị trí lùi xuống dưới từ khóa ký
"AttachFileSignX":0, //Tọa độ X ký nếu kiểu ký là vị trí position
"AttachFileSignY":0, //Tọa độ Y ký nếu kiểu ký là vị trí position
"AttachFileSignPage":0, //Trang ký nếu kiểu ký là vị trí position
"AttachFileSignRole":"make", //Đối tương ký
"AttachFileRoleAllowSign":1 //0: Không ký; 1: Có cho ký
}
]
}
],
"Fields":
[
{
"FieldName":"CONTRACT-NO",
"FieldValue":"1234"
},
{
"FieldName":"PARTNER-ADDRESS",
"FieldValue":"Địa chỉ đối tác"
}
]
}

Giải thích các tham số mảng đầu vào. Dấu (*) bắt buộc có

AdUserId: (*) UserId hoặc email của người tạo hợp đồng => Lấy từ danh sách hàm User

AdDepartmentId: (*) Id hoặc mã phòng ban => Lấy từ danh sách hàm Department/list

AdCompanyId: (*) Id hoặc mã công ty => Lấy từ danh sách hàm Company/list

EffectedDate: Ngày hiệu lực hợp đồng nếu có

ExpiredDate: Ngày hết hạn hợp đồng nếu có

SignDate: Ngày dự kiến ký hợp đồng nếu có

ContractTypeId: (*) Loại hợp đồng => Lấy từ danh sách loại hợp đồng

ContractTemplateId: Mẫu hợp đồng => Lấy từ danh sách mẫu hợp đồng

UseTemplate: Tạo hợp đồng từ mẫu. Giá trị 1 nếu tạo lấy file từ mẫu. 0: Không lấy file chỉ lấy thiết lập

ContractId: (*) Id của hợp đồng duy nhất

PartnerId: Id đối tác ký hợp đồng

merge: 1 merge các file pdf. 0Không merge

UsingApiUrl: 1 Để lấy Url ký sử dụng cho các ứng dụng tích hợp

autosign: 1 tự động ký hợp đồng và chuyển đối tác. 0không tự động

SignTemplateId: (*) Id của mẫu người ký => Lấy từ danh sách mẫu người ký

WorkflowDefId: (*) Id của quy trình ký hợp đồng => Lấy từ danh sách quy trình

SignerId: Id của người ký chính hợp đồng => Lấy từ danh sách người ký

SignerSignatureId: Id của chữ ký của ngườu ký hợp đồng => Lấy trong hàm lấy thông tin chi tiết người ký

StampSignatureBase64: Mẫu dấu hoặc chữ ký nháy ký vào tất các các trang ở giữa phía dưới

StampWidth: Chiều rộng con dấu. Giá trị 0 tự động scale

StampHeight: Chiều cao con dấu. Giá trị 0 tự động scale

PartnerSignType: Kiểu ký của đối tác. token: Ký bằng token; ekyc: Ký bằng cấp chữ ký số 1 lần; esign: Ký bằng ekyc + cks24h; image: Chỉ ký bằng chữ ký hình ảnh

CallBackUrl: Địa chỉ CallBackUrl khi hợp đồng ký, hợp đồng bị từ chối

AllowRecall: 1 cho phép Recall lại hợp đồng khi đối tác chưa ký từ email notify

DisabledDrawSignature: 1 tắt chế độ ký bằng vẽ chữ ký. Chỉ cho upload ảnh chữ ký

SendEmailFromAddress: Gửi email thông báo notify từ địa chỉ email này. Chỉ có tác dụng khi thiết lập SMTP

ExpiredDays: Số ngày hết hạn ký hợp đồng cho đối tác

DisablePartnerDrawSignature: 1 tắt chế độ vẽ chữ ký của đối tác

NotifyEmails: Danh sách địa chỉ email nhận notify trong đó

  • Email: Địa chỉ email nhận thông báo
  • Mobile: Số điện thoại nhận thông báo
  • FullName: Họ tên người nhận
  • AllowRecallLink: Giá trị 1 nếu trong email nhận khi tạo hơp đồng có link để recall
  • Created: Giá trị 1 nếu muốn nhận thông báo khi hợp đồng khởi tạo
  • Recall: Giá trị 1 nếu muốn nhận thông báo khi hợp đồng được recall
  • Reject: Giá trị 1 nếu muốn nhận thông báo khi đối tác từ chối ký hợp đồng
  • PartnerSign: Giá trị 1 nếu muốn nhận thông báo khi đối tác ký hợp đồng
  • OfficeSign: Giá trị 1 nếu muốn nhận thông báo khi đơn vị người ký chính ký hợp đồng
  • OtherSign: Giá trị 1 nếu muốn nhận thông báo khi người tham gia trong đơn vị không phải người ký chính ký phê duyệt
  • Expired: Giá trị 1 nếu muốn nhận thông báo khi hết hạn ký
  • Finished: Giá trị 1 nếu muốn nhận thông báo khi hợp đồng ký kết
  • Workflow: Giá trị 1 nếu muốn nhận thông báo khi chuyển quy trình

SignTemplateItems: Mảng thông tin đối tác ký chú ý lấy từ hàm "Lấy chi tiết mẫu tham gia ký" và chỉ thay đổi thông tin FullName, Emailmobile còn các tham số SignTemplateItemId Role Scope SSearchTerm SPositioncần giữ nguyên. Nếu không truyền mảng này thì trong trường hợp ký theo quy trình có đối tác (Partner) cần truyền các biến PartnerEmail, PartnerName

ContractAttachFiles:Mảng file hợp đồng trong đó
AttachFileName tên file ContentBase64 nội dung file Password mật khẩu file PDF nếu là file PDF và có mật khẩu Main 1 file hợp đồng 0 file gắn gèm AttachFileType có giá trị pdf (nếu nội dung file là pdf) hoặc doc (nếu nội dung file là word)

Fields:Mảng danh sách các trường hợp đồng để thay thế trường {{FIELD}} trong nội dung hợp đồng. Danh sách trường này lấy ở chức năng trường hợp đồng

QRCode: Thông tin QRCode cần đưa vào trong tài liệu

QRCodeText: Thông tin QRCODE (text)

Page: Trang sẽ đưa QRCODE vào: -1 tất cả các trang

Width: Độ rộng của QRCODE

Height: Độ rộng của QRCODE

Position: 1 hoặc 2 hoặc 3 hoặc 4. Vị trí đưa QRCODE vào. 1: Góc trên bên trái; 2: Góc trên bên phải; 3: Góc dưới bên phải; 4: Góc dưới bên trái

Margin: Độ rộng cách lề


Kết quả trả về


{
"Code": 0,
"Found": true,
"Message": "Added to queue ok. Using /contract/checkstatus?Id=xxxxx method for check status. Using /contract/getsignurl?id=xxx for get SignUrl ",
"Id": "827f6eaa-8dc8-4657-bd0f-e32cae2df81f",
"SignUrl": ""
}

Nếu thành công trả về code = 0 và có id của hợp đồng tạo ra

Giải thích CallBackUrl

Dùng để báo khi có sự kiện ký hợp đồng

?action={action}&role={role}&email={emai}&id={id}

action = sign => Ký hợp đồng

action = reject => Từ chối ký hợp đồng

role = make => Đơn vị ký chính partner => Đối tác ký

email => Email người ký hợp đồng

id => Id của hợp đồng ký

2. Kiểm tra trạng thái

Phương thức GET

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/checkstatus?APIKey={apikey}&AccessCode={accesscode}&id={id}

Kết quả trả về


{
"Code": 0,
"Found": true,
"Message": "Hợp đồng đang chờ tạo",
"Id": "35df2854-6cf0-4dbc-b0a3-8aa6a1c42bce",
"Status": 2,
"RetKeyId": "xx-xx-xxx",//trả về id của contractid truyền vào hoặc id tự sinh
}

Status: 0 => Lỗi khi tạo hợp đồng

Status: 1 => Hợp đồng tạo thành công

Status: 2 => Đang nằm trong hàng đợi chờ tạo hợp đồng

3. Dừng ký hợp đồng

Phương thức POST

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/pending?APIKey={apikey}&AccessCode={accesscode}&id={id}

Kết quả trả về


{
"Code": 0,
"Found": true,
"Message": "ok"
}

Status: 0 => Dừng thành công

Status: 1 => Không dừng được nguyên nhân xem biến Message

4. Tiếp tục ký hợp đồng

Phương thức POST

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/running?APIKey={apikey}&AccessCode={accesscode}&id={id}

Kết quả trả về


{
"Code": 0,
"Found": true,
"Message": "ok"
}

Status: 0 => Tiếp tục cho phép chạy quy trình ký hợp đồng thành công

Status: 1 => Không chạy tiếp được nguyên nhân xem biến Message

5. Lấy thông tin hợp đồng

Phương thức GET

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/info?APIKey={apikey}&AccessCode={accesscode}&id={id}

id: Id của hợp đồng cần lấy thông tin
Kết quả trả về


{
"Code": 0,
"Found": true,
"Message": "Found",
"ViewUrl":"https://...." //Địa chỉ xem hợp đồng trên web
"Item": {
"AttachFiles":
[
{
"AttachFileId":"dbb4a96d-30f0-46be-bc5b-4391ce86d010",
"AttachFileName":"CONTRACT.PDF",
"AttachContentBase64":"",
"Main":"1"
},
{
"AttachFileId":"4391ce86d010-dbb4a96d-30f0-46be-bc5b",
"AttachFileName":"PHIEU-TIEP-NHAN.PDF",
"AttachContentBase64":"",
"Main":"0"
}
],
"ContractNo": "00000001",
"CreatedDate": "17/07/2021",
"DocumentId": "dbb4a96d-30f0-46be-bc5b-4391ce86d010",
"EffectedDate": "17/07/2021",
"ExpiredDate": "31/12/9999",
"Note": "",
"PartnerSigned": 1,
"Signed": 1,
"Subject": "Contract 17/07/2021 21:30",
"TotalDoc": 1,
}
}

DocumentId: Id của hợp đồng

AttachFiles: Mảng chứa nội dung file hợp đồng và tài liệu liên quan. Trường Main=1 là hợp đồng; 0: Tài liệu liên quan kèm theo

LicenceContentBase64: Bằng chứng ký hợp đồng Base64

ContractNo: Số hợp đồng

CreatedDate: Ngày tạo

CreatedTime: Thời gian tạo

EffectedDate: Ngày hiệu lực

ExpiredDate: Ngày hết hạn

Note: Ghi chú

PartnerSigned: 1: Đối tác đã ký; 0: Chưa ký

Signed: 1: Đơn vị đã ký; 0: Chưa ký

Subject: Tiêu đề

TotalDoc: Số file gắn kèm

6. Lấy bằng chứng ký hợp đồng

Phương thức GET

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/proof?APIKey={apikey}&AccessCode={accesscode}&DocumentId={id}

DocumentId: Id của hợp đồng cần lấy thông tin
Kết quả trả về


{
"Code": 0,
"Found": true,
"Message": "Found",
"ContentBase64": ""
}

ContentBase64: Bằng chứng ký hợp đồng Base64

7. Cập nhật trường dữ liệu (fields) hợp đồng

Phương thức POST

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/update/fields?APIKey={apikey}&AccessCode={accesscode}

{
"Key": "PO-NUMBER",// Vi dụ: Tên trường dữ liệu đã lưu trước đó
"KeyValue": "PO-123",// Giá trị trường dữ liệu
"Fields":
[
{
"FieldName":"FIELD-1",
"FieldValue":"CONTRACT.PDF",
},
{
"FieldName":"FIELD-2",
"FieldValue":"Giá trị field 2",
}
]
}

Kết quả trả về


{
"Code": 0,
"Found": true,
"Message": "Saved ok",
}

Key: Tên trường dữ liệu đã lưu trước hoặc id hoặc mã hợp đồng chứng từ hoặc mã check

KeyValue: Giá trị trường dữ liệu đã lưu trước

Fields mảng giá trị cần thêm và update vào

8. Lấy thông tin hợp đồng qua field

Phương thức GET

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/info/field?APIKey={apikey}&AccessCode={accesscode}&FieldName=PO&FieldValue=123


FieldName: Tên trường dữ liệu đã lưu trước đó

FieldValue: Giá trị trường dữ liệu đã lưu trước

Kết quả trả về

Kết quả trả về giống hàm info

9. Tạo link ký cho đối tác

Phương thức POST

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/partner/session/make?APIKey={apikey}&AccessCode={accesscode}&id=xxxx&ExpiredDays=3


Id: Id của chứng từ hợp đồng

ExpiredDays: Số ngày hết hạn tính từ lúc tạo

Kết quả trả về

{

"PartnerEmail": "demo@gmail.com",

"PartnerMobile": "090433xxxx",

"Password": "060713",

"SignUrl": "https://apps.econtract.cmcts.vn/portal/sign.aspx?sessionid=xxxxx",

"Code": 0,

"Found": true,

"Message": ""

}

10. Hủy link ký cho đối tác

Phương thức POST

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/partner/remove/link?APIKey={apikey}&AccessCode={accesscode}&id=xxxx


Id: Id của chứng từ hợp đồng

Kết quả trả về

{

"Code": 0,

"Found": true,

"Message": ""

}

13. Active toàn bộ link ký đối tác

Phương thức POST

Địa chỉ sử dụng

https://api.econtract.cmcts.vn/contract/partner/sign/link/active?APIKey={apikey}&AccessCode={accesscode}&id=xxxx


Id: Id hợp đồng

Kết quả trả về

{

"Code": 0,

"Found": true,

}