Back to Main Site

Đồng bộ thời gian thực WooCommerce qua Webhooks và bảo mật HMAC

Last updated on Jul 10, 2026 12:40 AM

Tại sao cơ chế Polling là không đủ?

Phương thức đơn giản nhất để đồng bộ dữ liệu giữa hai hệ thống là Polling — thực hiện gọi kiểm tra dữ liệu mới sau mỗi 5 phút. Tuy nhiên phương pháp này tồn tại nhiều nhược điểm lớn:

  • Thời gian trễ (Delay): Khách hàng đặt mua đơn hàng và phải chờ đợi lên tới 5 phút trước khi hệ thống CRM của bạn ghi nhận thông tin.

  • Lãng phí tài nguyên: Hơn 95% số lượng yêu cầu gọi polling trả về kết quả “không có dữ liệu mới”.

  • Quá tải máy chủ: Việc gọi kiểm tra liên tục tạo ra tải trọng lớn cho cả máy chủ web store và máy chủ CRM.

  • Rủi ro mất mát dữ liệu: Nếu một chu kỳ poll gặp sự cố kết nối, dữ liệu sẽ bị gián đoạn cho đến chu kỳ tiếp theo.

Đối với hoạt động vận hành doanh nghiệp thời gian thực, bạn cần cơ chế **đồng bộ dựa trên sự kiện đẩy (push-based synchronization)** — dữ liệu được cập nhật ngay lập tức khi phát sinh sự kiện.

Webhooks: Giao nhận dữ liệu tức thì

WooSync tận dụng hệ thống webhook mặc định của WooCommerce. Khi một sự kiện phát sinh ngoài cửa hàng, WooCommerce sẽ tự động **đẩy** gói dữ liệu trực tiếp sang Perfex CRM của bạn:

  • order.created — Có đơn hàng mới được tạo

  • order.updated — Trạng thái đơn hàng thay đổi

  • product.created — Có sản phẩm mới được thêm

  • product.updated — Thông tin chi tiết sản phẩm thay đổi

  • customer.created — Có khách hàng mới đăng ký tài khoản

  • customer.updated — Hồ sơ khách hàng được cập nhật

Dữ liệu được cập nhật chỉ trong vài mili giây thay vì hàng phút. Hệ thống CRM của bạn luôn trong trạng thái cập nhật mới nhất.

Xác thực chữ ký mã hóa HMAC-SHA256

Bất kỳ ai cũng có thể gửi yêu cầu HTTP POST giả mạo đến đường dẫn nhận webhook của bạn. Làm thế nào WooSync xác minh được yêu cầu đó thực sự gửi từ WooCommerce của bạn?

Sử dụng chữ ký mã hóa HMAC-SHA256.

Mỗi gói dữ liệu webhook gửi đi đều đi kèm một tiêu đề HTTP X-WC-Webhook-Signature — chứa chuỗi hash mã hóa được tính toán từ nội dung payload sử dụng khóa bí mật (shared secret) dùng chung. WooSync sẽ tính toán lại chuỗi hash này từ nội dung nhận được và so sánh:

  • Khớp chữ ký: Yêu cầu hợp lệ → tiến hành xử lý đồng bộ.

  • Không khớp chữ ký: Yêu cầu giả mạo → từ chối ngay lập tức (trả về mã lỗi 401 Unauthorized).

Đây là phương thức bảo mật chuẩn công nghiệp được áp dụng bởi các nền tảng lớn như Stripe, GitHub. Đường dẫn webhook của bạn được bảo vệ an toàn bằng mật mã.

Hệ thống hàng đợi Queue đáng tin cậy

Dữ liệu webhook không ghi trực tiếp vào cơ sở dữ liệu ngay lập tức. WooSync đưa dữ liệu vào một **bảng hàng đợi (queue table)** woosync_webhook_queue hoạt động ổn định:

  • Chống ghi trùng lặp (Deduplication): Mỗi lần giao nhận dữ liệu có mã delivery_id độc nhất — đảm bảo một sự kiện không bao giờ bị xử lý trùng lặp 2 lần.

  • Tự động thử lại (Retry logic): Các lượt xử lý gặp sự cố do kết nối mạng tạm thời sẽ tự động được thử lại lên đến 3 lần.

  • Theo dõi trạng thái: pending (chờ xử lý) → processing (đang xử lý) → completed (hoàn thành) hoặc failed (thất bại).

  • Khóa tiến trình (Locked processing): Mốc thời gian locked_at giúp ngăn chặn việc hai tiến trình chạy song song cùng xử lý một bản ghi.

  • Ghi nhận lịch sử lỗi: Lưu trữ chi tiết thông tin lỗi phục vụ công tác rà soát lỗi của quản trị viên.

Giới hạn tần suất gọi: 120 Requests/Minute

WooSync tích hợp cơ chế **rate limiting theo địa chỉ IP** trên đường dẫn webhook:

  • Cho phép tối đa 120 requests mỗi phút cho mỗi IP.

  • Các yêu cầu vượt hạn mức sẽ bị trả về mã lỗi 429 Too Many Requests.

  • Dữ liệu giới hạn được quản lý trong bảng woosync_rate_limits.

  • Cơ chế này bảo vệ CRM của bạn khỏi nguy cơ bị nghẽn do lượng webhook gửi sang quá lớn (ví dụ khi cập nhật sản phẩm hàng loạt trên WooCommerce).

Danh sách ngoại lệ CSRF (CSRF Whitelist)

Perfex CRM mặc định trang bị tính năng bảo mật CSRF chặn các yêu cầu POST từ bên ngoài gửi đến. WooSync tự động **đưa đường dẫn webhook vào danh sách ngoại lệ** để WooCommerce truyền dữ liệu mượt mà mà không bị CSRF chặn lại — trong khi vẫn bảo vệ an toàn cho các đường dẫn khác của CRM.

Nhật ký đồng bộ trực quan

Phiên bản WooSync v1.2.0 bổ sung màn hình **Sync Logs Modal** trực quan giúp bạn dễ dàng theo dõi lỗi:

  • Nhấp chọn "View" tại bất kỳ dòng nhật ký nào để mở hộp thoại chi tiết.

  • Xem thông tin loại hành động (Action type), thông báo máy chủ (Server Message) và **toàn bộ nội dung JSON gốc (raw JSON payload)** gửi sang từ WooCommerce.

  • Giúp phát hiện nhanh các lỗi dữ liệu không tương thích mà không cần lục tìm tệp tin log của máy chủ.

Kiến trúc bảo mật toàn diện của WooSync

Lớp bảo vệChức năng chi tiết
HMAC-SHA256Xác thực tính chính danh của dữ liệu webhook gửi sang
Rate LimitingChống tấn công dồn dập làm nghẽn máy chủ (tối đa 120 yêu cầu/phút)
CSRF WhitelistCho phép WooCommerce đẩy dữ liệu qua POST an toàn
Queue DedupNgăn chặn việc xử lý trùng lặp một sự kiện nhiều lần
Retry LogicTự động thử lại khi gặp sự cố gián đoạn kết nối mạng
Mã hóa AESMã hóa bảo vệ các thông tin API Key lưu trong database

Cài đặt nhanh chóng trong 5 phút

An toàn. Tức thì. Ổn định.