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. 0
Khô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. 0
khô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
, Email
và mobile
còn các tham số SignTemplateItemId
Role
Scope
SSearchTerm
SPosition
cầ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": ""
{
11. Lấy link ký 1 lần cho đối tác
Phương thức POST
Địa chỉ sử dụng
https://api.econtract.cmcts.vn/contract/partner/sign/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, "SignLinkUrls": [ { "Id": "xxxxx", "LinkUrl": "{root}/portal/onetimesign.aspx?sessionid={accesscode}-yyyy" } ], "Message": "Found 1 link(s)"
{
12. Active link ký đối tác theo session
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 session cần active
Kết quả trả về
"Code": 0, "Found": true,
{
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,
{