Khởi tạo phiên ký
Bắt đầu quá trình ký số cho một bên ký trên hợp đồng.
POST /api/signing/initiate
Content-Type: application/json
Body:
{
"contractId": "ctr_abc123",
"signerEmail": "nguyen@example.com",
"signingMethod": "usb_token"
}
signingMethod | Mô tả |
|---|
usb_token | Ký bằng USB Token vật lý |
cloud_hsm | Ký bằng chứng thư Cloud HSM |
otp_sms | Ký xác nhận bằng OTP SMS |
image_signature | Ký bằng ảnh chữ ký |
Response:
{
"statusCode": 200,
"data": {
"sessionId": "sess_xyz789",
"contractHash": "sha256:abc123def456...",
"expiresAt": "2025-01-15T10:00:00Z",
"signingUrl": "https://sign.econtractid.vn/s/sess_xyz789"
}
}
signingUrl là URL cho phép người ký mở trực tiếp màn hình ký mà không cần đăng nhập lại (single-use, hiệu lực 30 phút).
Gửi OTP xác nhận ký
Dùng cho phương thức otp_sms hoặc cloud_hsm.
POST /api/signing/:sessionId/send-otp
Hệ thống gửi OTP 6 chữ số về số điện thoại đã đăng ký. OTP hiệu lực 5 phút.
Response:
{
"statusCode": 200,
"message": "OTP đã được gửi tới số ***567",
"data": {
"otpExpiredAt": "2025-01-15T09:05:00Z"
}
}
Xác nhận ký với OTP
POST /api/signing/:sessionId/confirm
Content-Type: application/json
{
"otp": "123456"
}
Response thành công:
{
"statusCode": 200,
"message": "Ký thành công",
"data": {
"signatureId": "sig_111aaa",
"signedAt": "2025-01-15T09:04:30Z",
"certificateInfo": {
"subject": "CN=Nguyễn Văn A, O=Công ty ABC, C=VN",
"issuer": "CN=Viettel-CA G2, O=Viettel, C=VN",
"validFrom": "2024-01-01",
"validTo": "2026-01-01"
},
"contractStatus": "signing"
}
}
Xác nhận ký USB Token (Server-side)
Dành cho tích hợp ký server-side với USB Token thông qua econtractid Desktop Agent.
POST /api/signing/:sessionId/sign-with-token
Content-Type: application/json
{
"signedHash": "base64_encoded_signature_bytes",
"certificateChain": ["base64_cert_1", "base64_cert_2"],
"timestampToken": "base64_tsa_token"
}
Từ chối ký
POST /api/signing/:sessionId/reject
Content-Type: application/json
{
"reason": "Nội dung hợp đồng cần sửa đổi điều khoản 5.2"
}
Response:
{
"statusCode": 200,
"message": "Đã từ chối ký",
"data": {
"contractId": "ctr_abc123",
"contractStatus": "rejected"
}
}
Kiểm tra trạng thái chữ ký
Kiểm tra tính hợp lệ của chữ ký số trên một hợp đồng đã ký.
GET /api/signing/verify/:contractId
Response:
{
"statusCode": 200,
"data": {
"isValid": true,
"signatures": [
{
"signerName": "Nguyễn Văn A",
"signedAt": "2025-01-16T10:30:00Z",
"isValid": true,
"integrityCheck": "passed",
"certificateStatus": "valid",
"timestampVerified": true
}
]
}
}