Tài liệu tích hợp Ký số Server & Hợp đồng điện tử MATBAO-CA
Tài liệu chuẩn hóa cung cấp toàn bộ đặc tả tham số kỹ thuật cổng API phục vụ ký số tập trung (PDF, XML, Hash) và quản lý quy trình luồng ký Hợp đồng điện tử.
Môi trường Hệ thống (Base URL)
Hệ thống cung cấp hai môi trường hoạt động phục vụ quá trình phát triển tích hợp phần mềm cấu hình:
| Môi trường | Cấu hình URL kết nối | Thông tin Tài khoản Demo kiểm thử mặc định |
|---|---|---|
| Thông tin Demo (Sandbox) | https://demo-api-econtract-mbc.matbao.in |
TaxCode: 0302712571-999 Username API: demo@matbao.com Password API: demo@123! Link Giao diện Web: demo-econtract.matbao.in |
| Thông tin Production | https://api-econtract-mbc.matbao.in | Cấp phát chính thức cho doanh nghiệp khi ký kết triển khai. |
1. Lấy token xác thực (auth/token-matbaoca)
Tham số dữ liệu Request Body
| Tên trường | Ý nghĩa định nghĩa | Kiểu dữ liệu | Ràng buộc |
|---|---|---|---|
| taxcode | Mã số thuế của đơn vị đăng ký dịch vụ ký số | Chuỗi ký tự | Bắt buộc |
| username | Tài khoản kết nối hệ thống API | Chuỗi ký tự | Bắt buộc |
| password | Mật khẩu bảo mật kết nối tương ứng | Chuỗi ký tự | Bắt buộc |
{
// Request Body
"taxcode": "0302712571-999",
"username": "demo@matbao.com",
"password": "password_bi_mat"
}
// Response Body
{
"Success": true,
"Data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", // Chuỗi mã hóa Bearer Access Token dùng định danh
"ErrorCode": null,
"CustomData": {
"TokenExpired": "2026-12-31 23:59:59" // Thời điểm hết hạn token xác thực
}
}
2. Lấy thông tin chứng thư số CERT (signing-matbaoca/getcert)
Dữ liệu trả về (Data): Trả về cấu trúc đối tượng dữ liệu chứng thư số chuẩn hệ thống định dạng X509Certificate2.
3. Ký số file PDF định vị tọa độ (signing-matbaoca/signature-pdf)
Bảng đặc tả tham số Request đồ sộ
| Tên trường | Định nghĩa chi tiết dữ liệu mô tả | Kiểu dữ liệu | Gợi ý cấu hình ví dụ |
|---|---|---|---|
| PdfBase64 | Nội dung toàn bộ tệp tin PDF cần ký số mã hóa chuỗi Base64 | Chuỗi Base64 | Bắt buộc |
| RecImgBase64 | Hình ảnh nền khung hiển thị chữ ký số (Mộc công ty/Chứng nhận) | Chuỗi Base64 | Tùy chọn |
| RecWidth / RecHeight | Kích thước chiều rộng và chiều cao khung hiển thị chữ ký | Số nguyên (int) | Ví dụ: 150, 60 |
| ArisingImgBase64 | Hình ảnh chữ ký tay bổ sung lồng cùng khung ký số | Chuỗi Base64 | Tùy chọn |
| ArisingImgWidth / Height | Chiều rộng và chiều cao của hình ảnh ký tay lồng ghép kèm | Số nguyên (int) | Ví dụ: 80, 40 |
| ArisingPosition | Vị trí lồng ảnh tay tương đối: 0: Top | 1: Left | 2: Bottom | 3: Right | Số nguyên (int) | Mặc định: 2 |
| ArisingPositionAlign | Căn lề hình ảnh ký tay: 0: Left/Top | 1: Center/Middle | Số nguyên (int) | Mặc định: 1 |
| Page | Vị trí chỉ định trang tài liệu cần đóng dấu ký số (Bắt đầu từ trang 1) | Số nguyên (int) | Bắt buộc |
| X / Y | Tọa độ điểm Neo hiển thị trên trang giấy PDF định vị | Số thực | Bắt buộc |
| VerifiedByLabel | Tên nhãn hiển thị đơn vị xác thực chữ ký (Ví dụ: "Xác thực bởi") | Chuỗi ký tự | Tùy chọn |
| SignedByLabel | Tên nhãn hiển thị thực thể ký danh (Ví dụ: "Ký bởi:") | Chuỗi ký tự | Tùy chọn |
| SignedDateLabel | Tên nhãn hiển thị mốc thời gian ký (Ví dụ: "Ký lúc:") | Chuỗi ký tự | Tùy chọn |
| SignedDateFormat | Định dạng chuỗi thời gian hiển thị (Ví dụ: "dd/MM/yyyy HH:mm") | Chuỗi ký tự | Mặc định cấu hình |
| AlignmentVerifiedByLabel | Căn lề hiển thị nội dung nhãn xác thực: center | left | right | Chuỗi ký tự | Mặc định: center |
| PositionSignedByLabel | Thứ tự ưu tiên dòng hiển thị của nội dung xác thực (0, 1, 2) | Số nguyên (int) | Sắp xếp layout dòng |
{
"Success": true,
"Data": "JVBERi0xLjQKJ..." // Toàn bộ nội dung file PDF sau khi đóng chữ ký số thành công ở dạng chuỗi Base64
"ErrorCode": null,
"CustomData": ""
}
4. Ký số dữ liệu XML (signing-matbaoca/signature-xml)
Tham số đầu vào: XmlDataBase64 (Chuỗi nội dung tệp xml thô mã hóa), SignatureLocation (ID định danh phân vùng cần thực hiện chèn thẻ ký), và NodeToBeSigned (Đường dẫn XPath của thẻ xuất hiện khối chữ ký, ví dụ cấu trúc ký hóa đơn thương mại dùng: //DSCKS/NBan).
5. Ký dữ liệu chuỗi Hash (signing-matbaoca/signature-hash)
Request truyền tham số Data dạng chuỗi chứa dữ liệu cần băm ký, trả về Data là chuỗi kết quả đã ký xác thực số hoàn tất.
6. Hàm tạo hợp đồng từ template có sẵn - File HTML cũ (signing-matbaoca/create-doc)
Request Body truyền tham số gồm khóa định danh TemplateID và khối dữ liệu đối tượng JSON động Data chứa các cặp key-value biến đổi để map đổ dữ liệu vào biểu mẫu hợp đồng tương ứng.
7. Hàm tạo hợp đồng từ template thiết kế Web mới (signing-matbaoca/create-doc-v2)
Đặc tả trường tham số nâng cao
| Tên trường | Định nghĩa kiểu và vai trò logic nghiệp vụ điều khiển | Giá trị cấu hình quy định bắt buộc |
|---|---|---|
| TemplateID | Mã ID quản lý biểu mẫu tài liệu thiết lập sẵn | Chuỗi ký tự - Bắt buộc |
| Documents | Mảng danh sách mảng đối tượng chứa thông tin trường động map hợp đồng | Mảng dữ liệu (Array) |
| FirstSigningCustomer | Quy định phân định ai thực hiện luồng ký trước: 0: Phía Công ty ký trước | 1: Đối tác/Khách hàng ký trước | Số nguyên (int: 0 hoặc 1) |
| AllowSign | Cơ chế tự động ký duyệt của chủ quản: 0: Công ty ký thủ công | 1: Hệ thống tự động ký server khi đủ điều kiện | Số nguyên (int: 0 hoặc 1) |
| AutoApprove | Tự động phê duyệt hồ sơ đẩy luồng ký hành chính | Mặc định truyền: true |
| WorkflowId | Định danh luồng quy trình duyệt nội bộ nâng cao | Mặc định truyền: null |
| GetType | Định dạng trả về của tài liệu: 0: Không lấy PDF | 1: Lấy chuỗi base64 PDF trong response | 2: Chỉ lấy Link tải tệp PDF xem trực tuyến | Số nguyên (int: 0, 1, 2) |
| UrlCallback | Cấu hình đường dẫn Webhook tiếp nhận dữ liệu đẩy về khi trạng thái hợp đồng thay đổi | Chuỗi Url (bắt đầu http/https) |
8. Hàm tạo đồng loạt nhiều hợp đồng từ mẫu (signing-matbaoca/create-multi-doc)
URL: POST <BaseUrl>/signing-matbaoca/create-multi-doc
Cấu trúc request yêu cầu mảng thông tin tài khoản thụ hưởng nhận diện AccountsDocument chứa danh sách Email khách hàng tiếp nhận (Accounts/Email), kèm MaHopDong, TenHopDong riêng biệt của từng thành tố.
9. Hàm xem chi tiết thông tin hợp đồng (signing-matbaoca/view-doc)
URL: POST <BaseUrl>/signing-matbaoca/view-doc
Tham số truyền bao gồm mã DocumentID (UUID nhận về khi tạo thành công tài liệu), mã quản lý DocumentCode và trường phân loại Type (0: Không lấy dữ liệu Base64 file; 1: Lấy đầy đủ chuỗi ContentPDF chứa nội dung file phục vụ preview trực tiếp trên app).
10. Lưu hợp đồng kèm mẫu hình ảnh chữ ký tay (signing-matbaoca/signature-document)
| Tên trường tham số | Mô tả chi tiết logic kiểm thử OTP cấu hình | Kiểu dữ liệu quy định |
|---|---|---|
| OTPType | Hình thức gửi mã xác thực xác minh danh tính: 0: Không kiểm thử OTP | 1: Gửi qua EMAIL | 2: Gửi tin nhắn SMS | 3: Xác thực qua Zalo ZNS | Số nguyên (int: 0, 1, 2, 3) |
| DeviceOTP | Địa chỉ tiếp nhận tương ứng (Chuỗi chứa thông tin Email hoặc Số điện thoại nhận mã) | Chuỗi ký tự |
| CodeOTP | Chuỗi ký tự chứa mã số OTP do khách hàng nhập đối chiếu xác thực | Chuỗi ký tự |
| DocumentID | Mã định danh duy nhất của tệp tài liệu hợp đồng điện tử cần xử lý | Chuỗi ký tự (UUID) |
| SignatureCustomerImage64 | Nội dung hình ảnh chữ ký nét vẽ tay của khách hàng mã hóa Base64 | Chuỗi hình ảnh Base64 |
11. Hàm tải lên và lưu trữ hợp đồng có sẵn tệp PDF (signing-matbaoca/upload-doc)
URL: POST <BaseUrl>/signing-matbaoca/upload-doc
Tham số: DocumentId (Khóa định danh tài liệu) và trường ContentPDF chứa dữ liệu nội dung file PDF cấu trúc của hợp đồng.
12. Hàm cập nhật trạng thái tiến trình hợp đồng (signing-matbaoca/upload-status)
URL: POST <BaseUrl>/signing-matbaoca/upload-status
Tham số điều khiển gồm DocumentId và chuỗi quy định trạng thái Status đồng bộ bắt buộc nhận một trong các giá trị chuẩn sau: DRAFT (Nháp), PROCESSING (Đang thực hiện luồng ký), DONE (Hoàn thành), CANCEL (Hủy bỏ hồ sơ), REJECT (Khách từ chối ký), ERROR (Lỗi xử lý nghiệp vụ), hoặc EXPIRE (Hết hạn thời hiệu hiệu lực).
13. Đăng ký thông tin dịch vụ cấp phát chứng thư (signing/register)
Gửi dữ liệu hồ sơ pháp lý khách hàng để phục vụ quy trình thẩm định bao gồm thông tin: HoTen, ChucVu, Khoa (Phòng ban), CMND (Số thẻ căn cước), NgayCap, LoaiGiayTo, Email, DienThoai, GhiChu và mảng tệp đính kèm hình ảnh hồ sơ gốc Files chứa cụm đối tượng con gồm file_name và base64_file.
14. Hàm tra cứu danh sách quản lý hợp đồng (signing-matbaoca/view-list-docs)
Tham số lọc Request Body (Pagination & Filter)
| Tên trường tham số | Mô tả chi tiết nguyên tắc nghiệp vụ lọc dữ liệu | Kiểu dữ liệu quy định |
|---|---|---|
| SearchText | Từ khóa tìm kiếm nhanh hợp đồng dựa theo cấu trúc Tên văn bản | Chuỗi ký tự |
| PageSize / PageNumber | Số lượng bản ghi trên một trang hiển thị / Số trang hiện hành tra cứu | Số nguyên (int) |
| Status | Bộ lọc danh sách trạng thái (Hỗ trợ lọc nhiều mã cùng lúc cách nhau bằng dấu phẩy, ví dụ: "PROCESSING, DONE") | Chuỗi ký tự |
| DocumentCode | Mã định danh số hiệu hợp đồng cần tìm kiếm chính xác | Chuỗi ký tự |
| NumberOfDaysCreateDateFrom | Thời mốc lọc ngày khởi tạo từ ngày (Định dạng bắt buộc chuỗi: yyyy-MM-dd) | Chuỗi ngày |
| NumberOfDaysCreateDateTo | Thời mốc lọc ngày khởi tạo tới ngày (Định dạng bắt buộc chuỗi: yyyy-MM-dd). Lưu ý quan trọng: Khoảng cách lọc giữa From và To không được vượt quá 10 ngày và phải truyền đồng thời cả 2 trường. | Chuỗi ngày |
15. Hàm lấy danh sách các mẫu template hợp đồng (signing-matbaoca/view-list-templates)
URL: POST <BaseUrl>/signing-matbaoca/view-list-templates
Tham số Request gồm: SearchText (Tìm theo tên hoặc mã code mẫu), PageSize, và PageNumber. Trả về thông tin chi tiết định nghĩa cấu trúc mảng trường Columns cấu thành và khu vực phân vùng thiết lập chữ ký SignatureRegion của mẫu hợp đồng biểu mẫu.
16. Hàm thực hiện ký số trực tiếp lên hợp đồng tài liệu (signing-matbaoca/sign-document)
URL: POST <BaseUrl>/signing-matbaoca/sign-document
Request Payload truyền tham số định danh: DocumentId (Mã hợp đồng cần ký số) và trường dữ liệu tệp hình ảnh con dấu đại diện FileContentSignatureImage lưu dưới cấu trúc định dạng mã hóa chuỗi Base64 hoàn chỉnh.
17. Cấu hình cấu trúc JSON Payload Webhook Callback
Hệ thống hỗ trợ 2 loại sự kiện Webhook tự động kích hoạt đẩy dữ liệu trạng thái thời gian thực sang cổng đối tác: "Có người ký" (Kích hoạt ngay khi có một thực thể trong luồng ký hoàn tất) và sự kiện "Hoàn tất" (Kích hoạt khi toàn bộ các bên đã hoàn thành việc ký số).
{
"Success": true,
"CustomData": "200",
"Data": {
"DocumentStatus": "DONE", // Trạng thái tiến độ hồ sơ tổng quát: DONE (Hoàn thành) hoặc PROCESSING (Đang ký)
"DocumentId": "b1a2c3d4-e5f6-...", // Khóa định danh hợp đồng điện tử duy nhất
"ContentPDF": "https://api-econtract-mbc.matbao.in/storage/downloads/file.pdf", // Link tải file PDF hợp đồng trực tuyến
"SignatoryData": [ // Mảng chi tiết thông tin tiến độ của từng người ký trong luồng biểu mẫu
{
"Status": "DONE", // Trạng thái người ký: DONE (Đã ký), PROCESSING (Đang ký), DRAFT (Chờ người khác ký)
"FullName": "Nguyễn Văn A",
"Email": "nguyenvana@gmail.com",
"IsCurrentSigner": false // Chỉ định đây có phải là người đang giữ lượt ký hiện hành hay không
}
]
},
"ErrorCode": null
}