Hướng dẫn kết nối

Đường dẫn dịch vụ

Tên dịch vụĐường dẫn

FCTrading API

https://fc-tradeapi.ssi.com.vn

FCTrading Streaming

https://fc-tradehub.ssi.com.vn

Thông tin đăng nhập

Để đảm bảo bảo mật, người dùng được cấp một bộ key kết nối bao gồm:

  • ConsumerID: Định danh tài khoản

  • ConsumerSecrect: Key truy cập server

  • PrivateKey: Được sử dụng để tạo chữ ký số bằng thuật toán RS256

Xem chi tiết đăng ký dịch vụ và tạo key kết nối tại đây.

Mô hình kết nối

Mô hình kết nối

Yêu cầu access token

Để đảm bảo an toàn cho tài khoản của bạn, khi yêu cầu access token, ngoài ConsumerID và SecretKey, bạn sẽ cần cung cấp thêm mã xác thực của tài khoản. Mã xác thực sẽ phụ thuộc vào phương thức xác thực mà bạn đã đăng ký:

  • PIN: Nhập mã PIN đặt lệnh của bạn

  • SMS OTP: Sử dụng hàm GetOTP để lấy mã OTP. Mã OTP sẽ được gửi tới số điện thoại đã đăng ký của bạn.

  • Email OTP: Sử dụng hàm GetOTP để lấy mã OTP. Mã OTP sẽ được gửi tới email đã đăng ký của bạn.

  • Smart OTP: Nhập mã OTP trên ứng dụng SSI SmartOTP hoặc iBoard tùy thuộc bạn kích hoạt dịch vụ SmartOTP trên ứng dụng nào.

Để nâng cao bảo mật cho bạn, chúng tôi khuyến khích bạn chuyển sang dùng các phương thức xác thực SMS OTP và SmartOTP. Phương thức xác thực bằng PIN sẽ sớm dừng hỗ trợ.

Sử dụng access token

  • Đối với các hàm query dữ liệu, bạn chỉ cần truyền access token đã lấy được để hệ thống FastConnect xác thực và thực thi yêu cầu nếu hợp lệ.

  • Đối với các hàm trực tiếp làm thay đổi tiền/chứng khoán bao gồm đặt/hủy/sửa lệnh, chuyển khoản nội bộ, đăng ký quyền mua, chuyển khoản chứng khoán, nộp rút ký quỹ phái sinh, bạn sẽ cần thêm ký số bằng Private Key (được cung cấp khi bạn tạo key kết nối trên hệ thống iBoard). Xem chi tiết về chữ ký số tại đây.

Access token có hiệu lực trong vòng 8h. Bạn không thể truy cập các api với token hết hiệu lực. Vì vậy, nhớ yêu cầu lại access token trước khi hết hạn để hoạt động của hệ thống không ảnh hưởng.

Khi yêu cầu access token, bạn có thể chọn lưu hiệu lực của mã xác thực.

  • Nếu bạn chọn lưu hiệu lực, khi đặt/hủy/sửa lệnh hoặc làm các giao dịch liên quan tiền/chứng khoán, bạn sẽ không cần nhập mã xác thực.

  • Nếu bạn không chọn lưu hiệu lực, khi đặt/hủy/sửa lệnh hoặc làm các giao dịch liên quan tiền/chứng khoán, bạn sẽ cần nhập lại mã xác thực.

Chữ ký điện tử

Signature là một chuỗi ký tự được tạo ra từ một thuật toán cho trước, sử dụng để kiểm tra tính đúng đắn của dữ liệu trên đường truyền giữa 2 hệ thống. Một số thuật toán đang sử dụng là MD5, SHA256, RSA. Tham khảo thêm: Wikipedia

Trong tài liệu này sử dụng thuật toán RSA + SHA256 để tạo Signature. Dữ liệu đầu vào bao gồm Private Key và data, data là một json body chứa thông tin đặt/sửa/xóa.

Kết nối streaming

Để sử dụng nghe streaming bạn cần khởi tạo kết nối và đăng ký cập nhật từng loại dữ liệu

Khởi tạo kết nối

Initstream:
client.initStream({
    url: config.stream_url,
    consumer_id: config. ConsumerID,
    consumer_secret: config. ConsumerSecret,
    notify_id:   0

});

Lưu ý:

notify_id là số thứ tự của các message trả về qua stream. Khi khởi tạo kết nối, bạn cần xác định giá trị cho notify_id.

  • notify_id = 0: hệ thống sẽ trả về dữ liệu từ đầu ngày

  • notify_id = -1: hệ thống sẽ trả về dữ liệu từ lúc kết nối lại

  • notify_id = n: hệ thống sẽ trả về dữ liệu từ n. Trong đó, n bằng số thứ tự của message cuối cùng bạn nhận được trước khi đứt kết nối + 1.

Trong quá trình nhận message stream, bạn cần lưu số thứ tự này để phục vụ cho mục đích kết nối lại trong trường hợp đứt kết nối.

Hệ thống FastConnect sẽ thực hiện reset notify_id về 0 vào 0 giờ hàng ngày.

Đăng ký cập nhật

Cập nhật thông tin lệnh

//Bind a callback function to: event onNewOrder:
client.bind(client.events.onOrderUpdate, function (e,data) {
	    console.log(e + ": ");
	    console.log(JSON.stringify(data));
    
});

//Bind a callback function to event onOrderError::
client.bind(client.events.onOrderError, function (e, data) {
	   console.log(e + ": ");
	   console.log(JSON.stringify(data));

Cập nhật thông tin danh mục phái sinh

client.bind(client.events.onClientPortfolioEvent,function(e,data){
Process data...
console.log(e + ": ");
console.log(JSON.stringify(data));
});

Quy trình đặt lệnh

Last updated